Как отлаживать расширения Visual Studio

Я просто пишу расширение VSIX для Visual Studio 2010 и не могу понять, как его отладить.

Одним из очевидных способов является вывод сообщений. В шаблоне расширения используется Trace.WriteLine(). Но где найти выход?

Ответ 1

Расширения Visual Studio можно отлаживать, как и любое другое приложение. Вам просто нужно настроить опыт отладки, чтобы запустить devenv с загруженным расширением. Попробуйте следующее

  • Щелкните правой кнопкой мыши по проекту и выберите "Свойства"
  • Перейдите на вкладку Debug

Нажмите на переключатель для 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 в качестве доступного расширения.

Ответ 2

Принятый ответ @JaredPar технически корректен, но страдает тем фактом, что вам нужно повторить его для каждого разработчика, каждый раз, когда вы получаете новую копию кода, и в любое время удаляете файл csproj.user. Когда вы это сделаете, настройки сохраняются в файле csproj.user.

Лучшим вариантом является установка параметров в файле csproj, чтобы они не были потеряны. К сожалению, Visual Studio не позволяет вам делать это автоматически, поэтому вам нужно вручную добавить настройки. К счастью, настройки для любого проекта одинаковы.

Щелкните правой кнопкой мыши и выгрузите проект, затем щелкните правой кнопкой мыши и отредактируйте файл файла проекта csproj. В XML добавьте следующее к первому PropertyGroup, например, сразу после TargetFramework.

<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>

Это имеет следующие преимущества:

  • Он устанавливает его для отладки и выпуска
  • Он запускает любую версию Visual Studio, которую вы сейчас запускаете
  • Он проверяется на исходный элемент управления, поэтому каждый разработчик не должен помнить, как это сделать:)

Как указано в комментариях @MBulli, если вы внесли изменения в принятый ответ, удалите файл *.csproj.user, потому что настройки в нем будут переопределять те, которые вы добавили в основной файл csproj.

Ответ 3

Метод 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" />

Также см. этот ответ.

Ответ 4

Если вы попытаетесь отладить UnitTestExtension, вы также должны присоединить отладчик к процессам vstest. *. exe, таким как descibed здесь. В противном случае вы можете увидеть активирующую точку останова, но отладчик никогда не ударит ее.