[.net] 확인하는 동안 오류가 발생했습니다. HRESULT = ‘8000000A’

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

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

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



답변

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

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

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


답변

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로 만들 수 있습니다.


답변

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”를 실행하십시오.



답변

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

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

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

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


답변

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

비주얼 스튜디오 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


답변

여기 댓글에서 지적했듯이 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 예


답변