Pull to refresh

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

Reading time 3 min
Views 12K
Original author: Anton Sizikov
Сегодня я хочу рассказать о том, как можно централизованно управлять настройками 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 автоматически найдёт обновление и проинформирует разработчика.
Only registered users can participate in poll. Log in, please.
Как ваша команда работает с настройками?
15.79% Один репозиторий на команду, настройки в репозитории 3
0% Один репозиторий на команду, настройки в централизованном хранилище 0
15.79% Несколько репозиториев на команду, настройки в каждом репозитории 3
10.53% Несколько репозиториев на команду, настройки в централизованном хранилище 2
57.89% Не используем общие настройки 11
19 users voted. 6 users abstained.
Tags:
Hubs:
+13
Comments 11
Comments Comments 11

Articles