...

понедельник, 13 июля 2015 г.

[Перевод] Управление настройками 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://ift.tt/1SiBJ0i;
    <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 автоматически найдёт обновление и проинформирует разработчика.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Комментариев нет:

Отправить комментарий