验证时发生错误.HRESULT ='8000000A'

Chr*_* C. 94 .net windows-installer visual-studio-2010 hresult devenv

在自动构建中使用devenv时,我一直收到此错误.我已经浏览了我能找到的每个网站,并且通常的答案提到了刷新的依赖关系(我认为它修复了它用于手动部署,但不用于自动)并从项目中删除源代码控制编码,这对我没有帮助.

每次构建时都不会发生错误,但每次在不同的部署项目上似乎都是随机的.

有没有人对为什么会出现这个错误以及如何修复它有任何建议?

小智 121

使用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.

  • 请注意,Visual Studio 2013更新将从注册表中删除此变量 - 您需要重新添加它. (22认同)
  • 请注意,在使用Jenkins时,需要为运行Jenkins从属的用户添加注册表项. (4认同)
  • 请记住,注册表配置单元是 HKEY_CURRENT_USER,因此如果它是由与您不同的帐户(例如 tfs 构建帐户)调用的,您将需要以该帐户登录并添加设置。 (3认同)
  • 要添加到@DerekW注释,这也可以通过自动更新消除. (3认同)
  • @MikeCheel 你可以设置 HKEY_USERS\.DEFAULT\Software\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild 来为所有用户修复它:) (2认同)

oɔɯ*_*ɯǝɹ 53

这是Visual Studio 2010中的已知问题(竞争条件).请参阅此连接项.

我们也遇到过这种情况,并且在微软的这个问题上有一个非常不满意的支持电话.长话短说:这是一个已知的问题,它将无法解决,微软建议放弃Visual Studio安装项目(.vdproj).

我们通过在第一次失败时第二次触发MSI构建来解决这个问题.不好,但它大部分时间都有效(错误率从~10%下降到~1%).

  • VS 2019 会发生这种情况。我仍然通过从“C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild”运行“DisableOutOfProcBuild.exe”来解决它 (2认同)

小智 49

从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

来自自述文件


这个简单的工具旨在帮助用户设置解决使用命令行构建构建安装程序项目时可能出现的此错误所需的注册表项:

错误:验证时发生错误.HRESULT ='8000000A'

该工具适用于Visual Studio 2017+,并为当前用户为特定的已安装Visual Studio实例设置此注册表项.因此,如果您在构建代理上设置此项,请确保使用构建将使用的用户帐户.

运行"DisableOutOfProcBuild.exe帮助"以获取用法详细信息.


  • 这是VS2017的最佳解决方案 (3认同)
  • 我想这是我第三次遇到这个问题,花了几个小时尝试修复,然后终于重新发现了这个答案。谢谢! (2认同)
  • 您必须将目录更改为该位置才能正常工作。参见https://github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/issues/1和https://github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/blob/master/workaround /DevEnv-Vdproj-VS2017_Professional-HRESULT-8000000A-EnableOutOfProcBuild.bat (2认同)

Cip*_*ipi 47

我在网上看了一下这个,我已经修好了(有人建议):

  • 在记事本(或任何其他文本编辑器)中打开您的安装项目文件(.vdproj)
  • 在.vdproj文件的开头删除这些行:

    "SccProjectName" = "8:"
    "SccLocalPath" = "8:"
    "SccAuxPath" = "8:"
    "SccProvider" = "8:"
    
    Run Code Online (Sandbox Code Playgroud)
  • 再次构建 - 错误消失了

这个错误并没有阻止我部署,构建,调试(或任何)我刚刚烦恼我的项目.即使我将所有项目都设置为当前配置并且安装项目没有设置,它也会出现.

  • 可能是一个竞争条件,但上面的修复工作,并允许我继续我的生活(直到下一个问题让我淘堆栈溢出:)) (5认同)
  • 这个问题的问题在于它是一种竞争条件.进行(随机)调整和重建将使其看起来像是固定的.只是重建也会使问题消失.我想知道它是否在100次构建后仍然"固定". (3认同)

it3*_*3xl 35

永久解决方案(+用于构建机器)

Visual Studio 2017

对于VS 2017,请在目标Windows帐户下调用以下CMD脚本:

社区
专业
企业

TL; DR.关于穷人的说明DisableOutOfProcBuild.exe,微软为VS 2017提供的解决方案.

  1. DisableOutOfProcBuild.exe不会假设您将其从安装文件夹中.因此,您无法复制此.exe文件.(顺便说一句,如果你想构建.vdproj,你必须安装VS.)
  2. DisableOutOfProcBuild.exe 仅当当前CMD目录设置为DisableOutOfProcBuild.exe的安装位置时才有效.

例如,对于VS专业版,我们必须打电话

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


Visual Studio 2015及更早版本

由CMD为当前的Windows用户

对于许多人而言,创造/修正HKEY_CURRENT_USER\..并不总是有效或永久地发挥作用.
试图解决这个问题,我发现实际上我必须在HKEY_USERS下创建/更改一些奇怪的键 HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

但我还发现,如果我将使用CMD控制台进行HKCU建议的修复,
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 ...,而不是HKEY_CURRENT_USER.

所以,这是第一次拍摄和永远.只需使用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)
Run Code Online (Sandbox Code Playgroud)

构建服务器的解算器

另一方面,此代码始终适用于启动它的当前用户帐户(因为HKEY_CURRENT_USER).但构建服务器通常使用专用帐户或本地系统等.

我通过将以下简单的批处理文件添加到我的构建任务中来修复它在我的构建机器上(Jenkins,TeamCity,CruiseControl)

VS-2015, VS-2013, VS-2017-Community, VS-2017-Professional, VS-2017-Enterprise


Nig*_*t94 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".

注册示例