【发布时间】:2009-06-12 11:43:15
【问题描述】:
为什么在构建安装项目时会出现以下错误?
验证时出错。 HRESULT = '80004005'
【问题讨论】:
标签: visual-studio setup-project
为什么在构建安装项目时会出现以下错误?
验证时出错。 HRESULT = '80004005'
【问题讨论】:
标签: visual-studio setup-project
解决方案中的一个项目有 ToolsVersion="4.0"(在 .csproj 文件中),将其更改为 ToolsVersion="3.5" 并且设置项目构建正常。
【讨论】:
我发现的两个原因已经在其他答案中,但它们在单独的答案中并且没有完全解释。因此,希望这将结合各种可能性并提供良好的调试方法。 :)
常见原因
我的问题不是依赖错误。然而,这似乎是普遍的原因。因此,基本上,您需要检查您的 MSI 文件并确保所有依赖项仍然有效。如果是依赖问题,关于如何轻松解决此问题的最佳博客回复可能是 An error occurred while validating. HRESULT = '80004005'。
摘自博客:
按照以下步骤进行故障排除。
- 如果您的解决方案中有多个项目输出,请确定出现问题的项目。您可以通过从设置项目中一次删除一个项目来做到这一点,直到错误消失。
确定项目后,确定可能导致问题的参考。
- 检查项目 (A) 是否引用了已从解决方案中删除的项目。 - 删除此类引用(如果有)。
- 检查项目 (A) 是否引用了在添加为参考后移动到不同物理位置的项目。 - 删除并添加此类引用。
在相应地修复引用后重新构建设置项目以查看错误是否消失。
其他原因
不过,我的问题与 Visual Studio 版本控制有关。所以,如果你的依赖是有效的,但你仍然遇到这个问题,那么如果是 VS2010 的问题,你就可以解决这个问题。
基本上,如果您运行 MSBuild 并看到此警告:
项目文件包含 ToolsVersion="4.0",不支持 此版本的 MSBuild。像对待项目一样对待项目 ToolsVersion="3.5"
那么问题在于 Visual Studio 版本控制。这意味着在 Visual Studio 2010 中打开或创建了一个项目,然后将其保存或添加到现有的 3.5 解决方案中。我只是在我的项目中的所有文件中搜索ToolsVersion="4.0" 并找到有问题的.csproj 文件,在文本编辑器中打开它并手动将4.0 更改为3.5。
【讨论】:
此错误与依赖项错误有关。我删除了对我的主要输出项目的所有引用并再次添加它们。现在可以编译了!
【讨论】:
我今天遇到了这个问题。在我的情况下的解决方案?重新启动 Visual Studio 2008。
【讨论】:
在我的情况下,我的解决方案 (VS2008) 有一个项目也被另一个解决方案 (VS2010) 引用。在 VS2010 解决方案中,我已将项目升级到 .NET 4.0。当我后来意识到该项目也用于另一个解决方案时,我将其降级为 .NET 3.5。由于某种原因,csproj 文件中的所有内容似乎都已正确更改,除了此处提到的一个地方:Error in setup project HRESULT = '80004005'
我知道这已经在其他地方解决了,但我想从另一个问题的角度阐明这一点。
【讨论】:
虽然简单地删除和重新添加项目依赖项在许多情况下都会起作用,但需要注意的是:
错误消息“验证时出错。HRESULT=80004005。” 通常在项目被引用到另一个项目时发生 未添加到当前的 [原文如此] 解决方案中。安装工程只支持 同一解决方案中的依赖项目。1
【讨论】:
我自己花了很多时间在这个上,尽管上述方法都没有奏效。但是我找到了另一个注册表黑客解决方案,您需要将 (0) 的新 DWORD (EnableOutOfProcBuild) 值添加到 HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild
注意:这是针对 Visual Studio 2015 的
【讨论】:
在我的例子中,我安装了 Visual Studio 2010 和 Visual Studio 2008。我的安装项目在 Visual Studio 2008 中打开时出现了同样的错误,但在 Visual Studio 2010 中正常。
如果复制到另一台没有 Visual Studio 2010 但有 Visual Studio 2008 的机器上,则可以编译。
【讨论】:
我安装了 Visual Studio 2010 并将解决方案转换为该版本。由于性能问题,我将解决方案改回 Visual Studio 2008。现在一切都好起来了,但是当我尝试编译安装项目时出现错误。我意识到我的解决方案中有一个 Visual Studio 2010 测试项目,所以我所要做的就是卸载测试项目并再次构建安装项目。
总结:卸载解决方案中的任何 Visual Studio 2010 项目。
希望对你有帮助。
【讨论】:
我知道这是一个老新闻,但我的特定问题和解决方案没有在这里具体说明(据我所知 - 如果我错过了,我深表歉意)。
我有同样的问题。它不会编译我的项目,但没有错误。我只能看到“构建失败”。我打开了“输出”文件(单击菜单上的查看-> 输出),它准确地告诉我是哪个引用(在我的情况下是 .dll)导致了问题。
我删除并重新创建了引用,并将引用名称从 Microsoft.Office.Core(这似乎只是一个 32 位版本)更改为“OFFICE”。然后一切都很好。 - 确保记下您在属性窗口中引用的文件的路径......我的新路径完全相同,但引用名称无论如何都改变了......仍然在那个问题上摸不着头脑。 ..
所以这个故事的寓意是......当您没有错误并且构建失败时,请检查“输出”选项卡,它可能会有所帮助。
【讨论】:
我从 StackOverflow 上的另一篇文章中阅读了这个答案,它对我有用。
在Notepad(或任何其他文本编辑器)中打开您的安装项目文件 (.vdproj)。删除 .vdproj 文件开头的这些行:
"SccProjectName" = "8:"
"SccLocalPath" = "8:"
"SccAuxPath" = "8:"
"SccProvider" = "8:"
再次构建 - 错误消失了。这个错误并没有阻止我部署、构建、调试(或任何)我的项目;它只是惹恼了我。即使我将所有项目设置为在当前配置中构建并且设置项目不设置,它也会出现。
【讨论】: