Ошибка HRESULT E_FAIL при вставке ссылок в Visual Studio - PullRequest
9 голосов
/ 22 сентября 2009

Я знаю, что это не вопрос программирования, но это инструмент программирования вопрос.

В Visual Studio 2008 Team Edition (версия 9.0 с .NET 3.5 SP1), когда я копирую и вставляю ссылки из одного csproj в другой (с контекстным меню в представлении «Solution Explorer»), я получаю следующую ошибку:

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

Это только что начало происходить на моей машине. Я могу найти только эту статью об этом, и она не содержит решения.

Есть идеи?

Ответы [ 2 ]

9 голосов
/ 20 июня 2012

Это хит №1, который отображается в Google для VS 2010 paste reference E_FAIL и т. П., Поэтому я решил поделиться этим обходным путем:

Не используйте ссылки копирования / вставки через контекстное меню в обозревателе решений.

Вместо того, чтобы:

  1. Используйте контекстное меню, чтобы выгрузить проект и скопировать ссылки.
  2. Редактировать файл проекта (.csproj; это просто XML).
  3. Найти заинтересованные ссылки и скопируйте <Reference> XML узел (ы).
  4. Выгрузите проект, чтобы скопировать ссылку в.
  5. Редактировать файл проекта (.csproj)
  6. Вставьте ссылку, скопированную на предыдущем шаге, в соответствующее место. Вам нужно искать узел <ItemGroup>, содержащий что-то вроде <Reference Include="mscorlib" />, и вставьте вашу ссылку чуть выше него.
  7. Закройте оба файла .csproj, сохранив также только что измененный целевой файл.
  8. Перезагрузите оба проекта через контекстное меню Solution Explorer.

Ваша ссылка теперь скопирована в целевой проект.

По-видимому, как минимум, существует проблема со ссылками, которые используют переменные среды, как описано здесь (хотя в моем случае у меня была проблема со ссылками, которые не использовали переменные среды, а в Visual Studio 2010 ...)

5 голосов
/ 29 сентября 2009

Yikes, E_FAIL - самая общая ошибка COM, поскольку она буквально означает, что возвращенная COM-функция завершилась ошибкой. Я предполагаю, что каким-то образом в Visual Studio 2008 есть поврежденный COM-объект.

Вы пытались переустановить Visual Studio 2008 только для того, чтобы перерегистрировать все его tlb и объекты?

...