[Перевод] Управление настройками 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 он будет выглядеть следующим образом:



  
    YourCompany.Settings
    1.0.0
    TeamSettings
    Your name
    Your Company
    http://your-company.com
    false
    
      Team settings and live templates for ReSharper
    
    Copyright © Your Company
    
      
    
    
    
    settings
  
  
    
  


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


      


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


    
  

Где «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 автоматически найдёт обновление и проинформирует разработчика.

© Habrahabr.ru