10

我知道这不是一个编程问题,而是一个编程工具问题。

在 Visual Studio 2008 Team Edition(带有 .NET 3.5 SP1 的 9.0 版)中,当我将引用从一个 csproj 复制并粘贴到另一个(使用“解决方案资源管理器”视图中的上下文菜单)时,我收到以下错误:

对 COM 组件的调用已返回错误 HRESULT E_FAIL

这才刚刚开始在我的机器上发生。我只能找到关于它的这篇文章,并且它没有包含任何解决方案。

有任何想法吗?

4

2 回答 2

9

这是出现在 Google forVS 2010 paste reference E_FAIL之类的排名第一的点击,所以我想我会分享这个解决方法:

不要通过解决方案资源管理器中的上下文菜单使用复制/粘贴引用。

反而:

  1. 使用上下文菜单卸载要从中复制引用的项目。
  2. 编辑项目文件(.csproj;它只是 XML)。
  3. 找到您感兴趣的引用并复制<Reference>XML 节点。
  4. 卸载项目以将引用复制到其中。
  5. 编辑项目文件 (.csproj)
  6. 将上一步中复制的参考粘贴到适当的位置。您需要查找<ItemGroup>包含类似 的节点<Reference Include="mscorlib" />,并将您的参考粘贴到它上面。
  7. 关闭两个 .csproj 文件,同时保存刚刚修改的目标文件。
  8. 通过解决方案资源管理器上下文菜单重新加载两个项目。

您的参考现在被复制到目标项目中。

显然,至少,使用环境变量的引用存在问题,如此处所述尽管在我的情况下,我遇到了不使用环境变量的引用问题,并且在 Visual Studio 2010 中......)

于 2012-06-20T18:52:06.773 回答
5

哎呀,E_FAIL 是最通用的 COM 错误,因为它的字面意思是 COM 函数返回失败。我猜想不知何故,Visual Studio 2008 在某处有一个损坏的 COM 对象。

您是否尝试过重新安装 Visual Studio 2008 只是为了让它重新注册其所有 tlb 和对象?

于 2009-09-29T07:35:37.703 回答