Подтвердить что ты не робот

Как отладить проект Vsix

Я создаю собственный тестовый бегун для моего проекта. Поэтому я создал тестовый проект vsix, который можно зарегистрировать в Visual Studio.

Я также знаю, что я загружаю расширение через F5, затем загружается экспериментальный экземпляр Visual Studio, но точки останова не попадают в экземпляр Visual Studio, в котором я создал свой vsix.

Кто-то знает, как действительно отладить его?

4b9b3361

Ответ 1

Я создал несколько расширений Visual Studio, и я никогда не нашел хороший способ отладки VSIX. Вы можете запустить экспериментальный экземпляр, но я нашел, что это самая медленная возможность.

Это рабочий процесс, который я использую:

  • Откройте экземпляр Visual Studio для разработки. Загрузите решение.
  • Внесите некоторые изменения, постройте.
  • Установите .vsix(дважды щелкните файл vsix в \bin\debug)
  • Запустите новый экземпляр Visual Studio для тестирования.
  • В Dev Visual Studio Debug → Attach to Process и выберите devenv.exe
  • В Dev Visual Studio установите некоторые точки останова.
  • В тестовой Visual Studio создайте/откройте новое решение и запустите тестовое кодирование.

Я нашел это намного быстрее, чем запуск экспериментального экземпляра VS. Но это все еще довольно сложно.

Еще одна вещь, которую я очень рекомендую, - это абстрагировать как можно большую часть Visual Studio API, так как вы можете выполнять модульное тестирование и выполнять только минимальное тестирование в Visual Studio. Например, в проекте, над которым я сейчас работаю, pMixins, я отвлек систему событий Visual Studio (VisualStudioEventProxy), так что моя инфраструктура не имеет жесткой зависимости от события api, и я могу написать тест, который имитирует события.

Ответ 2

Немного поздно, но может быть полезно для других.

Предложение, которое я нашел здесь, помогло мне решить мою проблему с отладкой моего компонента .vsix в VS2012. Вкратце: добавьте в свойства проекта "Запустить внешнюю программу" [путь вашей визуальной студии], добавьте в "Аргументы командной строки" /rootsuffix Exp.