Managing ReSharper Settings in a Team

Original author: Anton Sizikov
  • Transfer
  • Tutorial
Today I want to talk about how you can centrally manage ReSharper settings at the level of a development team. By settings, I mean the formatter settings, Live Templates and ReSharper settings. They can be exported and packaged in so-called Declarative Extensions .

At the moment, all plugins for ReSharper are standard NuGet packages. This allows you to distribute them through the official NuGet feed from JetBrains or publish them in a private, closed NuGet server inside the company.

Export Settings


To export the settings and Live Templates, go to the menu RESHARPER-> Manage Options.

Manage options

In this dialog you need to select the level (Layer) of the settings that we want to export.

Click the “Import / Export settings” button.

export settings and templates

In the “Export To File” window, select the nodes “Code Style” and “LiveTemplates”. Then you need to specify the directory and name of the DotSettings file in which the exported settings will be written.

Preparing NuGet Package


Once the settings are exported, you can start creating the NuGet package. You must describe the .nuspec file. For ReSharper 8.2, it will look like this:

YourCompany.Settings1.0.0TeamSettingsYour nameYour Companyhttp://your-company.comfalse
      Team settings and live templates for ReSharper
    Copyright  Your Companysettings


In the case of ReSharper 9.1 .nuspec, the file will be slightly different. The Dependencies node should indicate the version of Wave, not ReSharper:



You will also need to change the target:



Where "YourCompany.Settings" is the identifier of the NuGet package.

Now you can build the package by running the command:

nuget.exe pack nuspec-file-name.nuspec


If we followed the previous steps without errors, then the package “YourCompany.Settings.1.0.0.nupkg” will be created next to the nuspec file.

Publish NuGet Package


As mentioned above, ReSharper can use the following sources of NuGet packages:
  • Official feed from JetBrains
  • Any third-party NuGet server (for example, ProGet)
  • TeamCity Artifacts
  • Local or network folder

Publishing a package on a NuGet server is practically no different from publishing it on nuget.org.

In this article, for simplicity, as a NuGet feed, I will use a folder in the file system. This folder should be accessible from the computer of each programmer in the team. For example, it could be a shared exchange folder on a network drive.

Using Custom NuGet feed


After the package with the extension is published, we need to register a new source of extensions. To do this, go to RESHARPER -> Options ...-> Environment -> Extension Manager.

Options-Environment dialog

Click "Add", specify the name in the "Name" field and the path to the Artifacts, NuGet server or directory in the "Source" field.

add custom gallery

Install extension


To install the extension, go to the RESHARPER -> Extension Manager menu.

In the search you need to find our package and click Install.

install custom plugin

Check that ReSharper has detected new settings. Open the Manage Options dialog and make sure that a new settings layer is displayed on the screen.

new settings layer

Now each member of the team can use the current version of the settings. If you change or update the settings, it is enough to publish a new version of the plugin, and ReSharper will automatically find the update and inform the developer.

Only registered users can participate in the survey. Please come in.

How does your team work with settings?

  • 17.6% One repository per team, settings in repository 3
  • 0% One repository per command, settings in centralized storage 0
  • 11.7% Multiple repositories per team, settings in each repository 2
  • 11.7% Multiple repositories per team, settings in centralized storage 2
  • 58.8% Do not use general settings 10

Also popular now: