Как отлаживать надстройку Visual Studio, которая выдает исключение во время загрузки? - PullRequest
1 голос
/ 11 мая 2010

Я работаю над надстройкой для Visual Studio 2005 в C #, и, хотя все работает, если я запускаю ее из отладчика, фактически устанавливаю ее (добавляя .addin и .dll в каталог надстроек) результаты в нем не работает. Когда Visual Studio загружает его, я получаю сообщение об ошибке «Надстройка« MyAddin »не удалось загрузить или вызвала исключение». С сообщением об ошибке: Unspecified error, с номером ошибки: 80004005, а затем предлагает мне возможность его отключить.

Отсюда я не могу понять, как отладить этот процесс загрузки, чтобы выяснить, что происходит. Кажется, я не могу подключиться к dll до того, как он будет загружен, или, в частности, запустить dll так, чтобы он загружался таким же образом. Я также не могу прикрепить, когда сообщение об ошибке вверх.

Как же я могу это сделать?

Edit: я начинаю верить, что это не проблема с моим кодом, а с файлом .addin. Учитывая, что я не могу разбить код в конструкторе, и MyAddin - For Testing.addin работает, возможно, это большая проблема с сгенерированным файлом MyAddin.addin.

Ответы [ 4 ]

0 голосов
/ 11 мая 2010

После сна я вернулся свежим и пересмотрел все. Оказывается, сгенерированный файл .Addin имел неправильную ссылку, и поэтому пытался загрузить несуществующий файл. После исправления ссылки все прекрасно работает (включая 30 Break (), вызываемых во время запуска Visual Studio ... но, по крайней мере, я знаю, что это работает.)

0 голосов
/ 11 мая 2010

Самый простой способ, который может не вызвать одно и то же исключение:

  • Отключить загрузку при запуске.
  • Запустите 2 экземпляра Visual Studio.
  • Используйте Инструменты -> Присоединить к процессу, чтобы присоединить его в качестве отладчика к другому экземпляру.
  • При желании также можно установить Debug -> Exceptions для всех исключений CLR.
  • Загрузить надстройку в отладчике
0 голосов
/ 11 мая 2010

Возможно, для этого требуется собственная точка разрыва стороны при появлении 80004005 в файле devenv.exe. Обычно для этого требуется, чтобы вы были знакомы с WinDbg и т. Д.

Если у вашей компании есть контракт на поддержку с Microsoft, откройте запрос поддержки через http://support.microsoft.com, чтобы привлечь экспертов.

0 голосов
/ 11 мая 2010

Добавьте строку ниже в начале вашего кода. Это запросит у вас, хотите ли вы открыть окно VS для отладки (см. MSDN ). Затем вы можете пройти по своему коду по мере необходимости.

Debugger.Break();

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

...