121

我在调试从 Visual Studio 2010 迁移到 2012 的项目时遇到问题。每次我去调试它时,我都会收到错误消息:

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

在本地 IIS 服务器中编译和运行应用程序工作正常 - 只是无法调试。

除了迁移到 VS2012 之外,另一个变化是我现在使用 Team Foundation Server 进行源代码控制和问题跟踪 - 但我看不出这会如何影响它。

我可以把它缩小到以下

  • 项目文件 - 它已从 VS 2003 迁移为网站项目,并已被切碎并更改为不同的版本
  • Crystal Report 运行时库/其他一些库

有任何想法的人吗?

4

32 回答 32

85

我最近得到了很多。我不得不创建一个新文件并将代码移动到新文件以解决它。

我通过删除解决方案的 suo 文件来修复它(据我所知,它只存储诸如在 IDE 中打开了哪些文件之类的信息,删除它并没有真正的损害)。

我的文件似乎已损坏。(IDE 不会记住重新启动时打开了哪些文件。它的大小为 1.7MB,看起来很大,即使对于我的 40 个项目解决方案,它很少一次打开超过 50 个文件。)

编辑:我最近不得不在 VS2017 中执行此操作,但由于另一个原因,构建需要更长的时间,并且需要 5 分钟以上的时间才能停止调试会话,删除那个讨厌的 suo 文件可以立即修复它,现在任何时候 VS 都可以奇怪地删除 SUO是我的第一个停靠港。

于 2015-04-25T00:45:49.723 回答
84

我在 Visual Studio 2019 中的 c++ 项目中遇到了同样的问题。

以下解决方案对我有用:

  • 关闭 Visual Studio。
  • 转到项目的根文件夹并删除 .vs 目录。
  • 启动 Visual Studio 并打开解决方案。
  • 构建现在应该可以工作了。
于 2019-04-03T10:28:15.623 回答
77

我删除了 csproj.user 文件,它对我有用。

在其他一些情况下,要修复此错误,我会转到项目属性中的 Web 选项卡并选中“使用 Visual Studio 开发服务器”和“自动分配端口”。之后我需要重建项目并重新启动VS

于 2016-02-02T19:07:51.730 回答
16

这解决了我的问题:

开始 —> 运行 —>regsvr32 %SystemRoot%\System32\msxml3.dll

开始 —> 运行 —>regsvr32 %SystemRoot%\SysWOW64\msxml3.dll

在此之前,我尝试了西蒙的上述解决方案,但对我不起作用!

也许将这两种解决方案结合起来就可以了!

于 2014-06-11T15:05:24.087 回答
8

很抱歉恢复死线程,但我在 VS2017 上通过删除项目模板缓存和项目模板缓存文件夹解决了这个问题

%localappdata%\Microsoft\VisualStudio\[BUILD]

然后通过重置视觉工作室设置

Tools>Import and export settings>reset all settings

我还听说关闭“所有项目的轻量级解决方案负载”会有所帮助。

于 2017-09-19T08:09:09.113 回答
5

我想补充一点,在 WinForms 应用程序中打开设计器文件时遇到了这个错误。我的问题是项目中的引用之一是引用自身。显然这可能发生在这里提到

https://social.msdn.microsoft.com/Forums/office/en-US/00aede04-d8cd-4475-8114-4b4792261052/winforms-designer-error-hresult-efail-has-been-returned-from-a-呼叫一个 com 组件

我删除了参考,它工作正常。

于 2016-10-19T15:36:46.193 回答
4

也许这个页面有帮助:

场景二:Microsoft Visual Studio 2010 IDE 在创建或调试 Web 应用程序项目时崩溃。出现上述错误是因为 Visual Studio 2010 的缓存损坏。为了解决此问题,只需从以下位置删除项目缓存:

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplatesCache

C:\Program Files(x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplatesCache

然后运行devenv.exe /setup重新构建缓存。

于 2013-10-31T13:32:14.573 回答
4

嗬!以防其他人在尝试附加到 IIS 网站时遇到此错误。

三重检查您的主机名是否正确,我忘记了(例如)http://my.testsite.com中的“/”

在像我一样重新安装 Visual Studio 之前试试这个。可怕的错误消息。

于 2014-04-08T03:28:14.700 回答
4

我尝试了所有上述解决方案对我都不起作用,我在这里找到了解决方案

  • 通过进入打开 ActivityLog.xml

    C:\Users\{UserName}\AppData\Roaming\Microsoft\VisualStudio\15.{Id} 
    
  • 检查错误是否表明

    "CreateInstance failed for package 
    [ReferenceManagerPackage]Source: 'mscorlib' Description: Could not load type 
     'Microsoft.VisualStudio.Shell.Interop.' from assembly 
     'Microsoft.VisualStudio.Shell.Interop.11.0' 
    
  • 然后gacutil通过 VS Cmd 提示符(管理员模式)运行此命令:

    1. 导航

      C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies   
      
    2. gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll

于 2018-11-01T07:54:37.200 回答
3

似乎要在 Visual Studio 2017 中显示“添加引用”对话框,需要在 GAC 中注册 Microsoft.VisualStudio.Shell.Interop.11.0.dll。您可以按照以下步骤在 GAC 中注册此程序集:

打开 VS2017 的开发命令提示符(确保以管理员身份运行,否则 GAC 注册可能会失败)

将当前目录更改为 Visual Studio 2017 安装的 PublicAssemblies 文件夹。我的是:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies

运行以下命令在 GAC 中注册程序集:

gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\PublicAssemblies>gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll Microsoft (R) .NET 全局程序集缓存实用程序。版本 4.0.30319.0 版权所有 (c) Microsoft Corporation。版权所有。

程序集成功添加到缓存

现在重新启动 VS2017 并尝试再次添加对项目的引用,您应该会看到 Add Reference 对话框出现。

如需更多说明,请点击以下链接

https://camerandwyer.com/2017/05/03/how-to-fix-the-operation-could-not-be-completed-error-adding-reference-to-visual-studio-2017/#more-2286

于 2019-09-05T17:54:25.837 回答
3

我在https://developercommunity.visualstudio.com/content/problem/260196/add-a-reference-raise-error-error-hresult-e-fail-h.html地址上找到了以下解决方案。

它在 VS 2019 中对我有用:

1 以管理员身份打开“VS 2017 的开发人员命令提示符”

2 CD 进入“C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies”

3 运行“gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll”

重新启动后,一切正常。

于 2020-06-11T11:59:14.800 回答
2

从 VS2013 升级到 VS2015 后,我遇到了同样的问题。

我正在从事的项目引用了它自己。虽然 VS2013 不在乎,但 VS2015 不喜欢这样,我得到了那个错误。删除引用后,错误消失了。我花了大约4个小时才发现...

于 2016-11-02T10:51:03.830 回答
2

只需删除包文件夹。这对我有帮助

于 2019-09-20T18:39:51.010 回答
2

根本原因: GAC 中缺少 Microsoft.VisualStudio.Shell.Interop.11.0.dll。

解决方案: 1. 转到开始菜单并打开 Visual Studio 的命令提示符 2. 输入命令gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll 3. 如果您的系统无法找到此 dll 文件,您可以下载它来自 Nuget 包管理器,然后可以提供 dll 的路径

可以了,好了!点击进入,你就完成了!

于 2019-09-22T06:03:09.590 回答
1

我编写了一个简单的程序来打开不同的文件夹,同时单击一些特定的按钮。我将文件属性设置为“内容”和“如果较新则复制”以进行部署。因此,如果我在其他软件中安装了 exe 文件,它实际上会安装其所有资源并正常运行程序。所以,这就是我的程序。在开发此程序时,有时如果我运行程序进行检查,它会显示错误

“HRESULT E_FAIL 已从对 COM 组件的调用中返回”

我无法打开设计器视图。但不知何故,我得到了一个简单的解决方案。我不确定它是否适用于其他人。

这是解决方案:

将整个应用程序文件夹复制到另一个位置。从那里单击应用程序文件。它不起作用,因为它只是一个副本,你不会看到设计师

  1. 从解决方案资源管理器中删除 form1.vb (或者如果在开发过程中更改,则可能是不同的名称)
  2. 在解决方案资源管理器中>右键单击>添加现有项目>浏览从中复制文件夹的文件 Form1.vb(原始位置)
  3. 在新位置运行程序。它会工作

如果您想添加一些东西并且在运行程序后发现相同的错误,则此解决方案的问题,您必须再次将整个应用程序文件夹复制到另一个位置并按照上述步骤操作

于 2014-10-09T15:27:25.890 回答
1

我安装了最新的 Windows 10 SDK 后发生了错误。使用 SDK 8.1 构建 C++ 项目时出现错误。在项目属性中,我切换到最新的 10 SDK。重建。那行得通。改回8.1。重建。没有错误。

于 2019-08-08T14:29:24.057 回答
1

就我而言,这似乎是因为我隐藏了一些文件,但一些相关的窗口仍然打开。

关闭所有窗口并重建解决方案为我修复了它。

于 2021-06-08T00:53:14.583 回答
0

解决问题的步骤:

1.在 VS 2012 中以管理员模式打开您的解决方案/Web 应用程序。

2.转到 IIS 并记下应用程序的设置(例如虚拟目录名称、物理路径、身份验证设置和使用的应用程序池)。

3.从默认网站中删除(右键单击并选择删除)您的应用程序。刷新 IIS。

4.返回 VS 2012 并打开 Web 应用程序的设置(右键单击并选择属性)。

5.选择 Web。在服务器部分确保您选择了“使用本地 IIS Web 服务器”。

6.在 Project Url 文本框中输入您的应用程序路径(http:/// localhostApplication Path)。单击创建虚拟目录。

7.转到 IIS 并应用步骤 2 中记录的设置。刷新 IIS。

8.转到VS 2012,将此项目设置为启动项目,并将适当的页面设置为启动页面。

9.单击运行按钮以调试模式启动项目。

这为我解决了从 VS 2010 迁移到 2012 的 Web 应用程序的问题。希望这有助于任何寻找特定问题的人。

我的机器配置是:IIS 7.5.7600.16385

VS 2012 专业版

Windows 7 企业版(版本 6.1 - 内部版本 7601:Service Pack 1)

于 2013-11-05T03:39:06.450 回答
0

这有时会在我们的 TFS 构建服务器中发生(门控签入)。它是关于工作区文件夹的。我不知道为什么,但工作区文件夹访问有时会损坏。我要解决的问题是删除 TFS 构建工作区并删除相关的工作区文件夹。TFS 构建机器然后为自己创建新的工作空间并修复问题。

Tousif Ahmed 的解决方案应该适用于本地构建。将应用程序文件夹复制到另一个地方应该和我在 TFS 构建机器中做的一样。

于 2015-03-23T11:26:59.663 回答
0

就我而言,此消息似乎可以由 Visual Studio 2013 中的 Intellisense 发出。下面的屏幕截图显示了首次加载客户项目后 VisualStudio 2013 底部的错误。 VS2013

我开始搜索导致此错误的原因,并决定尝试删除 user.vxproj 文件,如上所述。但是我发现项目构建没有问题,然后退出并重新加载项目后,我不再收到错误。所以我假设在我的情况下,由于将项目从客户目录树结构移动到我的本地开发磁盘树结构而导致了一些损坏。这里的关键是,就我而言,问题是暂时的。我什么也没做,问题似乎自行解决了。(通常不是一件可取的事情,因为我没有修复任何东西,所以它可能会回来)。

于 2016-06-27T17:10:22.320 回答
0

我最近花了大约 3 个小时尝试在本地 IIS 上运行的 ASP.NET 应用程序上解决此问题。我指定了“覆盖应用程序根 URL”,并指定了带有结尾正斜杠 (/) 的 url,例如http://my.dev.com/. 如果我保存了项目选项并返回,它会将覆盖的根 url 显示为http://http://my.dev.com. 一旦我删除了最后一个正斜杠,它就开始表现正常并且错误消失了。

于 2016-07-27T14:58:04.063 回答
0

HRESULT E_FAIL 已从对 COM 组件的调用中返回

就我而言,这是因为我的解决方案中有具有相同 GUID 的不同项目。(项目是通过复制/粘贴创建的)

于 2016-10-14T20:06:21.397 回答
0

我的问题表现为打开 Win10 appxmanifest 文件(没有双关语)。只需安装 Windows 10 工具和 SDK(转到新建->项目->选择 Windows->安装工具)即可修复它。

于 2016-11-04T16:08:08.787 回答
0
  1. 添加在 x86 架构或 64 位系统上启动的开发,然后它也将在 32 位系统上运行。
  2. 但是如果您添加在 32 位系统上启动的开发,然后您想对 64 位源代码进行更改注意:如果您在服务器系统上连接了 SAP 许可证,则通过服务管理器设置端口并设置服务器名称,否则系统将给出错误:

连接上下文:- 检索具有 CLSID {632F4591-AA62-4219-8FB6-22BCF5F60090} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。

于 2016-11-16T09:39:41.347 回答
0

我通过删除 ComponentModelCache 文件夹解决了同样的问题

  1. 关闭 Visual Studio(如果你还没有因为绝望而这样做)
  2. 打开文件资源管理器窗口并导航到您的 AppData 文件夹。您可以通过以下方式到达:
    1. 在搜索栏中,键入%APPDATA%/..并按 Enter
    2. 或者,导航到C:\Users\\AppData
  3. 进入Local\Microsoft\VisualStudio\<version>Visual Studio 2013 的 12.0 所在的位置。
  4. 删除 ComponentModelCache 文件夹。

从这里:http ://withmartin.net/how-visual-studios-component-model-cache-can-be-a-pain/

于 2017-06-07T16:48:05.450 回答
0

不确定错误的确切重现步骤(HRESULT E_FAIL 已从对 COM 组件的调用中返回),但我的解决方案是:

  1. 关闭 Visual Studio 并通过控制面板修复它。
  2. 重启系统

重新启动后,错误消失了。

于 2017-12-19T21:43:12.097 回答
0

我在 Visual Studio 2017 中遇到了同样的问题,请按照以下步骤操作:

  1. 开始——> 跑——> regsvr32 %SystemRoot%\System32\msxml3.dll

  2. 开始——> 跑——> regsvr32 %SystemRoot%\SysWOW64\msxml3.dll

  3. 清理项目。

  4. 重新启动视觉工作室。

    第 1 步和第 2 步是从 Besnik Kastrati 帖子中复制的。

于 2018-12-02T12:11:05.993 回答
0

我找到了这个答案,单击顶部的 Ctrl+Alt+J 单击 (...) 现在您可以从 Browse 、 .Net 或其他添加 dll 单击确定按钮后单击(添加到解决方案资源管理器中选定项目中的引用)(这是一个绿色的加号“+”按钮)

于 2019-06-13T22:24:11.060 回答
0

尝试安装之前下载并安装在另一个项目中的 nuget 包时出现此错误。

单击“工具”>“选项”>“NuGet 包管理器”下的“清除所有 NuGet 缓存”为我解决了这个问题

于 2019-12-10T10:00:08.090 回答
0

我在安装 VS2019 后遇到了这个错误,但是在尝试打开一个针对 VS2015 的大型解决方案(20 多个项目)时,包括 vcxproj 和 csproj 项目。csproj 全部加载正常,而 vcxproj 全部因 OP 错误而失败。删除 .vs 文件夹不起作用。

起作用的是在“浏览数据库后备”设置下设置 VC++ 的“后备位置”。

Tools (menu)
-Options...
--Text Editor
---C/C++
---Advanced
----Browsing Database Fallback
-----Fallback Location

我将我的设置为D:\VC++\v16. 我将 v140 用于 VS2015,将 v141 用于 VS2017。还要设置“始终使用”和“不警告”。

于 2020-06-13T04:59:24.157 回答
0

从 VS2017 更新到 VS2019 时遇到了这个问题

对我来说,问题只是通过deleting the .VC.db项目文件解决了。

于 2020-09-10T16:15:54.610 回答
0

我也有类似的问题,发现所有解决方案都无法在我的系统上运行。我观察到我的系统中安装了 2 个 Visual Studio 版本(2012 和 2019)。所以我只是卸载了 2012 并重新启动了我的系统。自动删除此错误。

如果上述所有解决方案都失败了,包括使用 cmd 行的解决方案,请尝试此方法。

于 2021-11-08T10:13:20.037 回答