Управление настройками ReSharper в команде

от автора

Сегодня я хочу рассказать о том, как можно централизованно управлять настройками ReSharper на уровне команды разработчиков. Под настройками я понимаю настройки форматтера, Live Templates и настройки ReSharper. Они могут быть экспортированы и упакованы в так называемые Declarative Extensions.

На данный момент все плагины для ReSharper представляют собой стандартные NuGet пакеты. Это позволяет распространять их через официальный NuGet feed от JetBrains или публиковать их в частном закрытом NuGet сервере внутри компании.

Экспорт настроек

Для экспорта настроек и Live Templates перейдём в меню RESHARPER->Manage Options.

Manage Options

В данном диалоге нужно выбрать уровень (Layer) настроек, который мы хотим экспортировать.

Нажмём кнопку «Import/Export settings».

export settings and templates

В окне «Export To File» отметим узлы «Code Style» и «LiveTemplates». Затем нужно указать директорию и имя DotSettings файла, в который будут записаны экспортируемые настройки.

Подготовка NuGet пакета

Как только настройки экспортированы, можно приступать к созданию NuGet пакета. Необходимо описать .nuspec файл. Для ReSharper 8.2 он будет выглядеть следующим образом:

<?xml version="1.0"?> <package>   <metadata>     <id>YourCompany.Settings</id>     <version>1.0.0</version>     <title>TeamSettings</title>     <authors>Your name</authors>     <owners>Your Company</owners>     <projectUrl>http://your-company.com</projectUrl>     <requireLicenseAcceptance>false</requireLicenseAcceptance>     <description>       Team settings and live templates for ReSharper     </description>     <copyright>Copyright © Your Company</copyright>     <dependencies>       <dependency id="ReSharper" version="8.2" />     </dependencies>     <releaseNotes>     </releaseNotes>     <tags>settings</tags>   </metadata>   <files>     <file src="..\Settings\" target="ReSharper\v8.2\settings\" />   </files> </package> 

В случае с ReSharper 9.1 .nuspec файл будет немного отличаться. Узел Dependencies должен указывать версию «Wave», а не ReSharper:

<dependencies>       <dependency id="Wave" version="[2.0]" /> </dependencies> 

Так же нужно будет изменить target:

<files>     <file src="..\Settings\"      target="DotFiles\Extensions\YourCompany.Settings\settings\" />   </files> 

Где «YourCompany.Settings» это идентификатор NuGet пакета.

Теперь можно собрать пакет, выполнив команду:

nuget.exe pack nuspec-file-name.nuspec 

Если мы выполнили предыдущие шаги без ошибок, то рядом с nuspec файлом будет создан пакет «YourCompany.Settings.1.0.0.nupkg».

Публикация NuGet пакета

Как упоминалось выше, ReSharper может использовать следующие источники NuGet пакетов:

  • Официальный feed от JetBrains
  • Любой сторонний NuGet сервер (например ProGet)
  • Артефакты TeamCity
  • Локальная или сетевая папка

Публикация пакета на NuGet сервере практически ничем не отличается от публикации на nuget.org.

В данной статье для простоты, в качестве NuGet feed, я буду использовать папку в файловой системе. Данная папка должна быть доступна с компьютера каждого программиста в команде. Например, это может быть общий exchange folder на сетевом диске.

Использование кастомного NuGet feed

После того, как пакет с расширением опубликован, нам нужно зарегистрировать новый источник расширений. Для этого перейдём в RESHARPER -> Options…-> Environment -> Extension Manager.

Options-Environment dialog

Нажмём «добавить» (Add), укажем имя в поле «Name» и путь до Артефактов, NuGet сервера или директории в поле «Source».

add custom gallery

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

Для установки расширения необходимо перейти в меню RESHARPER -> Extension Manager.

В поиске нужно найти наш пакет и нажать Install.

install custom plugin

Проверим, что ReSharper обнаружил новые настройки. Откроем диалог Manage Options и убедимся, что новый слой настроек отображается на экране.

new settings layer

Теперь каждый член команды может использовать актуальную версию настроек. В случае изменения или обновления настроек достаточно лишь опубликовать новую версию плагина, и ReSharper автоматически найдёт обновление и проинформирует разработчика.

ссылка на оригинал статьи http://habrahabr.ru/post/262383/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *