- PVSM.RU - https://www.pvsm.ru -
В большинстве случаев разработчикам не требуется работа 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 дополнительных окружения кроме «по умолчанию».
Это:
На этом можно было бы остановиться, но существует проблема, которая могла бы свести на нет, все преимущества независимых окружений. Эта проблема: Невозможность указать в какое окружение устанавливать VSIX пакет.
В смысле нет официального способа для сторонних пакетов. В тех, которые вы разрабатываете будут подправлены конфигурационные файлы для запуска в другом профиле. Пакеты расширений для студии не имеют каких-либо ключей, которые могут помочь в установке расширения в определенное именованное окружение. В процессе установки так же нет какого-либо выбора окружения. У вас не получится установить расширение перетащив его в окно студии. По умолчанию все устанавливается в основной экземпляр студии.
Для решения этой проблемы я нашел небольшой command-line инструмент, который позволяет установить VSIX в нужный профиль Visual Studio. Скачать его можно готовый [2] или в виде кода [3].
Использование инструмента достаточно простое. Запустить командную строку, указать путь до тулзы, указать версию студии, имя профиля, путь до vsix пакета:
Root-VSIX [<VS version>] <RootSuffix> <Path to VSIX>
Например:
C:ToolsRoot-VSIX.exe 12.0 Test c:VS12ExtensionsSomeExtension.vsix
Все готово!
Некоторой проблемой может являться идентификация запущенного профиля, так как его имя нигде не отображается в запущенной студии. Можно различать по пути из TaskManager или же попытаться найти или написать расширение для студии ;)
Автор: VioletTape
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/testirovanie/65128
Ссылки в тексте:
[1] Image: http://habrastorage.org/getpro/habr/post_images/728/7ce/97e/7287ce97ee99617bec722b6cc0d3f7ec.png
[2] готовый: https://github.com/SLaks/Root-VSIX/releases
[3] в виде кода: https://github.com/SLaks/Root-VSIX
[4] Источник: http://habrahabr.ru/post/230097/
Нажмите здесь для печати.