I suggest you ...

Extensions per solution support

Sometimes I find myself in situations where I wish I had the option to disable/enable specific extensions for specific solutions mainly for two reasons:

1. The extension is heavy and opening large solutions can take quite some time so you're in the mercy of the vendor to improve the experience, the classic example is using R# with large projects.

2. The extension shouldn't even load because the extension isn't used for example using Visual Assist for C++ as opposed to R#.

The problem is when you disable/enable extensions sometimes you lose the configuration and you need to restore it each time so it's really a hassle to switch between extensions and manually configuring keybinds and/or features.

Now, I can probably ask extension vendor to come up with their own mechanism to disable/enable themselves per solution but it's a bit awkward for an extension to enable itself only to find out that it should be disabled and some vendors don't even want to be in that spot, people requested this feature from JetBrains since R# 5.0 and "nothing" was done about it but besides this point it really feels like it should be a feature of the IDE.

What I'm suggesting is to either add a new "section" to `*.sln` files to track extensions or add a new `.vs\extensions.json` file to track it but I think that in order to _really_ solve the issues Visual Studio would need a new infrastructure to store its configuration per extension so something like this:
```
\SomeProject\.vs\extensions\Visual Studio.settings
\SomeProject\.vs\extensions\ReSharper.settings
\SomeProject\.vs\extensions\Visual Assist.settings
```
With this, when R# is disabled two things should happen:

1. Visual Studio should write the state of the extension to `.vs\extensions.json`.
2. Visual Studio should write its current settings to `\SomeProject\.vs\extensions\ReSharper.settings`.

When R# is enabled two things should happen:

1. Visual Studio should write the state of the extension to `.vs\extensions.json`.
2. Visual Studio should read the settings from `\SomeProject\.vs\extensions\ReSharper.settings` and apply them back to Visual Studio.

When a solution loads Visual Studio needs to check the state of the extension and enable/disable it respectively.

When both R# and Visual Assist are enabled there might be some conflicts so one way to solve this is to show a dialog to the user and ask him/her for the default option he/she wants to set and then write it to `\SomeProject\.vs\extensions\Visual Studio.settings` which will be used whenever a conflict exists.

Installing multiple extensions for productivity tools is pretty common, sharing configuration between teams is also common and there's no reason for us to manage these things manually when the IDE should and can do it automatically.

With this improvement it would be easy to share configuration, enable/disable extensions between machines and different solutions.

65 votes
Vote
Sign in
(thinking…)
Password icon
Signed in as (Sign out)
You have left! (?) (thinking…)
Eyal Solnik shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

2 comments

Sign in
(thinking…)
Password icon
Signed in as (Sign out)
Submitting...
  • Drew Noakes commented  ·   ·  Flag as inappropriate

    Another motivating use case: I use Mads's White Space Visualizer extension, which also removes trailing white space on save.

    However for some projects I contribute to I don't want to change white space. It's not currently possible to disable the extension for selected solutions.

  • James Trudel commented  ·   ·  Flag as inappropriate

    I want this feature so bad. I switch between C# and a very large C++ codebase. Resharper is great for C#, but completely kills VS on the large solution.

Feedback and Knowledge Base