Различные профили Visual Studio и установка расширений к ним

Создание и запуск окружений

В большинстве случаев разработчикам не требуется работа Visual Studio в «песочнице». При этом песочница может быть достаточно большая и стабильная. Обычно все окружение и дополнения к студии находятся в единственном экземпляре. То, что студия запускается в нескольких инстансах не в счет. Окружение и настройки для них применяются одни и те же.

Однако, существует ряд задач, когда требуется получить «студию, которая словно только что установилась». Что это за задачи?

  • Тестирование дополнений для Visual Studio. Вы можете делать обзоры на дополнения, или хотите посмотреть стабильность дополнения не устанавливая его в свой рабочий экземпляр студии.
  • Разработка дополнений для Visual Studio. В этом случае все еще опаснее для разработки, так как дополнение с ошибками может надолго вывести студию из строя. Но в данном случае вы будете подстрахованы, так как для дебага студия будет запущена в «песочнице».
  • Работа с сильно различающимися настройками для нескольких проектов. Это может быть различные плагины, настройки окон, хоткеи и вообще все, что может быть настроено в студии.

Мне это понадобилось в свете тестирования дополнения к студии, которое надо устанавливать на отдельные окружения\профили. Некоторые детали о специфике задачи: Есть фреймворк, который ставится в виде VSIX пакета. Нюанс в том, что фреймворк одновременно развивается\поддерживается для нескольких номерных версий, которые не могут сосуществовать параллельно в рамках одного профиля Visual Studio.

Решением для такой ситуации будет использование Visual Studio Hives. С помощью этой технологии\подхода возникнет ситуация, словно у вас параллельно установлено несколько независимых экземпляров Visual Studio. Каждый такой экземпляр будет именованным. Собственно, по имени вы к нему и будете в дальнейшем обращаться.
Создать новый профиль студии весьма просто и делается это одной строкой. Эта же строка запускает созданный именованный профиль Visual Studio.

%PATH_TO_VS%\devenv.exe /rootsuffix %NAME%

Например, можно создать экземпляр с именем Test. Тогда это будет выглядеть примерно следующим образом:

«C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe» /rootsuffix Test

Создание нового именованного окружения занимает некоторое время и при первом запуске вы увидите процесс подготовки студии при первом запуске. После чего у вас будет VS без истории проектов, без дополнений. Фактически чистая студия. Для того, чтобы запустить только что созданное окружение, необходимо воспользоваться той же самой командной строкой.

«C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe» /rootsuffix Test

Все настройки окружений будут содержаться в папке. Можно прямо так и вводить:

%LOCALAPPDATA%\Microsoft\VisualStudio

А также в ветке рееста

HKCU\Software\Microsoft\VisualStudio\12.0ИмяПрофиля

На моем домашней системе есть 2 дополнительных окружения кроме «по умолчанию».

rootsuffix_01

Это:

  • 12.0 – окружение по умолчанию
  • Exp – кастомное
  • Roslyn – кастомное

Установка расширений

На этом можно было бы остановиться, но существует проблема, которая могла бы свести на нет, все преимущества независимых окружений. Эта проблема:

Невозможность указать в какое окружение устанавливать VSIX пакет.

В смысле нет официального способа =D Пакеты расширений для студии не имеют каких-либо ключей, которые могут помочь в установке расширения в определенное именованное окружение. В процессе установки так же нет какого-либо выбора окружения. У вас не получится установить расширение перетащив его в окно студии. По умолчанию все устанавливается в неименованный основной экземпляр студии.

Для решения этой проблемы я нашел небольшой command-line инструмент, который позволяет установить VSIX в нужный профиль Visual Studio. Скачать его можно готовый или в виде кода.
Использование инструмента достаточно простое. Запустить командную строку, указать путь до тулзы, указать версию студии, имя профиля, путь до vsix пакета:

Root-VSIX [<VS version>] <RootSuffix> <Path to VSIX>

Например:

C:\Tools\Root-VSIX.exe 12.0 Test c:\VS12\Extensions\SomeExtension.vsix

Все готово!

Некоторой проблемой может являться идентификация запущенного профиля, так как его имя нигде не отображается в запущенной студии. Можно различать по пути из TaskManager или же попытаться найти или написать расширение для студии ;)

Оставить комментарий