Як налагодити розширення Visual Studio


93

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

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

Відповіді:


184

Розширення 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 - чи є спосіб повідомити розширення vs2012 зареєструватися в експериментальному вулику попереднього перегляду vs2015?
Шрікант Венугопалан

1
Здається, це працює лише в тому випадку, якщо версії, які ви використовуєте для налагодження та тестування, однакові. Тож ви не можете налагодити у 2013 році та запустити розширення в 2015 році. @SrikanthVenugopalan
Марія Інес Парнісарі

@miparnisari - так, так здається. Тим не менше, якщо ви підтримуєте кілька версій.
Шрікант Венугопалан

2
Привіт, що ти маєш на увазі, що він запустить VS з моїм VSIX як "доступне розширення"? Де я можу знайти доступні розширення? Коли я заходжу в Інструменти -> Розширення та оновлення, я бачу лише «Встановлені», «Інтернет» та «Оновлення».
pabrams

54

Прийнята відповідь @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файл.


6
Обов’язково видаліть файл * .csproj.user, оскільки користувацькі налаштування мають перевагу над параметрами проекту.
MBulli

Чудова відповідь, спасибі! Набагато ефективніший від прийнятого.
Звєрєв Євгеній

Працював ідеально для vs 2019
x0n

2

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

Також див. Цю відповідь .


Примітка. OutputWindowHelper не існує у Visual Studio 2015. Машина з лише VS2015 видасть помилку, якщо це буде викликано. Дивіться також github.com/landofjoe/NuspecPackager/issues/1
Кванго

0

Якщо ви спробуєте налагодити UnitTestExtension, вам слід також приєднати налагоджувач до vstest. *. Exe-процесів, як описано тут . В іншому випадку ви можете побачити точку розриву активації, але налагоджувач ніколи не потрапить на неї.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.