在自动构建上使用 devenv 时,我已经收到此错误一段时间了。我浏览了我能找到的每个网站,通常的答案提到刷新依赖项(我相信它可以修复手动部署,但不能自动部署)并从项目中删除源代码控制编码,这对我没有帮助。
每次构建时都不会出现该错误,但每次在不同的部署项目上似乎都是随机的。
有没有人对为什么会发生此错误以及如何修复它有任何建议?
在自动构建上使用 devenv 时,我已经收到此错误一段时间了。我浏览了我能找到的每个网站,通常的答案提到刷新依赖项(我相信它可以修复手动部署,但不能自动部署)并从项目中删除源代码控制编码,这对我没有帮助。
每次构建时都不会出现该错误,但每次在不同的部署项目上似乎都是随机的。
有没有人对为什么会发生此错误以及如何修复它有任何建议?
使用 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。
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”以获取使用详情。
这是 Visual Studio 2010 中的一个已知问题(竞争条件)。请参阅此连接项。
我们也遇到了这个问题,并且在这个问题上与 Microsoft 进行了非常不满意的支持电话。长话短说:这是一个已知问题,无法解决,Microsoft 建议远离 Visual Studio 安装项目 (.vdproj)。
我们通过在第一次失败时再次触发 MSI 构建来解决此问题。不好,但它大部分时间都有效(错误率从 ~ 10% 下降到 ~ 1%)。
我在网上的某个地方读到了这个,我已经修复了它(这是有人建议的):
删除 .vdproj 文件开头的这些行:
"SccProjectName" = "8:"
"SccLocalPath" = "8:"
"SccAuxPath" = "8:"
"SccProvider" = "8:"
这个错误并没有阻止我部署、构建、调试(或任何其他)我的项目,它只是让我很恼火。即使我将所有项目设置为在当前配置中构建并且设置项目不设置,它也会出现。
对于 VS 2017,在您的目标 Windows 帐户下调用以下 CMD 脚本:
TL;博士。可怜的注释DisableOutOfProcBuild.exe
,我用于 VS 2017 的 Microsoft 提供的解决方案。
DisableOutOfProcBuild.exe
不假定您会从其安装文件夹中调用它。因此,您不能复制此 .exe 文件。(顺便说一句,如果你想构建.vdproj,你必须安装VS。)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
通过 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)中,在我的构建机器上修复了它
正如评论中所指出的,对于 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”。
修补程序现在上传到这里:
http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=33186
你可以在这里读到它:
将项目移至另一台 PC(VS 2010,解决方案中的多个项目)后,我遇到了这个问题。
它已经在源计算机中构建了我的项目,但是在我复制到目标后,我无法构建我的安装项目并出现此错误。
我打开了/Debug
我的安装项目根路径下的文件夹,里面有MyProject.msi
文件setup.exe
,我删除了它们并再次构建了我的项目,它工作了。希望它也适用于某些人。
检查项目依赖关系可能会有所帮助。
在 VS 2010 中右键单击您的解决方案资源管理器,然后单击检测到的依赖项和刷新依赖项,它有时可以解决问题。
只运行这个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
我正在使用 VS 2017,但上述解决方案均无效。因此,升级最新版本的 VS 2017 并应用 @AussieAsh 解决方案,它的工作正常......
我希望这个解决方案可能有人会起作用。
好吧,我一直在研究这个问题,直到我脸色发青,脸色发红,失去了头发,失去了理智,并尝试了我能找到的每一步。:-D
我的Visual Studio 2017 / TeamCity 解决方案结合了 @it3xl 的两个解决方案和@ Night94的一些帮助。
问题似乎是缺少TeamCity 用户的注册表项。
DisableOutOfProcBuild.exe
因此,@AussieAsh 提到的运行不起作用,因为它仅为我的用户添加了注册表项。因此,解决方案是在 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 中禁用此步骤以供参考。
对我来说,这是由错误的 .suo 文件引起的。(由skydrive引起)删除这个文件解决了这个问题。
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)
我的 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
第 1 步我“创建了一个名为“<strong>EnableOutOfProcBuild”的 DWORD 键,并将其值设置为“<strong>0”在下面的路径中
“HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild”
注意:确保您使用与您尝试构建项目相同的用户登录
它对我来说很好。
今天遇到这个问题,尝试重新启动 Visual Studio,如果不行,它会创建一个新项目,保存它,然后将问题项目中的文件复制过来。两种方法都对我有用。
请先清理解决方案,构建解决方案,然后再尝试构建安装程序。它将消除错误。