112

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

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

有没有人对为什么会发生此错误以及如何修复它有任何建议?

4

18 回答 18

124

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

于 2014-07-31T08:49:38.927 回答
68

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 实例设置此 reg 密钥。因此,如果您在构建代理上进行设置,请确保使用构建将使用的用户帐户。

运行“DisableOutOfProcBuild.exe help”以获取使用详情。


于 2017-08-09T02:35:35.853 回答
55

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

我们也遇到了这个问题,并且在这个问题上与 Microsoft 进行了非常不满意的支持电话。长话短说:这是一个已知问题,无法解决,Microsoft 建议远离 Visual Studio 安装项目 (.vdproj)。

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

于 2012-01-02T23:13:15.150 回答
48

我在网上的某个地方读到了这个,我已经修复了它(这是有人建议的)

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

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

这个错误并没有阻止我部署、构建、调试(或任何其他)我的项目,它只是让我很恼火。即使我将所有项目设置为在当前配置中构建并且设置项目不设置,它也会出现。

于 2012-06-12T12:25:05.390 回答
46

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

视觉工作室 2017

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

社区
专业
企业

TL;博士。可怜的注释DisableOutOfProcBuild.exe,我用于 VS 2017 的 Microsoft 提供的解决方案。

  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

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)

构建服务器的求解器

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

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

VS-2015 , VS-2013 , VS-2017-社区, VS-2017-专业, VS-2017-企业

于 2017-01-22T08:21:53.993 回答
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”。

注册示例

于 2017-04-19T19:47:52.560 回答
5

修补程序现在上传到这里:

http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=33186

你可以在这里读到它:

http://connect.microsoft.com/VisualStudio/feedback/details/595632/inconsistent-hanging-with-devenv-2010

于 2012-06-14T14:53:04.220 回答
4

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

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

我打开了/Debug我的安装项目根路径下的文件夹,里面有MyProject.msi文件setup.exe,我删除了它们并再次构建了我的项目,它工作了。希望它也适用于某些人。

于 2012-09-13T06:06:22.473 回答
1

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

在 VS 2010 中右键单击您的解决方案资源管理器,然后单击检测到的依赖项和刷新依赖项,它有时可以解决问题。

于 2012-12-10T15:25:59.233 回答
1

只运行这个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

于 2018-12-21T19:20:37.610 回答
1

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

我希望这个解决方案可能有人会起作用。

于 2019-01-08T10:00:01.953 回答
1

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

我的Visual Studio 2017 / TeamCity 解决方案结合了 @it3xl 的两个解决方案和@ Night94的一些帮助。

问题似乎是缺少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并检查列出的版本,然后修改上面的内容REG ADD以匹配版本(记住添加_Config)作为 TeamCity 构建中的一个步骤。

同样,上述内容只需要执行一次。然后,如果您再次遇到问题,您可以在 TeamCity 中禁用此步骤以供参考。

于 2019-09-27T10:34:08.930 回答
0

对我来说,这是由错误的 .suo 文件引起的。(由skydrive引起)删除这个文件解决了这个问题。

于 2013-06-11T07:50:51.793 回答
0

Visual Studio 2017 将先前存储在公共注册表中的信息存储在新的私有注册表中:C:\Users\\AppData\Local\Microsoft\VisualStudio\15.0_6de65198\privateregistry.bin

这是您需要根据 VS2013/VS2015 的说明添加 EnableOutOfProcBuild 的地方。

要更新私有注册表,您可以使用 Regedit。

单击以选择 HKEY_USERS 节点。

选择 File > Load Hive 并导航到 privateregistry.bin 文件。当您选择它时,Regedit 会要求您输入一个名称 - 您如何称呼它并不重要,因为我们很快就会完成。

现在将出现注册表结构,您可以向下导航到 Microsoft\VisualStudio\15.0_Config\MSBuild

创建一个值为 0 的新 DWORD EnableOutOfProcBuild。

完成后,选择 hive 的根(无论您之前命名它的什么)并使用 File > Unload Hive 从中分离。

现在它应该可以工作了:o)

于 2017-05-13T15:45:14.387 回答
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
于 2018-01-09T15:12:59.690 回答
0

第 1 步我“创建了一个名为“<strong>EnableOutOfProcBuild”的 DWORD 键,并将其值设置为“<strong>0”在下面的路径中

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

注意:确保您使用与您尝试构建项目相同的用户登录

它对我来说很好。

于 2020-06-15T10:43:08.673 回答
-1

今天遇到这个问题,尝试重新启动 Visual Studio,如果不行,它会创建一个新项目,保存它,然后将问题项目中的文件复制过来。两种方法都对我有用。

于 2013-08-14T20:14:20.293 回答
-3

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

于 2015-07-28T12:56:52.597 回答