Создание и запуск окружений
В большинстве случаев разработчикам не требуется работа 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.0Common7IDEdevenv.exe» /rootsuffix Test
Создание нового именованного окружения занимает некоторое время и при первом запуске вы увидите процесс подготовки студии при первом запуске. После чего у вас будет VS без истории проектов, без дополнений. Фактически чистая студия. Для того, чтобы запустить только что созданное окружение, необходимо воспользоваться той же самой командной строкой.
«C:Program Files (x86)Microsoft Visual Studio 12.0Common7IDEdevenv.exe» /rootsuffix Test
Все настройки окружений будут содержаться в папке. Можно прямо так и вводить:
%LOCALAPPDATA%MicrosoftVisualStudio
А также в ветке рееста
HKCUSoftwareMicrosoftVisualStudio12.0ИмяПрофиля
На моем домашней системе есть 2 дополнительных окружения кроме «по умолчанию».
Это:
- 12.0 – окружение по умолчанию
- Exp – кастомное
- Roslyn – кастомное
Установка расширений
На этом можно было бы остановиться, но существует проблема, которая могла бы свести на нет, все преимущества независимых окружений. Эта проблема: Невозможность указать в какое окружение устанавливать VSIX пакет.
В смысле нет официального способа для сторонних пакетов. В тех, которые вы разрабатываете будут подправлены конфигурационные файлы для запуска в другом профиле. Пакеты расширений для студии не имеют каких-либо ключей, которые могут помочь в установке расширения в определенное именованное окружение. В процессе установки так же нет какого-либо выбора окружения. У вас не получится установить расширение перетащив его в окно студии. По умолчанию все устанавливается в основной экземпляр студии.
Для решения этой проблемы я нашел небольшой command-line инструмент, который позволяет установить VSIX в нужный профиль Visual Studio. Скачать его можно готовый или в виде кода.
Использование инструмента достаточно простое. Запустить командную строку, указать путь до тулзы, указать версию студии, имя профиля, путь до vsix пакета:
Root-VSIX [<VS version>] <RootSuffix> <Path to VSIX>
Например:
C:ToolsRoot-VSIX.exe 12.0 Test c:VS12ExtensionsSomeExtension.vsix
Все готово!
Некоторой проблемой может являться идентификация запущенного профиля, так как его имя нигде не отображается в запущенной студии. Можно различать по пути из TaskManager или же попытаться найти или написать расширение для студии ;)
Автор: VioletTape