Sunday, September 8, 2013

Local Repository for Resharper Extensions in an Enterprise

Resharper extensions are simply nuget packages. As we discussed before, we can host a local nuget repository [Hosting Nuget Feeds] within the organization boundaries. You might be wondering if that is also possible for Resharper Extensions.

Like Nuget, Resharper also maintains a local cache for the extensions. The local cache is maintained in %APPDATA% folder. We can use package extensions from this folder to build up our repository bearing the legal licensing issues.

Just to test how it works, let's copy the contents of this folder to a shared folder with a UNC path. It also totally works with local file system path. But don't directly share it from this folder. It wouldn't make sense to directly add this path as a repository. This is because the presence of this package means that the package is already installed. This is different than the argument when we shared local cache as a nuget repository as those packages are installed to projects and solutions. On the other hand, resharper extension is not specific to a project or solution. Once installed it is available to all visual studio sessions as long as you have them and resharper enabled.

After adding the repository, the repository becomes available as a source of resharper's extensions. Please notice an extra option under repository in the following image. As added above, the repository is titled Local Repository.

Sharing Resharper Extension Manager Settings
As an enterprise developer, we need to think about the whole team. We can't expect each developer to be adding this setting on his own as it is opening the system to human error. Additionally, what if we want to change the source of the repository to another location. Do you want another communication with the whole team. Best of luck if you do :). This should be seamless. Here layered settings for resharper can come for rescue. This is a universal storage mechanism for resharper's settings.

You can view and edit the layers from Resharper -> Manage Options menu in Visual Studio. Here is the interface to manage layers for settings.

For the resharper extensions we can use system wide settings layer. I don't see any issue with creating a group policy to copy the global system wide setting to copy the local repository location. The user specific settings are maintained in roaming profiles of the user under %APPDATA% folder. I don't know why they call it This Computer" when they are defined in user's APPDATA folder.

I think Nuget got it better as Nuget 2.7 also introduced a similar feature but those global settings are defined in %ProgramData%\NuGet\NuGetDefaults.config which is system wide.

No comments: