Note: This topic is not finished. As I’ll discover new things, I’ll provide additional parts to this post (or might update this post). So check back if you’re interested enough.
Update: 04.02.2020 - Added “Stacktrace Explorer”.
I have been a long time ReSharper user. I have used quite a lot of features, but surely not all. As probably many users of ReSharper I have always been lamenting about the performance impact it has on especially loading (larger) solutions. For example, the one I work with currently have about 150 projects. Additionally, the whole product is split about into 5 solutions in total, where the “smaller” ones still have around 50 projects.
In the past, for experimental purposes, I have disabled ReSharper and surely noticed faster loading times.
Now, to be fair, I would have to do some real benchmarking, then compare that with the value added by ReSharper and then make a judgement of whether extended loading times and unspecified delays when actually working are actually worth it. They very well could be.
But that is not the point of this post (and I don’t feel like actually doing that). The point is, that today every new Visual Studio versions gains features that could replace what ReSharper can do at least partly. Possibly being complemented by a range of free extensions for some features that are not yet (or may never) available as part of Visual Studio itself.
To make this one really count, one would have to do a full feature list of ReSharper, comparing each item with what is available from Visual Studio or, preferably, free extension.
But I’m not going to do that either. This post is a very opinionated piece, were I will only consider those features that I have been using most in the past. Your mileage will vary, also depending on when you actually read this. Because, as I said, Visual Studio and ReSharper of course gain new features all the time.
As a last disclaimer, I write this as I’m basically only a couple of weeks into this thing, so I might have not even recognized yet that I’m sorely missing a big feature of ReSharper that I don’t use too often.
Having all that said, I’ll be looking at Visual Studio 2019 16.4 and ReSharper 2019.3.
So, in no particular order and relevance here we go:
This one is one (next to refactorings one of the big selling points of ReSharper. However, with the introduction of Roslyn, and especially analyzers & fixers, there has been a constant increase in available code style checks and fixes from Visual Studio itself and also from extensions.
You make your choice, but I’m currently using Roslynator plus some very specific home-grown analyzers to augment those that are available in Visual Studio.
Also using the ever increasing .editorconfig support
in Visual Studio 2019 (plus the option to configure stuff in Visual Studio settings and the export it to
a new or existing .editorconfig
file)
is really useful and sufficient for me.
In fact even ReSharper can export (some?) of its code style settings to .editorconfig
right now,
but of course using different directives/names than what VS does. So don’t get too excited.
In the end, when moving from ReSharper to Visual Studio (builtin + extensions). It is is possibly best, more so required, to manually reconfigure the required code styles.
That should be a one time process and you shouldn’t sweat it. (It is BTW the main reason I didn’t do this whole endeavor before but in the grand scheme of things, so not worth the worries, that I regret not trying it earlier.)
This is of course a biggy and possibly the place where a feature comparison would be both in order and also possibly obsolete / incomplete the moment you’d take the time to write it down in detail. Personally, I find that what Visual Studio 2019 supports sufficient for most things I do daily.
I find the new Visual Studio Unit Text Explorer to be quite enough for what I do. Other options like running a test from the context menu in the editor or solution explorer are also there and OK for my purposes.
Visual Studio has that feature for a while. The command is called Edit.GotoAll
.
You can bind it to the typical ReSharper-shortcut CTRL+T
.
Visual Stuido has that feature for a while. The command is called Edit.FindAllReferences
.
You can bind it to the typical ReSharper-shortcut SHIFT+F12
.
Visual Studio has that feature for a while. The command is called SolutionExplorer.SyncWithActiveDocument
.
You can bind it to the typical ReSharper-shortcut CTRL+R CTRL+L
.
Here are some extensions that I found useful to fill some gaps. They are all open source, which is (for me) especially important. ReSharper has a rather good track record at being readily available when a new Visual Studio version (even minor versions of “date versions”, e.g. 16.1, 16.2, 16.3, etc. of 2019) comes out. While it doesn’t always support the newest C# language feature (which I can image can be a drag given the rate at which C# evolves currently). However, there is a chance that your favorite open source extension is not readily available, if ever. So you want to at least have a fair chance to fix that yourself, if you’re dependent on it for whatever reason. Also, as you will see below, different extensions have possibly overlapping features that you want to watch out for to not have them collide, do unnecessary things (performance), or simply satisfy that Monk in you. Also, you want to test each (new) extension for a while to make sure it does not have a negative impact your setup concerning stability, performance, etc.
ToString(string format, ...)
style overloads.