Несколько вещей очень поразительны:
- Этот вопрос задают много
- Большинство ответов, если не все, являются неполными или неправильными
Так что вот так: В VS2010.выполните следующее:
- Создайте свой проект BHO, хорошей отправной точкой будет: Демонстрационная панель инструментов IE / BHO
- Создайте аналогичное решение / проект, перейдите к«Solution Explorer», щелкните правой кнопкой мыши свой проект или используйте Alt + Enter и перейдите в «Свойства»:
Убедитесь, что выбран профиль отладки:
Нам понадобятся некоторые события после сборки, чтобы зарегистрировать нашу сборку:
Это различные команды:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe" /u "$(TargetName)"
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe" /f /i "$(TargetPath)"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /unregister /codebase "$(TargetPath)"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /codebase "$(TargetPath)"
Порядокэто важно.Сначала сборка становится незарегистрированной, затем регистрируется.При первом запуске сборка завершится неудачно, так как эти события после сборки завершатся неудачно.Это нормально, при первой сборке не было зарегистрировано ни одной сборки, поэтому отменить регистрацию нечего.Во второй раз, когда вы строите, все будет работать нормально.На этом этапе, после успешной, безошибочной сборки, запуск IE вручную должен привести к отображению вашего BHO:
Теперь мы также хотели бы просто пойти и нажать
F5
, собрать все это, открыть IE и подключить отладчик.Однако, вопреки распространенному мнению, отладчик VS 2010 не будет подключаться сам по себе, даже при определении «Запускать внешнюю программу» в «Отладке» (что на самом деле все еще необходимо):
При этом запустится IE, ваш BHO также должен работать, но точки останова не будут срабатывать.
Для решения этой проблемы мы будем использовать:
public virtual void SetSite(Object pUnkSite)
{
#if DEBUG
Debugger.Launch();
#endif
... Other code ...
}
Это обеспечиваетчто отладчик подключается в начале жизненного цикла BHO.Читайте о мельчайших подробностях здесь .
Нажатие F5
теперь приведет к появлению нескольких диалоговых окон с вопросом, какой отладчик подключить:
С этого момента начинается счастливая отладка:
Надеюсь, это поможет!
EDIT
Недавно меня попросили внести некоторые обновления в довольно древнюю BHO, которую я написал.Пересматривая мой собственный учебник, я заметил, что при его следовании могут возникнуть некоторые проблемы:
1) После быстрого развертывания машины W7 с VS2010 (как выпущено) я получил странную ошибку, когда была предпринята попытка присоединить отладчик:
Я мог бы решить эту проблему, также установив VS2010 SP1 (как я использовал его изначально), хотя я понятия не имею, почему это происходит.
2) Сейчас, когда делается попытка присоединить отладчик, экземпляр VS2010, содержащий мой проект, отсутствует в списке доступных отладчиков.
Однако, когда я просто отменяю все диалоговые окна и перезапускаю IE, запущенный экземпляр волшебным образом появляется, и я могу снова достичь своих точек останова.Кажется, проблема связана с вопросами других .
РЕДАКТИРОВАТЬ 2
Вторая проблема была решена после полной перезагрузки, как и в связанный вопрос .