【问题标题】:Error HRESULT E_FAIL has been returned from a call to a COM component VS2012 when debugging调试时调用 COM 组件 VS2012 返回了错误 HRESULT E_FAIL
【发布时间】:2012-11-13 13:01:04
【问题描述】:

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

“调用 COM 组件返回了错误 HRESULT E_FAIL”。

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

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

我可以缩小到以下范围

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

有人有什么想法吗?

【问题讨论】:

  • 您能发布您的升级日志文件吗?还有你在解决方案中的项目结构和错误的图像。
  • 你有没有设法解决这个问题?我遇到了完全相同的问题,正在拔头发!
  • 不,我不得不继续使用 VS2010 - 该项目正在重新编写,因此当前的开发几乎停止了......
  • 下面最近删除的答案表明 Windows 更新可以解决此问题。
  • 嗨,您接受了一个答案,但@TimHall 的解决方案可能更容易且干扰更少。你试过了吗?

标签: visual-studio visual-studio-2012


【解决方案1】:

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

以下解决方案对我有用:

  • 关闭 Visual Studio。
  • 进入项目根目录,删除.vs目录。
  • 启动 Visual Studio 并打开解决方案。
  • 构建现在应该可以工作了。

【讨论】:

  • 为我工作。删除 .vs 目录后不要忘记关闭 VS。 .vs 目录是隐藏的,顺便说一句。
  • Cmake OpenCV 构建文件夹中的 VS 2019 中的 C++。从根目录中删除(隐藏).vs 文件夹并且它有效。你是真正的超级英雄!
【解决方案2】:

我最近经常遇到这种情况。我不得不创建一个新文件并将代码移动到新文件以解决它。

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

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

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

【讨论】:

  • 解决方案对我有用(VS 2013 - Winforms 应用程序)
  • 试过了,但这是唯一对我有用的解决方案..谢谢@Tim Hall
  • 也适用于 VS 2017。
  • 很高兴这仍然对人们有所帮助,我在VS2017中从未体验过,但当我得到它时非常烦人。
  • 谢谢,删除了.vs 目录树,它修复了 VS2017 中的构建问题,但出现了同样的错误。
【解决方案3】:

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

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

【讨论】:

  • Bingo - 无法相信这会导致问题 - 感谢您发布此内容。
  • 对 MVS2017 的一点澄清。转到工具 -> 选项...然后项目和解决方案 -> Web 项目,然后取消选中“在服务器资源管理器中自动显示来自 web.config 的数据连接...”,然后重新编译。 2019 年的问候,就像魅力一样!
  • 我试过这个 Wormer,但它对我不起作用。!!!
  • 删除 csproj.user 没有帮助
【解决方案4】:

这解决了我的问题:

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

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

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

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

【讨论】:

  • 这对我也有用。我不知道 VS 是如何进入这种状态的,但这让我摆脱了这种状态。打开解决方案时出现此错误
【解决方案5】:

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

%localappdata%\Microsoft\VisualStudio\[BUILD]

然后通过

重置visual studio设置
Tools>Import and export settings>reset all settings

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

【讨论】:

  • 这对我也有用。我刚刚重命名了所有具有 Visual Studios 的文件夹,VS 重新创建了所有文件夹,并且我的错误消失了。谢谢!
  • “工具>导入和导出设置>重置所有设置”对我有用,tyvm。
【解决方案6】:

我想补充一点,我在 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-call-to-a-com-component

我删除了引用,它工作正常。

【讨论】:

  • 这不是仅链接的答案。它描述了一种可能的解决方案,并提供了链接作为参考。
  • 这也对我有用。我的 .proj 文件本身就有这个神奇的参考条目,它自我上次 git 提交以来就出现了。 HintPath 指向项目的 obj\Debug 文件夹。删除此条目并重建,现在我所有的设计师都在工作。
  • 这对我也有用。 Project 有一个 UserControl 对自身的引用。必须删除参考,清理项目,然后重建。 WinForm 现在打开了!
【解决方案7】:

也许this page 有帮助:

场景二: 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 重新构建缓存。

【讨论】:

  • 我刚刚遇到了一个类似的问题,这为我解决了这个问题。谢谢西蒙! (我用的是VS2013,供参考)
【解决方案8】:

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

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

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

【讨论】:

  • 在我的例子中,我试图覆盖应用程序根 URL 以将 GET 参数添加到启动的 URL。那是错误的地方。应该在同一个属性页面上设置一个起始 URL。
【解决方案9】:

我尝试了以上所有解决方案都对我不起作用,我找到了解决方案here

  • 通过进入打开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' 
    
  • 然后通过 VS Cmd 提示符(管理员模式)运行这个gacutil 命令:

    1. 导航到

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

【讨论】:

  • 这是唯一对我有用的解决方案(VS 2017 专业版/Windows 10)。我还在活动日志中看到了 mscorlib 错误。修复并重置所有设置均无效。
【解决方案10】:

似乎要在 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) 微软公司。保留所有权利。

程序集成功添加到缓存中

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

欲了解更多信息,请点击以下链接

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

【讨论】:

  • 经过所有努力。这让我一见钟情。
【解决方案11】:

我在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”

重启后一切正常。

【讨论】:

  • 这对我有用,将 Interop.11.0.dll 和 Interop.12.0.dll 添加到我的 Visual Studio 2019 的 GAC
【解决方案12】:

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

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

【讨论】:

  • 链接已失效。
  • 谢谢,我删除了链接。由于我为我解决此问题的方式就在链接下,因此至少我的回答并非完全没用。
【解决方案13】:

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

【讨论】:

    【解决方案14】:

    根本原因: 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的路径

    一切就绪!点击回车就完成了!

    【讨论】:

      【解决方案15】:

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

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

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

      解决办法如下:

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

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

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

      【讨论】:

        【解决方案16】:

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

        【讨论】:

          【解决方案17】:

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

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

          【讨论】:

          • 这个在 VS 2008 中为我工作。我想表达我的感谢 - 即使这个论坛有点老了,有人可能会觉得这真的很有帮助。
          【解决方案18】:

          解决问题的步骤:

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

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

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

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

          5.Select Web.In Servers 部分确保您已选择“Use Local IIS Web Server”。

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

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

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

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

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

          我的机器配置是: IIS 7.5.7600.16385

          VS 2012 专业版

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

          【讨论】:

          • 我没有找到上面第 5 步中提到的任何“Web.In 服务器”。唯一的“设置”(第 4 步)是属性页 (Shift-F4),在第 8 步中松散地引用了它。洞察力?
          【解决方案19】:

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

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

          【讨论】:

          • 我们不使用 TFS,这是在我们遇到问题的另一台开发人员机器上
          【解决方案20】:

          在我的例子中,这条消息似乎可以由 Visual Studio 2013 中的 Intellisense 发出。下面的屏幕截图显示了第一次加载客户项目后 VisualStudio 2013 底部的错误。

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

          【讨论】:

          • 我的回答不清楚。我尝试删除 user.vxproj 文件,但没有效果。我的经验是问题在构建后自行解决,退出 vs2013 然后重新启动。接受的答案不适用于我的情况,如果您加载、构建、退出、重新加载,问题似乎可以自行纠正。
          【解决方案21】:

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

          【讨论】:

            【解决方案22】:

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

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

            【讨论】:

              【解决方案23】:

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

              【讨论】:

                【解决方案24】:
                1. 添加在 x86 架构或 64 位系统上启动的开发,然后它也将在 32 位系统上运行。
                2. 但是如果您添加在 32 位系统上启动的开发,然后您想对 64 位源代码进行更改 注意:如果您在服务器系统上连接了 SAP License,则通过服务管理器设置端口并设置服务器名称,否则系统会报错:

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

                【讨论】:

                  【解决方案25】:

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

                  1. 关闭 Visual Studio(如果您还没有因为绝望而这样做)
                  2. 打开文件资源管理器窗口并导航到您的 AppData 文件夹。您可以通过以下方式到达:
                    1. 在搜索栏中,输入%APPDATA%/..,然后按回车
                    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/

                  【讨论】:

                    【解决方案26】:

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

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

                    重启后,错误消失了。

                    【讨论】:

                      【解决方案27】:

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

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

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

                      3. 清理项目。

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

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

                      【讨论】:

                        【解决方案28】:

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

                        【讨论】:

                          【解决方案29】:

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

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

                          【讨论】:

                          • 同样,删除解决方案包文件夹的内容可能会有所帮助。就我而言,我有一个文件夹,里面什么都没有(可能在某个时候被签入),这导致了问题。
                          • 2019 年清除缓存对我不起作用。
                          【解决方案30】:

                          我在安装 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。同时设置“始终使用”和“不警告”。

                          【讨论】:

                            猜你喜欢
                            • 2023-03-15
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2021-08-18
                            • 2019-07-03
                            相关资源
                            最近更新 更多