为什么在构建安装项目时会出现以下错误?
验证时发生错误。 HRESULT ='80004005'
答案 0 :(得分:21)
解决方案中的一个项目有ToolsVersion="4.0"
(在.csproj文件中),将其更改为ToolsVersion="3.5"
并设置项目构建正常。
答案 1 :(得分:15)
我发现的两个原因已经在其他答案中,但它们是单独的答案,并没有完全解释。因此,希望这将结合各种可能性并提供良好的调试方法。 :)
常见原因
我的问题不是依赖错误。然而,这似乎是常见的原因。因此,基本上,您需要检查MSI文件并确保所有依赖项仍然有效。如果是依赖性问题,关于如何轻松解决此问题的最佳博客回复可能是 An error occurred while validating. HRESULT = '80004005' 。
从博客中提取:
按照以下步骤进行问题排查。
- 如果解决方案中有多个项目输出,请确定出现问题的项目。您可以通过从安装项目(S)一次删除一个项目直到错误消失来实现。
确定项目后,确定可能产生问题的参考。
- 检查项目(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
。
答案 2 :(得分:5)
此错误与依赖项错误有关。我删除了对主输出项目的所有引用并再次添加它们。它现在编译好了!
答案 3 :(得分:4)
我今天遇到了这个问题。在我的情况下的解决方案?重新启动Visual Studio 2008。
答案 4 :(得分:4)
就我而言,我的解决方案(VS2008)有一个项目也是从另一个解决方案(VS2010)引用的。在VS2010解决方案中,我已将项目升级到.NET 4.0。当我后来意识到该项目也被用于另一个解决方案时,我将其降级为.NET 3.5。由于某种原因,csproj文件中的所有内容似乎都被正确更改,除了这里提到的一个地方:Error in setup project HRESULT = '80004005'
我知道这已经在其他地方得到了解决,但我想从另一个问题角度对此进行阐述。
答案 5 :(得分:3)
虽然简单地删除和重新添加项目依赖项在许多情况下都会起作用,但重要的是要注意:
错误消息“验证时发生错误.HRESULT = 80004005。” 通常在项目被引用到另一个项目时发生 没有添加到当前的[原文]解决方案中。安装项目仅支持 同一解决方案中的依赖项目。1
答案 6 :(得分:3)
我自己花了很多时间在这个上面,尽管以上都没有。但是我找到了另一个带有注册表黑客的解决方案,你需要将新的DWORD(--cleanup=<mode>
scissors
Same as whitespace, except that everything from (and including) the line
"# ------------------------ >8 ------------------------" is truncated if the message
is to be edited. "#" can be customized with core.commentChar.
)值(EnableOutOfProcBuild
)添加到0
注意:这适用于Visual Studio 2015
答案 7 :(得分:1)
在我的情况下,我在Visual Studio 2008中安装了Visual Studio 2010.我的安装项目在Visual Studio 2008中打开时出现了同样的错误,但在Visual Studio 2010中没问题。
如果复制到另一台没有Visual Studio 2010,但确实有Visual Studio 2008的计算机,则会进行编译。
答案 8 :(得分:0)
我安装了Visual Studio 2010并将解决方案转换为该版本。由于性能问题,我将我的解决方案改回了Visual Studio 2008.现在一切都变得更好但是当我尝试编译安装项目时出现错误。我意识到我在我的解决方案中有一个Visual Studio 2010测试项目所以我所要做的就是卸载测试项目并再次构建安装项目。
摘要:在解决方案中卸载任何Visual Studio 2010项目。
我希望它有所帮助。
答案 9 :(得分:0)
我从Stack Overflow上的另一篇文章中读到了这个答案,它对我有用。
在Notepad(或任何其他文本编辑器)中打开您的安装项目文件(.vdproj)。在.vdproj文件的开头删除这些行:
"SccProjectName" = "8:"
"SccLocalPath" = "8:"
"SccAuxPath" = "8:"
"SccProvider" = "8:"
再次构建 - 错误消失了。这个错误并没有阻止我部署,构建,调试(或任何)我的项目;它只是让我生气即使我将所有项目都设置为当前配置并且安装项目没有设置,它也会出现。
答案 10 :(得分:0)
我知道这是一个有点旧的消息,但我的具体问题和解决方案在这里没有具体说明(据我所知 - 如果我错过了,我道歉)。
我有同样的问题。它不会编译我的项目,但没有错误。我只能看到&#34; Build Failed&#34;。我打开了&#34;输出&#34;文件(单击视图 - &gt;菜单上的输出),它确切地告诉我哪个引用(在我的情况下是.dll)导致了问题。
我删除并重新创建了引用,它将引用名称从Microsoft.Office.Core(显然只有32位版本)更改为&#34; OFFICE&#34;。一切都很好。 - 确保记下您在属性窗口中引用的文件的路径...我的新路径完全相同,但参考名称仍然改变了......仍然在那个问题上摸不着头脑。 ..
故事的寓意是......当你没有错误并且你的构建失败时,检查&#34;输出&#34;选项卡,它可能会有所帮助。