Непонятное исключение при компиляции проекта ASP.NET - PullRequest
0 голосов
/ 17 ноября 2009

У меня есть приложение asp.net с несколькими ссылочными dll.
Теперь кажется, что при компиляции проекта я получаю одну ошибку:

   The specified module could not be found. Exception from HRESULT: 0x8007007E

Я вижу, что одна из библиотек DLL, на которую ссылаются, это interop.dll, я подозреваю, что это ошибка возникает из-за того, что interop.dll нужен какой-то собственный ресурс, который не зарегистрирован в системе (исправьте меня, если я ошибаюсь, пожалуйста)

Могу ли я узнать, что это за ресурс (exe, dll, activex, ..)?

Ответы [ 2 ]

1 голос
/ 17 ноября 2009

Google дал мне интересный результат: http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/6793785a-ec98-4453-a62b-f1a85195ec05

В основном, это говорит о том, что вы можете использовать Dependency Walker , чтобы проверить, какие dll вам нужны.

Я действительно рекомендую поискать еще в Google. На многих веб-страницах обсуждается похожая проблема.

0 голосов
/ 02 июля 2010

. Вы можете использовать .Net Reflector (от Redgate Software, ранее Lutz Roeder's Reflector) для отслеживания проблем с зависимостями. Это не автоматически, но у меня сработало в прошлом.

  1. Откройте dll или exe вашего приложения, которое, по вашему мнению, ссылается на отсутствующую зависимость, в Reflector. Возможно, вы захотите начать с упомянутого вами файла interop.dll.
  2. Щелкните правой кнопкой мыши на dll в Reflector и выберите Disassemble.
  3. Щелкните по каждому из типов, один за другим, и найдите атрибуты ComImport и TypeLibType, которые определяют GUID любых внешних ссылочных типов COM.
  4. Откройте regedit и найдите HKEY_CLASSES_ROOT для GUID. Вы должны быть в состоянии встретить Интерфейс, который соответствует GUID, с подразделом TypeLib, который содержит другой GUID.
  5. Теперь ищите HKEY_CLASSES_ROOT, используя GUID TypeLib. Вы должны найти совпадение с подключом InProcServer32, который содержит путь к COM dll или exe.

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

Или, если вы найдете совпадения, вы можете оказаться в SDK, который не был установлен должным образом, или в котором могут быть другие сопутствующие библиотеки DLL, которые, возможно, потребуется зарегистрировать вручную (используя regsvr32).

Надеюсь, что это помогает (и имеет смысл).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...