Я просто пишу расширение VSIX для Visual Studio 2010 и не могу понять, как его отладить.
Одним из очевидных способов является вывод сообщений. В шаблоне расширения используется Trace.WriteLine()
. Но где найти выход?
Я просто пишу расширение VSIX для Visual Studio 2010 и не могу понять, как его отладить.
Одним из очевидных способов является вывод сообщений. В шаблоне расширения используется Trace.WriteLine()
. Но где найти выход?
Расширения Visual Studio можно отлаживать, как и любое другое приложение. Вам просто нужно настроить опыт отладки, чтобы запустить devenv с загруженным расширением. Попробуйте следующее
Нажмите на переключатель для Start External Program
. Направьте его в двоичный файл devenv.exe. На моей машине он находился в
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
На машине без x64, хотя вы можете удалить часть "(x86)".
Затем задайте аргументы командной строки /rootsuffix Exp
. Это говорит Visual Studio использовать экспериментальный улей вместо обычного улья конфигурации. По умолчанию расширения VSIX при построении регистрируются в экспериментальном улье.
Теперь вы можете F5, и он запустит Visual Studio с вашим VSIX в качестве доступного расширения.
Принятый ответ @JaredPar технически корректен, но страдает тем фактом, что вам нужно повторить его для каждого разработчика, каждый раз, когда вы получаете новую копию кода, и в любое время удаляете файл csproj.user
. Когда вы это сделаете, настройки сохраняются в файле csproj.user
.
Лучшим вариантом является установка параметров в файле csproj
, чтобы они не были потеряны. К сожалению, Visual Studio не позволяет вам делать это автоматически, поэтому вам нужно вручную добавить настройки. К счастью, настройки для любого проекта одинаковы.
Щелкните правой кнопкой мыши и выгрузите проект, затем щелкните правой кнопкой мыши и отредактируйте файл файла проекта csproj
. В XML добавьте следующее к первому PropertyGroup
, например, сразу после TargetFramework
.
<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>
Это имеет следующие преимущества:
Как указано в комментариях @MBulli, если вы внесли изменения в принятый ответ, удалите файл *.csproj.user
, потому что настройки в нем будут переопределять те, которые вы добавили в основной файл csproj
.
Метод OutputWindowHelper.OutputString записывает в окно окна вывода "Общие" (Ctrl Alt o). Я добавил эту строку в мои ссылки .csproj, чтобы получить это в VS 2013
<Reference Include="Microsoft.VisualStudio.Services.Integration, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
Также см. этот ответ.
Если вы попытаетесь отладить UnitTestExtension, вы также должны присоединить отладчик к процессам vstest. *. exe, таким как descibed здесь. В противном случае вы можете увидеть активирующую точку останова, но отладчик никогда не ударит ее.