Ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента VS2012 при отладке


97

У меня проблема с отладкой проекта, перенесенного с Visual Studio 2010 на 2012. Каждый раз, когда я иду отладить его, я получаю сообщение об ошибке:

«Ошибка HRESULT E_FAIL возвращена из вызова COM-компонента».

Компиляция и запуск приложения на локальном сервере IIS работает нормально - просто не может отлаживать.

Другое изменение, помимо перехода на VS2012, заключается в том, что теперь я использую Team Foundation Server для управления версиями и отслеживания проблем, но я не вижу, как это повлияет на это.

Я могу сузить его до следующего

  • Файл проекта - он был перенесен из VS 2003 в качестве проекта веб-сайта и был вырезан и изменен в разных версиях.
  • Библиотека времени выполнения Crystal Report / другая библиотека

У кого-нибудь есть идеи?


Можете ли вы опубликовать файл журнала обновления? Также структура проекта у вас есть в решении и изображение ошибки.
Nexus23

Удалось ли вам когда-нибудь в этом разобраться? Я сталкиваюсь с той же проблемой и вырываю волосы!
Крис Филлипс,

Нет, мне пришлось продолжать использовать VS2010 - проект переписывается, поэтому текущая разработка практически остановлена ​​...
Мэтт

Недавно удаленный ответ ниже предполагает, что Центр обновления Windows исправит это.
Halfer

Привет, вы приняли ответ, но решение @TimHall может быть проще и менее навязчивым. Ты это пробовал?
Spencer

Ответы:


57

Я удалил файлы csproj.user, и у меня это сработало.

В некоторых других случаях, чтобы исправить эту ошибку, я перехожу на вкладку «Интернет» в свойствах проекта и устанавливаю флажки «Использовать Visual Studio Development Server» и «Автоматически назначать порт». После этого мне нужно перестроить проект и перезапустить VS


Бинго - не могу поверить, что это вызвало проблему - спасибо за публикацию.
Мэтт

7
Небольшое уточнение по MVS2017. Перейдите в Инструменты -> Параметры ... затем Проекты и решения -> Веб-проекты, затем снимите флажок «Автоматически отображать подключения к данным из web.config в обозревателе серверов ...», затем перекомпилируйте. Привет с 2019 года, работает как шарм!
Вормер

Я пробовал этот вормер, но у меня как-то не получилось. !!!
Абхиджит Синха,

Нейтре помогло удаление csproj.user
Абхиджит Синха

74

Я часто получаю это в последнее время. Мне пришлось создать новый файл и переместить код в новый файл, чтобы обойти это.

Я исправил это, удалив файл suo решения (насколько я могу судить, он просто хранит информацию, например, какие файлы открыты в среде IDE и т. Д., И его удаление не наносит реального ущерба).

Мой файл был поврежден. (Среда IDE не запомнила, какие файлы были открыты при перезапуске. Его размер составлял 1,7 МБ, что кажется большим, даже для моего решения для 40 проектов, в котором редко открывается более 50 файлов одновременно.)

Изменить: мне совсем недавно пришлось сделать это в VS2017, но по другой причине сборка занимала больше времени и потребовалось 5+ минут, чтобы остановить сеанс отладки, удаление этого надоедливого файла suo исправило его прямо сейчас, теперь в любое время VS действует странно, удаляя SUO это мой первый порт захода.


1
Решения сработали для меня (VS 2013 - приложение Winforms)
Никос Цокос

Пробовал все, но это единственное решение, которое сработало для меня .. спасибо @ Тим Холл
Малик Халил

Спасибо! Это мне помогло
rhedin

Также работает в VS 2017.
ctwheels

4
Спасибо, удалено .vsдерево каталогов и исправлена ​​проблема сборки в VS2017 с той же ошибкой.
Павел Мачиняк

65

У меня была такая же проблема с проектом c ++ в Visual Studio 2019.

У меня сработало следующее решение:

  • Закройте Visual Studio.
  • Перейдите в корневую папку проекта и удалите каталог .vs.
  • Запустите Visual Studio и откройте решение.
  • Теперь сборка должна работать.

3
Работал у меня. Не забудьте закрыть VS после удаления каталога .vs. Каталог .vs скрыт, BTW.
Хари

Также C ++ в VS 2019 из папки сборки Cmake OpenCV. удалила (скрыла) папку .vs из корневого каталога, и это сработало. ВЫ настоящие супергерои!
Тодд-ЭКЮ

10

Это решило мою проблему:

Пуск -> Выполнить -> regsvr32 %SystemRoot%\System32\msxml3.dll

Пуск -> Выполнить -> regsvr32 %SystemRoot%\SysWOW64\msxml3.dll

До этого я попробовал решение от Саймона, но у меня не сработало!

Возможно, сочетание этих двух решений сделало свою работу!


2
Это сработало и для меня. Не знаю, как VS попал в такое состояние, но это меня вывело из него. Я получил эту ошибку при открытии решения
the_mandrill 02

6

Извините за возрождение мертвого потока, но я решил это на VS2017, удалив кеш шаблона проекта и папки кеша шаблонов элементов в

%localappdata%\Microsoft\VisualStudio\[BUILD]

Затем сбросьте настройки Visual Studio с помощью

Tools>Import and export settings>reset all settings

Также я слышал, что отключение «Загрузка облегченного решения для всех проектов» может помочь.


1
это сработало и для меня. Я просто переименовал все папки, в которых были Visual Studios и VS, заново создал все папки, и мои ошибки исчезли. Благодарность!
TravisWhidden

"Инструменты> Импорт и экспорт настроек> сбросить все настройки" У меня сработало, тывм.
Jhollman

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- компонент вызова

Я удалил ссылку, и она работает нормально.


1
Это не ответ только по ссылке. Он описывает возможное решение и предоставляет ссылку в качестве справочного материала.
Роберт Колумбия

1
Это тоже сработало для меня. В моем файле .proj была эта волшебная справочная запись, которая появилась после моего последнего коммита git. HintPath указывает на папку obj \ Debug проекта. Убрал эту запись и перестроил, теперь все мои дизайнеры работают.
Карл

1
Это сработало и для меня. У проекта была ссылка на себя для UserControl. Пришлось удалить ссылку, очистить проект, а затем перестроить. WinForm теперь открывается!
Дуг Кнудсен

4

Возможно, эта страница поможет:

Сценарий 2. В среде IDE Microsoft Visual Studio 2010 происходит сбой при создании ИЛИ отладке проекта веб-приложения. Эта ошибка возникает из-за поврежденного кеша 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, для справки)
JR Smith

4

Дох! Если кто-то еще получает эту ошибку при попытке подключиться к веб-сайту IIS.

Тройной проверьте правильность имени вашего хоста, я забыл '/' в (например) http://my.testsite.com

Попробуйте это перед повторной установкой Visual Studio, как это сделал я .. Ужасное сообщение об ошибке ..


1
В моем случае я попытался переопределить корневой URL-адрес приложения, чтобы добавить параметр GET к запущенному URL-адресу. Это было неподходящее место для этого. Следует установить начальный URL на той же странице свойств.
Кэт

3

Я пробовал все вышеперечисленные решения, у меня ничего не работает, я нашел решение здесь

  • Откройте 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


1
Это было единственное решение, которое сработало для меня (VS 2017 professional / windows 10). Я также видел ошибку mscorlib в журнале активности. Восстановить и сбросить все настройки не получилось.
Ник Ван Брант

2

У меня была такая же проблема после обновления с VS2013 до VS2015.

Проект, над которым я работал, ссылался на себя. VS2013 это не волновало, VS2015 это не понравилось, и я получил эту ошибку. После удаления ссылки ошибка исчезла. Мне потребовалось около 4 часов, чтобы это выяснить ...


Линк мертв.
Fake Name

Спасибо, ссылку удалил. Поскольку способ, которым я решил эту проблему для меня, был прямо по ссылке, по крайней мере, мой ответ не был полностью бесполезным.
yiev 08

2

Похоже, что для вызова диалогового окна «Добавить ссылку» в Visual Studio 2017 необходимо зарегистрировать Microsoft.VisualStudio.Shell.Interop.11.0.dll в GAC. Вы можете выполнить следующие действия, чтобы зарегистрировать эту сборку в GAC:

Откройте командную строку разработки для VS2017 (убедитесь, что вы запускаете от имени администратора, иначе регистрация GAC может завершиться ошибкой)

Измените текущий каталог на папку PublicAssemblies для вашей установки Visual Studio 2017. Мой был:

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. Все права защищены.

Сборка успешно добавлена ​​в кеш

Теперь перезапустите 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


После всех усилий. Это сработало у меня в первое мгновение.
Йешвант Мудхолкар

2

Я нашел решение ниже по адресу https://developercommunity.visualstudio.com/content/problem/260196/add-a-reference-raise-error-error-hresult-e-fail-h.html .

Это сработало для меня в VS 2019:

1 Откройте «Командную строку разработчика для VS 2017» от имени администратора.

2 компакт-диска в папку "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ PublicAssemblies"

3 Запустите "gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll"

После перезагрузки все заработало.


1

Я написал простую программу, чтобы открывать другую папку, нажимая на определенные кнопки. Я сделал свойства файла как «содержимое» и «копировать, если новее», чтобы выполнить развертывание. Поэтому, если я установил exe-файл в другое программное обеспечение, он фактически установит все свои ресурсы и нормально запустит программу. Итак, это все о моей программе. При разработке этого иногда, если я запускаю программу для проверки, она показывала ошибку

"HRESULT E_FAIL был возвращен из вызова компонента COM"

и я не мог открыть представление дизайнера. Но как-то у меня получилось легкое решение. Я не уверен, сработает ли это для других или нет.

Вот решение:

Скопируйте всю папку приложения в другое место. щелкните по файлу приложения оттуда. это не сработает, так как это просто копия, и вы не увидите дизайнера

  1. В обозревателе решений удалите form1.vb (или может быть другое имя, если оно было изменено во время разработки)
  2. В проводнике решений> щелкните правой кнопкой мыши> добавьте существующий элемент> просмотрите файл Form1.vb, откуда скопирована папка (исходное расположение)
  3. запустите программу в новом месте. Это будет работать

Проблема с этим решением, если вы хотите что-то добавить и после запуска программы вы обнаружите ту же ошибку, вам нужно снова скопировать всю папку приложения в другое место и выполнить указанные выше действия.


1

Ошибка возникла у меня после того, как я установил последнюю версию Windows 10 SDK. Я получал ошибку при создании проекта C ++ с использованием SDK 8.1. В свойствах проекта я переключаюсь на последнюю версию 10 SDK. перестроить. Это сработало. Сменил обратно на 8.1. Восстановить. Нет ошибок.



1

Основная причина: Microsoft.VisualStudio.Shell.Interop.11.0.dll отсутствует в GAC.

Решение: 1. Перейдите в меню «Пуск» и откройте командную строку для Visual Studio 2. Введите команду gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll. 3. Если ваша система не может найти этот файл dll, вы можете загрузить это из диспетчера пакетов Nuget, а затем может предоставить путь к dll

Все готово! нажмите Enter, и все готово!


0

Действия по устранению проблемы:

1. Откройте свое решение / веб-приложение в VS 2012 в режиме администратора.

2. Перейдите в IIS и запишите параметры вашего приложения (например, имя виртуального каталога, физический путь, настройки аутентификации и используемый пул приложений).

3. Удалите (щелкните правой кнопкой мыши и выберите «Удалить») ваше приложение с веб-сайта по умолчанию. Обновите IIS.

4. Вернитесь в VS 2012 и откройте настройки (щелкните правой кнопкой мыши и выберите свойства) для своего веб-приложения.

5. Выберите Web. В разделе «Серверы» убедитесь, что вы выбрали «Use Local IIS Web Server».

6. В текстовом поле Project Url введите путь к вашему приложению (http: // localhost/ Application Path). Щелкните Создать виртуальный каталог.

7. Перейдите в IIS и примените настройки, указанные на шаге 2. Обновите IIS.

8. Перейдите в VS 2012 и установите этот проект как запускаемый проект с соответствующей страницей в качестве начальной страницы.

9. Нажмите кнопку «Выполнить», чтобы запустить проект в режиме отладки.

Эта проблема решена для меня для веб-приложения, которое было перенесено с VS 2010 на 2012. Надеюсь, это поможет всем, кто ищет конкретную проблему.

Конфигурация моей машины: IIS 7.5.7600.16385

VS 2012 Профессиональный

Windows 7 Enterprise (версия 6.1 - сборка 7601: пакет обновления 1)


Я не нахожу никаких «Web.In Servers», упомянутых в шаге 5 выше. Единственные «настройки» (шаг 4) - это страница свойств (Shift-F4), на которую в общих чертах ссылаются в шаге 8. Insights?
MacSpudster

0

Это происходит на нашем сервере сборки TFS несколько раз (закрытая регистрация). Речь идет о папке рабочего пространства. Я не знаю почему, но доступ к папке рабочего пространства иногда нарушается. Чтобы исправить проблему, я удаляю рабочие области сборки TFS и удаляю соответствующие папки рабочей области. Затем машина сборки TFS создает для себя новые рабочие области, и проблема устраняется.

Решение Тоусифа Ахмеда должно работать для локальных сборок. Копирование папки приложения в другое место должно делать то же самое, что я делаю на машине сборки TFS.


Мы не используем TFS, и это на другом компьютере разработчика, на котором у нас возникла проблема
Мэтт

0

В моем случае кажется, что это сообщение может быть выдано Intellisense в Visual Studio 2013. На снимке экрана ниже показана ошибка в нижней части VisualStudio 2013 после первой загрузки проекта клиента. VS2013 "ERROR-HRESULT-E Скриншот

Я начал поискать в Google, что вызывает эту ошибку, и решил попробовать удалить файлы user.vxproj, как упоминалось выше. Однако я обнаружил, что проект построен без проблем, а затем после выхода и повторной загрузки проекта я больше не получал ошибку. Итак, я предполагаю, что в моем случае это было некоторое повреждение из-за перемещения проекта из древовидной структуры каталогов клиентов в мою локальную древовидную структуру диска разработки. Ключевым моментом здесь является то, что в моем случае проблема была временной. Я НИЧЕГО не сделал, и проблема, казалось, разрешилась сама собой. (Обычно это нежелательно, так как я ничего не исправлял, чтобы это могло вернуться).


Я не совсем ясно ответил. Я попытался удалить файлы user.vxproj, но это не помогло. По моему опыту, проблема разрешилась сама собой после сборки, выхода из vs2013 и перезапуска. Принятый ответ НЕ сработал для моего случая, и, похоже, проблема может исчезнуть сама собой, если вы загрузите, создадите, выйдите, перезагрузите.
Росс Янгблад

0

Недавно я потратил около 3 часов, пытаясь исправить эту проблему в моем приложении ASP.NET, работающем на локальном IIS. У меня был указан «Переопределить корневой URL-адрес приложения», и я указал URL-адрес с конечной косой чертой (/), например http://my.dev.com/. Если я сохраню параметры проекта и вернусь в него, переопределенный корневой URL-адрес будет отображаться как http://http://my.dev.com. Как только я удалил последнюю косую черту, он начал вести себя нормально, и ошибка исчезла.


0

HRESULT E_FAIL был возвращен из вызова COM-компонента

В моем случае это произошло потому, что в моем решении были разные проекты с одинаковым GUID. (Проект был создан методом копирования / вставки)


0

Моя проблема проявилась при открытии файла Win10 appxmanifest (без каламбура). Простая установка инструментов Windows 10 и SDK (перейдите в New-> Project-> Select Windows-> Install Tools) исправила это.


0
  1. Добавьте разработку, начатую на архитектуре x86 или 64-битной системе, тогда она также будет работать на 32-битной системе.
  2. но если вы добавляете разработку, инициированную в 32-битной системе, а затем вы хотите внести изменения в исходный код в 64-битной системе. Примечание: если вы подключены к SAP License в серверной системе, тогда установите порт и установите имя сервера через диспетчер служб, иначе система выдаст ошибка:

Контекст подключения: - Получение фабрики классов COM для компонента с CLSID {632F4591-AA62-4219-8FB6-22BCF5F60090} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).


0

Я исправил ту же проблему, удалив папку ComponentModelCache.

  1. Закройте Visual Studio (если вы еще не сделали этого от отчаяния)
  2. Откройте окно проводника и перейдите в папку AppData. Добраться можно:
    1. В строке поиска введите %APPDATA%/..и нажмите ввод
    2. Или перейдите к C:\Users\\AppData
  3. Зайдите Local\Microsoft\VisualStudio\<version>туда, где 12.0 для Visual Studio 2013.
  4. Удалите папку ComponentModelCache.

Отсюда: http://withmartin.net/how-visual-studios-component-model-cache-can-be-a-pain/


0

Не уверен в точных шагах воспроизведения ошибки (HRESULT E_FAIL был возвращен из вызова компонента COM), но решение для меня было:

  1. Закройте Visual Studio и восстановите его через панель управления.
  2. Перезагрузите систему

После перезагрузки ошибка исчезла.


0

Я столкнулся с той же проблемой в Visual Studio 2017, выполните следующие действия:

  1. Пуск -> Выполнить -> regsvr32% SystemRoot% \ System32 \ msxml3.dll

  2. Пуск -> Выполнить -> regsvr32% SystemRoot% \ SysWOW64 \ msxml3.dll

  3. Очистите проект.

  4. Перезапустите визуальную студию.

    Шаг 1 и 2 были скопированы с поста Бесник Кастрати.


0

Я нахожу этот ответ, нажмите Ctrl + Alt + J щелкните (...) вверху, теперь вы можете добавить dll из Browse, .Net или другого.После нажатия кнопки OK щелкните на (добавить в ссылки в выбранном проекте в проводнике решений) ( это зеленый плюс кнопка "+")


0

Я прошел через все шаги по устранению этой проблемы с VS2019 16.2.4, и проблема все еще остается. Я, конечно, надеюсь, что MS исправит эту проблему, так как это происходит уже давно.

Прямо перед добавлением в обозреватель объектов я не мог понять, как добавить диалоговое окно ссылки в этой версии, поскольку мне не удалось найти GAC на 2019 год.


0

Я получил эту ошибку при попытке установить пакет nuget, который я ранее загрузил и установил в другом проекте.

Нажатие Очистить все кеши NuGet в разделе Инструменты> Параметры> Диспетчер пакетов NuGet решило эту проблему для меня.


Точно так же может помочь удаление содержимого папки пакетов решения. В моем случае у меня была папка, в которой ничего не было (вероятно, в какой-то момент я был зарегистрирован), и это привело к проблемам.
K0D4

0

У меня была та же проблема, что и при работе с инструментом VS GUI. Чтобы исправить это, я удалил локальный репозиторий и вытащил его из исходного кода git - спасибо, git !! :)

Это не может быть решением во всех случаях. но, удалив все локальные файлы и перекомпилировав, я смог снова заставить его работать!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.