Visual Studio 2008安装项目中的HRESULT = '80004005'

5
当我尝试构建我的安装程序时,出现以下错误:"验证时发生错误。HRESULT = '80004005'"(微软获得了一个清晰度奖)。我谷歌搜索发现许多开发人员遇到了同样的问题。实际上,错误信息应该显示为:"无法在其中一个项目中找到引用"。所有人都说(即使是在StackOverflow上),如何找到有问题的项目:
1. 从安装程序中删除所有输出。 2. 逐个添加每个项目输出,直到出现错误。
我这样做后,发现我的主可执行项目和主类库项目出现了80004005错误。由于主可执行项目引用了主类库项目,所以我认为问题在主类库项目中。
一旦你找到了有问题的项目,人们建议删除所有引用,并重新添加它们(这可以解决路径问题,这似乎是此错误的主要原因)。实际上,我对解决方案中的所有项目都进行了此操作,以确保万无一失。但我仍然遇到了80004005错误。
我已经谷歌搜索了大约五个小时,但没有找到其他建议的解决方案。在我开始向神灵献祭小可爱动物之前,欢迎提出建议。

你是否有任何跨解决方案的项目,即在多个解决方案中出现的项目?或者你将安装配置项目从一个解决方案移动到另一个解决方案了吗? - Dirk Vollmar
所有五个类库,包括上面描述的主要类库,都被用于许多解决方案中。主可执行项目及其相应的安装项目仅在一个解决方案中使用。 - Yerg
4个回答

3
使用同一个项目文件在多个解决方案中会导致您观察到的问题。解决方法是重新构建您的解决方案或创建单独的项目文件。
这个问题在这个Connect项中有记录:
“验证时发生错误。HRESULT = '80004005'” (链接)

1
感谢您清晰而迅速的回复。(现在,亲爱的微软:如果我必须为每个该死的解决方案重新创建它们,那似乎就打败了“可重用库”的整个意义。我有数十个使用我的库的程序,每个程序都将需要有一天建立安装项目。现在制作一个单独的安装项目将花费我数小时这是完全不可接受的。如果我一天内不得不制作多个安装项目怎么办?) - Yerg
一定有更好的解决方案。在多个解决方案中使用项目文件会破坏什么? - Yerg
@Yerg:最好使用文件引用或切换到Visual Studio的其他项目,以避免使用安装程序。 - Dirk Vollmar
1
最好的解决方案是完全避免使用主输出。我只需编译主可执行文件的发布版本,然后将所有发布文件拖放到安装程序项目中即可。BAM问题解决了。(具有讽刺意味的是,它从可执行文件中检测到了.NET Framework依赖项!) - Yerg
不幸的是,依赖项似乎也会影响安装哪些先决条件?它检测到.NET Framework作为一个依赖项,但另一个Microsoft库却没有。虽然我在先决条件选项卡中包含了所有的先决条件,但我希望这已经足够了。看来你需要将其检测为依赖项并将其选中为先决条件,才能安装先决条件(?)。 - Yerg

1

我遇到了同样的问题(错误:HRESULT = '80004005'),这里是解决方案。

情况是: 我正在使用项目“x”的输出进行部署。项目“x”构建良好,但是相同项目的部署项目失败。

我的部署项目中包括许多其他项目。没有直接的方法来确定故障原因。唯一确定故障原因的方法是删除该项目并查看是否可以构建部署项目。

通过这种方式,您可以确定有问题的项目。

解决方案是: 在项目“x”引用中包含了许多项目,但并非所有项目都包含在解决方案中。

我已经包含了所有引用项目的引用,并且部署项目构建成功。


0

我曾经遇到过同样(无法解决的)问题,而 Yerg 的技巧(只需添加文件而不是项目输出)拯救了我的*。至少,安装程序在我的本地系统上构建并且安装程序可以正常工作。仍需在客户系统上进行测试...

非常感谢 Yerg。


2
我不明白,安装程序项目无法编译,所以你从解决方案中将其删除。你构建了解决方案,从发布文件夹获取文件,将安装程序项目添加到解决方案中,并将生成的文件拖放到安装程序项目上?我做不到这一点。 - noloman

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接