확인하는 동안 오류가 발생했습니다. HRESULT = '8000000A'


98

자동 빌드에서 devenv를 사용할 때 잠시이 오류가 발생했습니다. 나는 찾을 수있는 모든 웹 사이트를 살펴 보았고 일반적인 답변에는 새로 고침 종속성 (수동 배포를 위해 수정했지만 자동이 아닌 것으로 생각)과 프로젝트에서 소스 제어 코딩 제거가 언급되어 도움이되지 않았습니다.

빌드 할 때마다 오류가 발생하는 것은 아니지만 매번 다른 배포 프로젝트에서 무작위로 보입니다.

누구든지 정확히이 오류가 발생하는 이유와 수정 방법에 대한 조언이 있습니까?


마침내 더 우아한 솔루션 을 얻었 습니까? 그냥왔다 다시 트리거가 실패 할 때 빌드를 , 어쩌면 유용한 넣어 스크립트 ( elegant solution요지로), 이럴.
Kiquenet

답변:


53

이것은 Visual Studio 2010의 알려진 문제 (경쟁 조건)입니다. 이 연결 항목을 참조하십시오 .

우리도이 문제를 겪었고 Microsoft와이 문제에 대해 매우 불만족스러운 지원 전화를 받았습니다. 간단히 말하면 알려진 문제이며 해결되지 않을 것이며 Microsoft는 Visual Studio 설치 프로젝트 (.vdproj)에서 벗어나는 것이 좋습니다.

처음 실패 할 때 MSI 빌드를 두 번째로 트리거하여이 문제를 해결했습니다. 좋지는 않지만 대부분의 경우 작동합니다 (오류율이 ~ 10 %에서 ~ 1 %로 감소).


대단히 감사합니다. 나는 인터넷을 샅샅이 뒤져 정확히 왜 그런 일이 발생했는지 찾아 냈고, 모호하고 도움이되지 않는 수많은 Microsoft 답변을 보았습니다. 실패하면 빌드를 다시 트리거했지만 더 우아한 솔루션을 원했습니다. 다시 한 번 감사드립니다.
Chris C.

@ChrisC. stackoverflow.com/a/25054572/206730 답변에 더 많은 표가 있습니다. 그렇게 시도 했습니까?
Kiquenet

@ oɔɯǝɹ 당신은 당신이? 두 번째를 구축 MSI를 트리거 saing 높은 뜻 동일한 문제가 .. 무슨 explane 수
레온 Barkan

123

Microsoft Visual Studio Installer Projects 확장을 사용하여 VS200X 설치 프로젝트를 업그레이드 한 후 VS2013 또는 VS2015에서이 문제가 발생한 사용자를위한 업데이트입니다.

MS의 v1.0.0.0 레시피에 따라 마침내 작동했습니다.

Microsoft Visual Studio 설치 프로그램 프로젝트

안타깝게도이 릴리스에 대한 명령 줄 문제의 모든 사례를 해결할 수는 없었습니다. 아직 문제를 해결하기위한 적절한 방법을 조사하고 있기 때문입니다. 우리가 가진 것은 거의 모든 사람들에게 효과가있을 것이라고 생각하는 해결 방법입니다. 이 문제가 계속 발생하는 경우 다음 레지스트리 값의 DWORD 값을 0으로 변경해 볼 수 있습니다. HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\MSBuild\EnableOutOfProcBuild (VS2013)
또는
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild(VS2015)
이것이 존재하지 않으면 DWORD로 만들 수 있습니다.


23
Visual Studio 2013 업데이트는 레지스트리에서이 변수를 지 웁니다. 다시 추가해야합니다.
Derek W

4
참고로 Jenkins로 작업 할 때 Jenkins 슬레이브를 실행하는 사용자를 위해 레지스트리 키를 추가해야합니다.
Jirong Hu

3
기억하십시오. 레지스트리 하이브는 HKEY_CURRENT_USER이므로 사용자와 다른 계정 (예 : tfs 빌드 계정)에서 호출하는 경우 해당 계정으로 로그인하고 설정을 추가해야합니다.
Mike Cheel 2016-08-24

3
@DerekW 댓글에 추가하려면 자동 업데이트로 삭제할 수도 있습니다.
JustAnotherDeveloper

2
당신은 : 모든 사용자에 대해 그것을 해결하기 위해 HKEY_USERS \ .DEFAULT \ 소프트웨어 \ 마이크로 소프트 \으로 VisualStudio \ 14.0_Config \ MSBuild를 \ EnableOutOfProcBuild을 설정할 수 있습니다 @MikeCheel
이안 엘리스에게

57

2017 년 6 월 14 일 업데이트

이제 Microsoft Visual Studio 2017 설치 관리자 프로젝트 확장에 레지스트리 설정을 훨씬 쉽게 적용 할 수있는 명령 줄 도우미 도구가 포함됩니다. Microsoft Visual Studio 2017 설치 프로그램 프로젝트

도구의 예제 경로 (설치된 Visual Studio 버전 기준)

프로페셔널 에디션 : C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe


커뮤니티 에디션 : C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe

README에서


이 간단한 도구는 사용자가 명령 줄 빌드를 사용하여 설치 프로그램 프로젝트를 빌드 할 때 나타날 수있는이 오류를 해결하는 데 필요한 레지스트리 키를 설정하는 데 도움을주기위한 것입니다.

오류 : 확인하는 동안 오류가 발생했습니다. HRESULT = '8000000A'

이 도구는 Visual Studio 2017+ 용이며 현재 사용자를 위해 설치된 특정 Visual Studio 인스턴스에 대해이 reg 키를 설정합니다. 따라서 빌드 에이전트에서이를 설정하는 경우 빌드에서 사용할 사용자 계정을 사용해야합니다.

자세한 사용법을 보려면 "DisableOutOfProcBuild.exe help"를 실행하십시오.



4
이 VS2017에 가장 적합한 솔루션입니다
사이먼 O'Beirne

나는 이것이 내가이 문제를 겪은 세 번째라고 생각하고 수정하려고 몇 시간을 보냈고 마침내이 대답을 다시 발견했습니다. 감사!
Hannes Sachsenhofer


내 빌드 컴퓨터에서 Visual Studio 2019 Community Edition을 사용하는 데 적합합니다.
Max Power

48

나는 이것에 대해 온라인 어딘가에서 읽었고 다음과 같이 수정했습니다 (누군가가 제안했습니다) :

  • 메모장 (또는 다른 텍스트 편집기)에서 설치 프로젝트 파일 (.vdproj)을 엽니 다.
  • .vdproj 파일의 시작 부분에서 다음 행을 삭제하십시오.

    "SccProjectName" = "8:"
    "SccLocalPath" = "8:"
    "SccAuxPath" = "8:"
    "SccProvider" = "8:"
  • 다시 빌드-오류가 사라졌습니다.

그 오류가 내 프로젝트를 배포, 빌드, 디버깅 (또는 anyting)하는 것을 막지는 못했습니다. 그리고 모든 프로젝트가 현재 구성으로 빌드되도록 설정하고 설정 프로젝트는 그렇지 않은 경우에도 발생했습니다.


3
문제는 경쟁 조건이라는 것입니다. (무작위) 조정 및 재 구축을 수행하면 고정 된 것처럼 보입니다. rebuildng만으로도 문제가 사라질 것입니다. 100 번 빌드 한 후에도 '고정'상태인지 알고 싶습니다.
oɔɯǝɹ

6
경쟁 조건 일 수 있지만 위의 수정 사항이 작동하고 내 인생을
계속할

39

영구 솔루션 (빌드 머신 용 +)

비주얼 스튜디오 2017

VS 2017의 경우 대상 Windows 계정에서 다음 CMD 스크립트를 호출합니다.

커뮤니티 에디션
프로페셔널 에디션
엔터프라이즈 에디션

TL; DR. 불량 DisableOutOfProcBuild.exe에 대한 참고 사항 , VS 2017에 사용하는 Microsoft의 제공 솔루션.

  1. DisableOutOfProcBuild.exe설치 폴더에서 호출 할 것이라고 가정하지 않습니다 . 따라서이 .exe 파일을 복사 할 수 없습니다. (그런데 .vdproj를 빌드하려면 VS를 설치해야합니다.)
  2. DisableOutOfProcBuild.exe 현재 CMD 디렉터리가 DisableOutOfProcBuild.exe의 설치 위치로 설정된 경우에만 작동합니다.

예를 들어 VS Professional 버전의 경우

CD "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild"
CALL DisableOutOfProcBuild.exe

Visual Studio 2015 이하

현재 Windows 사용자의 경우 CMD 별

많은 사람들에게 아래의 생성 / 수정 HKEY_CURRENT_USER\..이 항상 작동하거나 영구적으로 작동하는 것은 아닙니다.
이 문제를 해결하기 위해 HKEY_USERS 아래에 이상한 키를 생성 / 변경해야한다는 사실을 발견했습니다. HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

그러나 HKCU제안 된 수정 사항에 대해 CMD 콘솔을 사용하는 경우 HKEY_CURRENT_USER가 아닌
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
이상한 키 HKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx ...에 값이 정확히 기록 된다는 것도 발견했습니다 .

따라서 이것은 첫 번째 샷부터 영원히 작동합니다. CMD 콘솔을 사용하십시오.

REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
@REM (use 12.0_Config for VS2013)

빌드 서버용 솔버

반면에이 코드는 HKEY_CURRENT_USER로 인해이를 실행하는 현재 사용자 계정에 대해 항상 작동합니다. 그러나 빌드 서버는 종종 전용 계정이나 로컬 시스템 등을 사용합니다.

다음과 같은 간단한 배치 파일을 빌드 작업 (Jenkins, TeamCity, CruiseControl)에 추가하여 빌드 머신에서 수정했습니다.

VS-2015 , VS-2013 , VS-2017- 커뮤니티 , VS-2017-Professional , VS-2017-Enterprise


1
reg evrey를 2 년 동안 몇 달 동안 패치 한 후 CMD 파일이 제대로 작동하지 않는 일부 솔루션
CMS

1
빌드 서버의 설치 ​​프로젝트에서 MSI를 빌드 할 때 동일한 문제가 갑자기 나타났습니다. 빌드 프로세스는 항상 이전에 작동했으며 변경되지 않았지만 지속적으로 실패하기 시작했습니다. devenv.exe를 호출하기 직전에 빌드 스크립트에 이것을 추가했으며 VS 2013에서 저에게 효과적이었습니다. 감사합니다.
Jim

VS 15.8.x에서는 EXE를 실행 한 후에도이 오류가 발생하지만 VS를 닫은 다음 EXE를 실행 한 다음 VS를 다시 시작하면 오류가 해결됩니다. 따라서 VS의 무언가가 reg 설정을 재설정하고 있으며 해결책은 VS를 닫고 DisableOutOfProcBuild.exe를 다시 실행 한 다음 VS를 시작하는 것입니다.
user2728841

1
이 수정은 VS2015 TFS vNext 빌드에서 작동했습니다. 자동 빌드에 로컬 NT Authority \ Network Service 계정을 사용하므로 RDPing의 reg 키를 빌드 VM에 수동으로 추가해도 자동 빌드 오류가 수정되지 않았습니다. VDPROJ 파일에 대해 Devenv.com을 호출하는 단계 바로 전에 reg 키를 만드는 단계를 추가했습니다. 이것에 대한 해결책을 찾기 위해 너무 오래 고생 한 끝에 게시 해 주셔서 대단히 감사합니다 it3xl !!!
ckkkitty

6

여기 댓글에서 지적했듯이 VS2017의 경우 DWORD를 만들어야합니다. HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 15.0_ [IDKey] _Config \ MSBuild \ EnableOutOfProcBuild [IDKey]를 VisualStudio의 기존 15.0 하위 키의 ID 접미사로 바꿉니다. .

예를 들어 VisualStudio 아래에 "15.0_abcd1234"키가 표시되면 "15.0_abcd1234_Config"가됩니다.

regedit 예



4

내 프로젝트를 다른 PC (VS 2010, 솔루션의 여러 프로젝트)로 옮긴 후이 문제에 직면했습니다.

이미 소스 컴퓨터에서 내 프로젝트를 빌드했지만 대상에 복사 한 후 설정 프로젝트를 빌드 할 수 없었고이 오류가 발생했습니다.

나는 열 /Debug, 내 설치 프로젝트 루트 경로에 폴더가 있었다 MyProject.msi그리고 setup.exe나는 그들을 삭제하고 다시 내 프로젝트를 구축, 파일, 그것은했다. 일부 친구들에게도 효과가 있기를 바랍니다.


하나 더 +1, .msi 및 setup.exe 파일을 삭제하고 설치 프로젝트를 다시 빌드하면 오류 메시지가 사라집니다
George

및 -1,이 문제를 일시적으로 만 해결하는 것으로 보입니다. 솔루션을 다시 연 후 문제가 다시 나타났습니다.
George

@ChrisSchiffhauer를 해결하기 위해 msi 및 exe 파일삭제 합니까?
Kiquenet

@kubilay가 잘 말했습니다, 귀하의 솔루션에 많은 감사드립니다 !! 이 문제는 프로젝트 속성에서 새 프레임 워크 버전을 설정하기 때문에 이전 프레임 워크에서 새 프레임 워크로 프로젝트를 포팅하는 동안 발생할 수 있습니다. 설치 프로젝트의 대상 위치에 .msi 및 .exe 파일이 포함되어있을 수 있습니다. 새 프레임 워크 버전을 사용하면 기존 파일을 덮어 쓰는 동안 오류가 발생할 수 있습니다. 따라서 설정 프로젝트를 마우스 오른쪽 버튼으로 클릭-> '출력 파일 이름'(구성 속성 \ 빌드 아래)으로 이동-> '...'(찾아보기) 버튼 클릭-> 대상 위치 가져 오기, .msi 및 .exe 파일 삭제 . 이제 프로젝트를 빌드하면 작동합니다.
Navin Pandit

1

프로젝트 종속성을 확인하면 도움이 될 수 있습니다.

VS 2010에서는 솔루션 탐색기에서 마우스 오른쪽 버튼을 클릭 한 다음 감지 된 종속성 및 종속성 새로 고침을 클릭하면 언젠가 문제가 해결됩니다.


1

VS 2017을 사용하고 있지만 위의 솔루션이 작동하지 않습니다. 따라서 VS 2017의 최신 버전을 업그레이드하고 @AussieAsh 솔루션을 적용하면 제대로 작동합니다.

이 솔루션이 누군가 작동하기를 바랍니다.


0

나와 함께 잘못된 .suo 파일로 인해 발생했습니다. (스카이 드라이브로 인한)이 파일을 삭제하면 문제가 해결되었습니다.


DisableOutOfProcBuild.exe는 작동하지 않을 때까지 잠시 동안 작동했습니다. .suo 파일을 삭제하면 문제가 해결되었습니다.
Sego

0

Visual Studio 2017은 이전에 공용 레지스트리에 저장된 정보를 새 개인 레지스트리 (C : \ Users \\ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_6de65198 \ privateregistry.bin)에 저장합니다.

VS2013 / VS2015에 대한 지침에 따라 EnableOutOfProcBuild를 추가해야하는 곳입니다.

개인 레지스트리를 업데이트하려면 Regedit를 사용할 수 있습니다.

HKEY_USERS 노드를 선택하려면 클릭하십시오.

파일> Hive로드를 선택하고 privateregistry.bin 파일로 이동합니다. 당신이 그것을 선택하면 Regedit는 이름을 묻습니다-우리가 곧 끝낼 것이기 때문에 당신이 그것을 부르는 것은 중요하지 않습니다.

이제 레지스트리 구조가 나타나고 Microsoft \ VisualStudio \ 15.0_Config \ MSBuild로 이동할 수 있습니다.

값이 0 인 새 DWORD EnableOutOfProcBuild를 만듭니다.

완료되면 하이브의 루트 (이전에 이름을 지정한대로)를 선택하고 파일> 하이브 언로드를 사용하여 분리합니다.

이제 작동합니다 : o)


개인 레지스트리 파일을 엉망으로 만들 필요없이 일반 레지스트리에 15.0_ <x> _Config 키를 직접 만들 수 있습니다 (위 참조)
Night94

0

내 Visual Studio 2013은 어떻게 든 실험적 이어서 EnableOutOfProcBuild에 다른 레지스트리 키를 사용하기 시작했습니다.

여기에 이미지 설명 입력

레지스트리 값을 설정하기 위해 배치 파일에 다른 줄을 추가하고 작동을 시작했는지 확인하기 위해 :

REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\12.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\12.0Exp_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f

0

이 exe를 실행하십시오.

(Visual Studio 2017 커뮤니티 에디션)

C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ CommonExtensions \ Microsoft \ VSI \ DisableOutOfProcBuild \ DisableOutOfProcBuild.exe

(Visual Studio 2017 Enterprise 에디션)

C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ CommonExtensions \ Microsoft \ VSI \ DisableOutOfProcBuild \ DisableOutOfProcBuild.exe


0

좋아, 나는 얼굴이 파랗고, 얼굴이 빨갛고, 머리카락을 잃고 정신을 잃을 때 까지이 문제를 조사하고 찾을 수있는 모든 단계를 시도했습니다. :-디

Visual Studio 2017 / TeamCity에 대한 내 솔루션 은 @ it3xl 의 두 솔루션과 @ Night94의 일부 지원 의 조합 이었습니다. .

문제는 TeamCity 사용자 의 레지스트리 키 가 누락 된 것 같습니다.

  • @AussieAsh가 언급 한대로 실행DisableOutOfProcBuild.exe 따라서 내 사용자에게만 레지스트리 키가 추가 때문에 작동하지 않았습니다.
  • @ it3xl에서 언급 한 스크립트를 사용 하는 것도 TeamCity에서 실행할 때 실패했습니다.

따라서 솔루션은 MSBuild 이전에 TeamCity에서 명령 줄 빌드 단계로 다음을 추가하는 것이 었습니다.

REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\15.0_2c79e3fe_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f

이 단계가 실행되면 필요한 경우 제거 할 수 있습니다.

솔루션 요약

어느 한 쪽:

  • DisableOutOfProcBuild.exe TeamCity 사용자로 실행 또는
  • 레지스트리 키로 이동하여 HKCU\SOFTWARE\Microsoft\VisualStudio나열된 버전을 확인한 다음 TeamCity 빌드의 단계로 REG ADD버전과 일치하도록 위 를 수정하십시오 (을 추가해야 함 _Config).

위의 내용은 한 번만 수행하면됩니다. 문제가 다시 발생하면 TeamCity를 비활성화하여 참조 용으로 남겨 둘 수 있습니다.


0

1 단계 : " EnableOutOfProcBuild " 라는 이름으로 DWORD 키를 만들고 아래 경로 에서 값을 " 0 "으로 설정했습니다.

HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild

참고 : 프로젝트를 빌드하려는 동일한 사용자로 로그인했는지 확인하십시오.

나를 위해 잘 작동합니다.


-1

오늘이 문제가 발생했으면 Visual Studio를 다시 시작해보십시오. 그렇지 않으면 새 프로젝트를 만들고 저장 한 다음 문제 프로젝트에서 파일을 복사하십시오. 두 가지 방법 모두 나를 위해 일했습니다.


-3

먼저 솔루션을 정리하고 솔루션을 빌드 한 다음 설치 프로그램을 빌드하십시오. 오류를 제거합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.