Как отлаживать расширения Visual Studio - PullRequest
86 голосов
/ 14 февраля 2012

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

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

Ответы [ 4 ]

171 голосов
/ 14 февраля 2012

Расширения 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 в качестве доступного расширения.

49 голосов
/ 08 июня 2015

Принятый ответ @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файл.

2 голосов
/ 18 августа 2014

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

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

0 голосов
/ 18 сентября 2015

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

...