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

时间:2011-12-27 19:25:07

标签: .net visual-studio-2010 windows-installer devenv hresult

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

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

有没有人对这个错误究竟发生的原因以及如何解决这个问题有任何建议?

18 个答案:

答案 0 :(得分:114)

使用Microsoft Visual Studio Installer Projects扩展升级VS200X安装项目后,为VS2013或VS2015出现此问题的用户的更新。

按照MS的v1.0.0.0的配方,最终让它对我有用:

Microsoft Visual Studio Installer Projects

  

很遗憾,我们无法解决此版本的所有命令行问题,因为我们仍在调查解决这些问题的适当方法。我们所拥有的是一种我们认为几乎适用于所有这些方法的解决方法。如果您仍然遇到此问题,则可以尝试将以下注册表值的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。

答案 1 :(得分:51)

这是Visual Studio 2010中的已知问题(竞争条件)。请参阅this connect item

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

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

答案 2 :(得分:47)

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

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

    "SccProjectName" = "8:"
    "SccLocalPath" = "8:"
    "SccAuxPath" = "8:"
    "SccProvider" = "8:"
    
  • 再次构建 - 错误消失

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

答案 3 :(得分:40)

从2017年6月14日起更新

Microsoft Visual Studio 2017安装程序项目扩展现在包含一个命令行帮助程序工具,可以更轻松地应用注册表设置  Microsoft Visual Studio 2017 Installer Projects

该工具的示例路径(基于安装的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帮助”了解使用详情。

答案 4 :(得分:28)

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

Visual Studio 2017

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

Community
Professional
Enterprise

TL; DR。关于差DisableOutOfProcBuild.exe的注释,这是微软为VS 2017提供的解决方案。

  1. DisableOutOfProcBuild.exe并不认为您会将其称为out of its installation folder。因此,您无法复制此.exe文件。 (顺便说一句,如果你想构建.vdproj,你必须安装VS。)
  2. DisableOutOfProcBuild.exe仅在当前CMD目录设置为DisableOutOfProcBuild.exe的安装位置时才有效。
  3. 例如,对于VS专业版,我们必须致电

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


    Visual Studio 2015及更早版本

    CMD为当前Windows用户

    对于许多人来说,HKEY_CURRENT_USER\..下的创建/更正并不总是有效或永久有效 试图解决这个问题,我发现事实上我必须在 HKEY_USERS HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

    下创建/更改一些奇怪的密钥

    但我也发现如果我将HKCU的CMD控制台用于建议的修复 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)
    

    构建服务器的解算器

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

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

    VS-2015VS-2013VS-2017-CommunityVS-2017-ProfessionalVS-2017-Enterprise

答案 5 :(得分:5)

正如评论here中所指出的,对于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 example

答案 6 :(得分:5)

答案 7 :(得分:3)

在我将项目移动到另一台PC(VS 2010,解决方案中的多个项目)之后,我遇到了这个问题。

它已经在源计算机中构建了我的项目但是在我复制到目标之后,我无法构建我的安装项目并出现此错误。

我在我的安装项目根路径下打开了/Debug文件夹,有MyProject.msisetup.exe个文件,我删除了它们并再次构建我的项目,它运行正常。希望它也适用于一些家伙。

答案 8 :(得分:1)

检查项目依赖关系可能会有所帮助。

在VS 2010中右键单击解决方案资源管理器,然后单击“检测到的依赖关系”和“刷新依赖关系”,它有时会解决问题。

答案 9 :(得分:0)

与我同在,这是由错误的.suo文件引起的。 (由skydrive引起) 删除此文件解决了问题。

答案 10 :(得分:0)

Visual Studio 2017将以前存储在公共注册表中的信息存储在新的私有注册表中: C:\用户\\应用程序数据\本地\微软\ 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。

完成后,选择hive的根(无论你之前命名的是什么),然后使用File>卸载Hive以从中分离。

现在应该有效:o)

答案 11 :(得分:0)

我的Visual Studio 2013以某种方式变成了实验所以它开始使用另一个注册表项 EnableOutOfProcBuild

enter image description here

为了确保我在批处理文件中添加了另一行来设置注册表值,它开始工作:

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

答案 12 :(得分: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企业版)

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

答案 13 :(得分:0)

我正在使用VS 2017,但以上解决方案均无效。 因此,升级了VS 2017的最新版本,并应用@AussieAsh解决方案及其正常工作...

我希望这种解决方案可能会有人工作。

答案 14 :(得分:0)

好吧,我一直研究这个问题,直到我的脸变成蓝色,脸变成红色,失去头发,失去理智,并尝试了我能找到的每一个步骤。 :-D

我为 Visual Studio 2017 / TeamCity设计的解决方案是@it3xl的两个解决方案和@Night94的一些帮助的组合。

问题似乎是 TeamCity用户的注册表项丢失。

  • 正在运行DisableOutOfProcBuild.exe as mentioned by @AussieAsh无效,因为它仅为我的用户添加了注册表项。
  • 从TeamCity运行时,
  • 使用@ it3xl提到的the script也会失败

因此,解决方案是在MSBuild之前从TeamCity添加以下内容作为命令行构建步骤:

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

执行此步骤后,可以根据需要将其删除。

解决方案摘要

要么:

  • 以TeamCity用户身份运行DisableOutOfProcBuild.exe ,或
  • 导航到注册表项HKCU\SOFTWARE\Microsoft\VisualStudio并检查列出的版本,然后修改以上REG ADD以匹配版本(请记住要添加_Config),作为TeamCity构建的步骤。

同样,以上操作仅需执行一次。您可以禁用进入TeamCity,以便再次遇到问题时留作参考。

答案 15 :(得分:0)

第1步我已经“创建了一个名称为“ EnableOutOfProcBuild ”的DWORD密钥,并将其值设置为“ 0 ”路径

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

注意:请确保您要使用尝试构建项目的同一用户登录

对我来说很好。

答案 16 :(得分:-1)

今天遇到这个问题,尝试重新启动Visual Studio,如果不这样做,则创建一个新项目,保存它,然后从问题项目中复制文件。这两种方法都适用于我。

答案 17 :(得分:-3)

请先清理解决方案,构建解决方案,然后尝试构建安装程序。它将删除错误。