验证过程中发生错误。 HRESULT = '80004005'
验证过程中发生错误。 HRESULT = '80004005'
一个解决方案中的一个项目在.csproj文件中有ToolsVersion="4.0"
,将其更改为ToolsVersion="3.5"
后,设置项目可以成功构建。
我发现的原因已经在其他答案中了,但它们是分开的且没有完全解释。因此,希望这篇文章可以将可能性结合起来,并提供良好的调试方法。 :)
常见原因
我的问题不是依赖项错误。然而,那似乎是常见的原因。所以,基本上,您需要检查您的MSI文件,并确保所有依赖项仍然有效。如果这是一个依赖项问题,则最好的博客响应是验证时出错。HRESULT = '80004005'。
从博客中提取的内容:
按照以下步骤进行故障排除。
- 如果您的解决方案中有多个项目输出,请确定出现问题的项目。您可以通过从安装程序(S)中逐个删除一个项目来完成此操作。直到错误消失为止。
一旦确定了项目,请确定可能会导致问题的引用。
- 检查项目(A)是否引用已从解决方案中删除的项目。- 如果有,请删除此类引用。
- 检查项目(A) 是否参考了在添加为引用后移动到不同物理位置的项目。 - 删除并添加此类引用。
根据需要修复引用后重新构建设置项目,以查看错误是否消失。
替代原因
我的问题与Visual Studio版本有关。如果你的依赖项是有效的,但仍然遇到这个问题,那么你可以解决这个问题,如果是VS2010的问题,请参考。那么问题就在于Visual Studio版本。这意味着一个项目是在Visual Studio 2010中打开或创建的,然后保存或添加到现有的3.5解决方案中。我只需要在我的项目中搜索所有文件以查找项目文件包含ToolsVersion="4.0",这在此版本的MSBuild中不受支持。将该项目视为具有ToolsVersion="3.5"
ToolsVersion="4.0"
,找到有问题的.csproj
文件,用文本编辑器打开它,并手动将4.0
更改为3.5
即可。这个错误与依赖项有关。我删除了所有对主输出项目的引用,然后再次添加它们。现在可以编译成功!
今天我遇到了这个问题,在我的情况下解决方法是重新启动Visual Studio 2008。
尽管在许多情况下,简单地删除并重新添加项目依赖关系就可以解决问题,但需要注意以下几点:
当项目引用未添加到当前解决方案的其他项目时,通常会出现“验证时发生错误。 HRESULT = 80004005。”的错误消息。设置项目仅支持同一解决方案中的依赖项项目。1
虽然上面的方法都没有起作用,但我自己花了很多时间研究出了另一种注册表修改的解决方案。你需要在 HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild
中添加一个名为 EnableOutOfProcBuild
的新 DWORD 值,并将其设置为 0
。
注意:此方法适用于 Visual Studio 2015。
"SccProjectName" = "8:"
"SccLocalPath" = "8:"
"SccAuxPath" = "8:"
"SccProvider" = "8:"
我知道这可能是旧新闻了,但我的问题和解决方案在这里没有被明确定义(就我所知 - 如果我错过了,我很抱歉)。
我有同样的问题。 它无法编译我的项目,但没有错误。 我所能看到的只有“构建失败”。 我打开了“输出”文件(单击菜单上的“查看”->“输出”),它告诉我哪个引用(在我的情况下为.dll)导致问题。
我删除并重新创建了引用,并将引用名称从Microsoft.Office.Core(显然仅为32位版本)更改为“OFFICE”。 然后一切都很好。-请确保在属性窗口中记下引用文件的路径...我的新路径完全相同,但引用名称仍然发生了变化...还在思考那一个...
所以故事的寓意是...当您没有错误而构建失败时,请检查“输出”选项卡,它可能会有所帮助。