在调试时,调用 COM 组件 VS2012时返回了错误 HRESULTE_FAIL

从 VisualStudio2010迁移到2012的项目调试出现问题。每次我去调试它,我得到的错误消息:

“对 COM 组件的调用已返回错误 HRESULT T E _ FAIL”。

在本地 IIS 服务器上编译和运行应用程序可以正常工作——只是不能进行调试。

除了迁移到 VS2012之外的另一个变化是,我现在使用 TeamFoundationServer 进行源代码控制和问题跟踪——但是我看不出这会对它产生什么影响。

我可以把范围缩小到以下几点

  • 该项目文件-它已经从 VS 2003作为一个网站项目迁移,并已被切割和改变了不同的版本
  • Crystal Report 运行时库/其他一些库

有人有主意吗?

286409 次浏览

也许 这一页有所帮助:

情景二: MicrosoftVisualStudio2010IDE 在创建或调试 Web 应用程序项目时崩溃。 发生上述错误是因为 VisualStudio2010缓存损坏。为了解决这个问题,只需从下面的位置删除项目 Cache:

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重新构建缓存。

解决问题的步骤:

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

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

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

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

5. 选择 WebinServers 部分,确保选择了“使用本地 IISWeb 服务器”。

在 Project Url 文本框中输入应用程序路径( http://abc0/application 路径) ,点击创建虚拟目录。

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

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

点击运行按钮以调试模式启动项目。

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

我的机器配置是: IIS 7.5.7600.16385

VS 2012专业版

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

万一其他人在尝试连接到 IIS 网站时得到这个错误。

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

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

这解决了我的问题:

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

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

在此之前,我尝试上述解决方案从西蒙,但不适合我!

也许这两种解决方案的结合起到了作用!

我写了一个简单的程序,打开不同的文件夹,同时点击一些特定的按钮。为了进行部署,我将文件属性设置为“ content”和“ copy if new”。因此,如果我在其他软件中安装 exe 文件,它实际上安装了所有的资源,并运行程序良好。 这都是因为我的项目。在开发这个程序的时候,如果我运行这个程序来检查,它会显示错误

“已从对 COM 组件的调用返回 HResult T E _ FAIL”

我打不开设计师视图。但我有个简单的解决办法。我不确定这对其他人是否有用。

解决办法如下:

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

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

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

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

Tousif Ahmed 的解决方案应该适用于本地建设。复制应用程序文件夹到另一个地方应该做同样的事情,我正在做的 TFS 构建机器。

我最近经常碰到这种事。我不得不创建一个新文件并将代码移动到新文件以绕过它。

我用 删除解决方案的 suo 文件修复了它(据我所知,它只是存储 IDE 中打开的文件之类的信息,删除它不会造成真正的损害)。

我的档案看起来有问题。(IDE 不会记得重新启动时打开了什么文件。它的大小是1.7 MB,即使对于我的40个项目解决方案来说也似乎很大,因为它很少同时打开超过50个文件。)

编辑: 我最近不得不在 VS2017中这样做,但是由于另一个原因,它需要更长的时间来构建,并且需要5分多钟来停止一个调试会话,删除那个讨厌的 SUO 文件修复了它,现在任何时候 VS 行为怪异删除 SUO 是我的第一个调用端口。

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

在其他一些情况下,为了修复此错误,我转到项目属性中的 Web 选项卡并选中“ UseVisualStudioDevelopmentServer”和“自动分配端口”。之后,我需要重建项目和重新启动 VS

在我的例子中,这条消息似乎可以由 VisualStudio2013中的 Intellisense 发出。下面的屏幕截图显示了客户项目第一次加载后 VisualStudio2013底部的错误。 VS2013 "ERROR-HRESULT-E Screenshot

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

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

已从对 COM 组件的调用中返回 HRESULT T E _ FAIL

在我的案例中,这是因为我的解决方案中有不同的具有相同 GUID 的项目。(项目以复制/粘贴方式创建)

我想补充的是,我遇到了这个错误时,打开设计器文件在 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

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

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

我参与的项目提到了自己。虽然 VS2013不在乎,VS2015不喜欢,我得到了这个错误。删除引用之后,错误消失了。我花了4个小时才发现..。

我的问题在打开 Win10 appxmanifest 文件时显现出来(没有双关语的意思)。只需安装 Windows10工具和 SDK (转到 New-> Project-> Select Windows-> Install Tools)即可修复。

  1. 添加在 x86架构或64位系统上启动的开发,然后它也将在32位系统上运行。
  2. 但是如果你在32位系统上启动了开发,然后你想在64位的源代码上做一些改变 注意: 如果您在服务器系统上连接了 SAP 许可证,那么请通过服务管理器设置端口和服务器名称,否则系统将出现错误:

连接上下文:-检索组件的 COM 类工厂 与 CLSID {632F4591-AA62-4219-8FB6-22BCF5F60090}一起失败 以下错误: 80040154类未注册(异常来自 结果: 0x80040154(regDB _ E _ CLASSNOTREG)。

我通过删除 Component entModelCache 文件夹修复了同样的问题

  1. 关闭 Visual Studio (如果你还没有因为绝望而这样做的话)
  2. 打开一个文件资源管理器窗口并导航到 AppData 文件夹:
    1. 在搜索栏中,键入 %APPDATA%/..并按回车键
    2. 或者,导航到 C:\Users\\AppData
  3. 进入 Local\Microsoft\VisualStudio\<version>,其中 Visual Studio 2013是12.0。
  4. 删除 Component entModelCache 文件夹。

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

对不起,重新启动死线程,但我解决了这在 VS2017删除项目模板缓存和项目模板缓存文件夹中

%localappdata%\Microsoft\VisualStudio\[BUILD]

然后通过

Tools>Import and export settings>reset all settings

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

不能确定错误的确切复制步骤(从对 COM 组件的调用中返回了 HResult T E _ FAIL) ,但是对我来说解决方案是:

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

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

我尝试了以上所有的解决方案都不适合我,我找到了解决方案 给你

  • 打开 ActivityLog.xml

    C:\Users\{UserName}\AppData\Roaming\Microsoft\VisualStudio\15.{Id}
    
  • Check if error states that

    "CreateInstance failed for package
    [ReferenceManagerPackage]Source: 'mscorlib' Description: Could not load type
    'Microsoft.VisualStudio.Shell.Interop.' from assembly
    'Microsoft.VisualStudio.Shell.Interop.11.0'
    
  • Then run this gacutil command through VS Cmd prompt (admin mode):

    1. Navigate to

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

我在 Visual Studio 2017中也遇到过同样的问题, 请遵循以下步骤:

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

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

  3. 清理工程项目。

  4. 重启视觉工作室。

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

我在 VisualStudio2019中的 c + + 项目中遇到过同样的问题。

下面的解决方案对我很有效:

  • 关闭 VisualStudio。
  • 转到项目的根文件夹并删除.vs 目录。
  • 启动 VisualStudio 并打开解决方案。
  • 构建现在应该可以工作了。

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

错误发生在我安装最新的 Windows10SDK 之后。我是在使用 SDK 8.1构建一个 C + + 项目时得到这个错误的。在 Project 属性中,我切换到最新的10SDK。重建。成功了。变回8.1了。重建。没有错误。

似乎在 VisualStudio2017中打开添加引用对话框时,Microsoft。VisualStudio.壳牌。Interop.11.0.dll 需要在 GAC 注册。您可以按照以下步骤在 GAC 中注册该程序集:

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

将工作目录更改为 VisualStudio2017安装的“公共程序集”文件夹:

C: Program Files (x86) MicrosoftVisualStudio2017企业通用7 IDE PublicAssembly

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

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

C: Program Files (x86) Microsoft Visual Studio 2017 Community Common7 IDE PublicAssembly > gacutil-i Microsoft. VisualStudio. Shell. Interop.11.0. dll Microsoft (R) . NET 全局程序集缓存实用程序. Version 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

删除包裹文件夹,对我有帮助

根本原因: 微软.VisualStudio.Shell.Interop.11.0.dll 在 GAC 中丢失了。

解决方案: 1. 转到“开始”菜单并打开 VisualStudio 的“命令提示符” 2. 输入命令 Gacutil-i Microsoft. VisualStudio. Shell. Interop.11.0. dll 3.如果你的系统找不到这个 dll 文件,你可以从 Nuget 软件包管理器下载,然后提供 dll 的路径

都准备好了,按回车键就搞定了!

当我试图安装一个我之前下载并安装在另一个项目中的 nuget 包时,我得到了这个错误。

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

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

在 VS 2019中,这对我很管用:

1作为管理员打开“ VS2017开发者命令提示符”

2 CD 到“ C: Program Files (x86) MicrosoftVisualStudio2017 Professional Common7 IDE PublicAssembly”

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

重新启动之后,一切都很顺利。

我在安装 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了。其中 VS2015使用 v140,VS2017使用 v141。还设置“始终使用”和“不要警告”。

我有个问题 从 VS2017升级到 VS2019

对我来说,这个问题是简单地解决了 deleting the .VC.db文件的项目。

在我的情况下,似乎是因为我隐藏了一些文件,但一些相关的窗口仍然打开。

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

我也有类似的问题,发现所有的解决方案都不能在我的系统上工作。 我注意到我的系统中安装了2个 VisualStudio 版本(2012年和2019年)。所以我卸载了2012重启了我的系统。自动删除此错误。

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