23

为什么在构建安装项目时出现以下错误?

验证时出错。HRESULT = '80004005'

4

11 回答 11

21

解决方案中的一个项目ToolsVersion="4.0"(在 .csproj 文件中)将其更改为ToolsVersion="3.5"并设置项目构建良好。

于 2012-03-28T04:10:36.447 回答
15

我发现的两个原因已经在其他答案中,但它们在单独的答案中并且没有完全解释。因此,希望这将结合各种可能性并提供良好的调试方法。:)

常见原因

我的问题不是依赖错误。然而,这似乎是普遍的原因。因此,基本上,您需要检查MSI文件并确保所有依赖项仍然有效。如果这是一个依赖问题,关于如何轻松解决此问题的最佳博客响应可能是验证时发生错误。HRESULT = '80004005'

摘自博客

请按照以下步骤进行故障排除。

  • 如果您的解决方案中有多个项目输出,请确定出现问题的项目。您可以通过从设置项目中一次删除一个项目来做到这一点,直到错误消失。
  • 确定项目后,确定可能导致问题的参考。

    • 检查项目(A)是否引用了已从解决方案中删除的项目。- 删除此类引用(如果有)。
    • 检查 Project(A) 是否引用了在添加为参考后移动到不同物理位置的项目。- 删除并添加此类引用。
  • 在相应地修复参考后重建设置项目以查看错误是否消失。

替代原因

但是,我的问题与 Visual Studio 版本控制有关。因此,如果您的依赖项是有效的并且您仍然遇到此问题,那么如果这是 VS2010 的问题,您可以解决此问题.

基本上,如果您运行MSBuild并看到此警告:

项目文件包含 ToolsVersion="4.0",此版本的 MSBuild 不支持。将项目视为拥有 ToolsVersion="3.5"

然后问题是 Visual Studio 版本控制。这意味着在 Visual Studio 2010 中打开或创建了一个项目,然后将其保存或添加到现有的 3.5 解决方案中。我只是在我的项目中搜索了所有文件ToolsVersion="4.0"并找到了有问题的.csproj文件,在文本编辑器中打开它并手动将其更改4.03.5.

于 2012-04-13T15:22:27.037 回答
5

此错误与依赖项错误有关。我删除了对我的主要输出项目的所有引用并再次添加它们。现在可以编译了!

于 2009-06-12T12:35:29.827 回答
4

我今天遇到了这个问题。在我的情况下的解决方案?重新启动 Visual Studio 2008。

于 2009-07-31T22:04:02.563 回答
4

在我的情况下,我的解决方案(VS2008)有一个项目也被另一个解决方案(VS2010)引用。在 VS2010 解决方案中,我已将项目升级到 .NET 4.0。当我后来意识到该项目也用于另一个解决方案时,我将其降级为 .NET 3.5。由于某种原因,csproj 文件中的所有内容似乎都已正确更改,除了此处提到的一个地方:安装项目 HRESULT = '80004005' 中的错误

我知道这已经在其他地方解决了,但我想从另一个问题的角度阐明这一点。

于 2011-08-23T11:50:12.893 回答
3

虽然简单地删除和重新添加项目依赖项在许多情况下都会起作用,但需要注意的是:

错误消息“验证时发生错误。HRESULT=80004005。” 通常在项目被引用到未添加到当前 [原文如此] 解决方案中的另一个项目时发生。安装项目仅支持同一解决方案中的依赖项目。1

于 2011-03-28T16:18:22.067 回答
3

我自己花了很多时间在这个上,尽管上述方法都不起作用。但是我找到了另一种注册表黑客解决方案,您需要添加一个新的 DWORD ( EnableOutOfProcBuild) 值 ( 0) 到HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild

注意:这是针对 Visual Studio 2015

于 2016-05-05T18:47:15.410 回答
1

在我的情况下,我安装了 Visual Studio 2010 和 Visual Studio 2008。我的安装项目在 Visual Studio 2008 中打开时出现了同样的错误,但在 Visual Studio 2010 中正常。

如果复制到另一台没有 Visual Studio 2010 但有 Visual Studio 2008 的机器上,那么它会编译。

于 2010-12-06T21:26:18.150 回答
0

我安装了 Visual Studio 2010 并将解决方案转换为该版本。由于性能问题,我将解决方案改回 Visual Studio 2008。现在一切都好起来了,但是当我尝试编译安装项目时出现错误。我意识到我的解决方案中有一个 Visual Studio 2010 测试项目,所以我所要做的就是卸载测试项目并再次构建安装项目。

摘要:卸载解决方案中的任何 Visual Studio 2010 项目。

我希望它有所帮助。

于 2012-01-20T13:41:28.643 回答
0

我从 Stack Overflow 上的另一篇文章中读到了这个答案,它对我有用。

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

"SccProjectName" = "8:"
"SccLocalPath" = "8:"
"SccAuxPath" = "8:"
"SccProvider" = "8:"

再次构建 - 错误消失了。这个错误并没有阻止我部署、构建、调试(或任何)我的项目;它只是惹恼了我。即使我将所有项目设置为在当前配置中构建并且设置项目不设置,它也会出现。

于 2014-06-04T16:02:02.930 回答
0

我知道这是一个旧消息,但我的特定问题和解决方案没有在这里具体说明(据我所知 - 如果我错过了,我深表歉意)。

我有同样的问题。它不会编译我的项目,但没有错误。我只能看到“构建失败”。我打开了“输出”文件(单击菜单上的查看-> 输出),它准确地告诉我是哪个引用(在我的情况下是 .dll)导致了问题。

我删除并重新创建了引用,它将引用名称从 Microsoft.Office.Core(这似乎只是一个 32 位版本)更改为“OFFICE”。然后一切都很好。- 确保记下您在属性窗口中引用的文件的路径......我的新路径完全相同,但引用名称无论如何都改变了......仍然在那个问题上摸不着头脑。 ..

所以这个故事的寓意是......当你没有错误并且你的构建失败时,检查“输出”选项卡,它可能会有所帮助。

于 2014-08-12T22:22:04.530 回答