I've been meaning to write this post for a while, but off the back of Microsoft's announcement of Visual Studio 2013 Community, a free edition that actually supports extensions, seems like as good a time as any.
So here are the free and paid-for extensions that I have installed in Visual Studio that make life easier and me more productive.
In the order I install them...
This is the first extension I install in a fresh Visual Studio installation. I'm old, and the first few years of my career were spent writing UNIX code in vi on Wyse terminals. When I moved to Windows and GUI development in the mid-90s, I left vi behind, and it was actually the release of the first C# beta that brought me back to it. There was no Visual Studio to go with the beta, so I needed a plain text editor, and I found Vim, with its GUI wrapper around vi functionality. I couldn't have told you how to use vi at that point, but my fingers remembered. Muscle memory is a real thing. (Now, if I'm working in Visual Studio without VsVim, I keep typing random i's and o's all over the place.)
It's challenging to learn how to use vi effectively, but when you watch someone who has the muscle memory jumping around a text file, throwing buffers around and generally showing off, it's impressive, and it should make you want some of that.
Almost every editor and IDE worth its salt has a vi mode or extension these days, and Visual Studio has VsVim. I don't know how complete it is, because I'm not a full-blown vi wizard, but it does everything I know and expect, and is faithfully maintained by the excellent Jared Par, who makes extra efforts to ensure that it co-exists well with ReSharper and CodeRush.
Now, I accept that vi mode is not for everybody. The next extension, though...
I do a lot of talks and courses on web development, with TypeScript and AngularJS in particular, and I often ask "who is doing web development and doesn't have WebEssentials installed"? And I am appalled by the fact that any hands at all go up.
WebEssentials is the project run by Mads Kristensen, who works on the VS Editor team (I think), where he pours in all the extra functionality that is missing (yes, missing) from the vanilla IDE. It's got support for TypeScript, SASS, LESS, CoffeeScript, but it also does a bunch of things that I actually forget are WebEssentials. Things like, when you drag a CSS or JS file onto the editor with an HTML (or Razor, etc) file open, it inserts the HTML
<script> tag for that file.
If you haven't got it, go and get it.
While you're at it, install
Productivity Power Tools
This is another one of those essential extensions where I forget where Visual Studio stops and the extension starts. It does a whole bunch of little things, many of which find their way into updates, or the next major version of Visual Studio. Even if you only end up using a couple of them, it's worth the install.
There's a full description on the Visual Studio gallery page.
Indent Guides is a small, single-purpose extension which adds lines between indents in the editor, making it easier to see which braces match. I find it really useful, and I also use it as a visual reminder to keep my methods short: if the line goes off the page, then I have failed and suck at programming.
Task Runner Explorer
On the edge between free and paid lies GhostDoc, which has both free and paid (Pro) editions. GhostDoc helps you write "doc comments", intelligently generating descriptions for properties and methods, and also letting you add your own configuration to suit your project or style.
You basically have to have one of the major productivity and refactoring extensions installed. You spend all day every day in the IDE, mucking about with code, and without one of ReSharper, CodeRush or possibly JustCode installed, well, it's like trying to paint a bridge with your eyebrows.
These extensions provide really advanced refactoring support, including telling you when you should or could refactor something, or improve your code. You can do things like add null argument checks with two key-presses, convert between interfaces and abstract classes, extract methods, all sorts of stuff. ReSharper tells you when a method can be made
static, or a field can be made
readonly, and it generates all kinds of boilerplate code for you. Probably a third of my code is written by hitting
ALT+Enter and choosing from the context menu.
This is a relative newcomer, but it's already cemented itself firmly in my must-have list. It does for the debugging experience what ReSharper does for the editing. Practically every complaint I ever had about debugging is addressed by OzCode. It replaces the default variable inspector with an insanely clever one; it lets you see values that were created without needing to add "debug variables"; it's got an exception viewer that makes working with those so much easier; and more cool stuff.
I made these videos for them mainly because I'd been using the beta version and loved it (although they did pay me for my time, too).
I like tests. Sometimes, I do full-blown Test-Driven or Behaviour-Driven Development (particularly with Simple.Data). Other times, I write tests kind of at the same time as the code, but not necessarily first.
NCrunch sits there and quietly builds and runs your tests while you type. It supports multiple test frameworks, shows you code coverage, and has a brilliant little thing called the Risk/Progress Bar which I like to dock at the bottom of my Solution Explorer pane. It turns red when your tests fail, and green when they all pass, with different shades depending on coverage. If you can get it to turn solid, bright green, you're doing well. It turns TDD or BDD into a kind of game, or possibly a Skinner Box.
All three of these extensions are worth the asking price. None of them are cheap, but there are very talented people working on them full-time, who need to eat and pay rent and stuff, so get your wallet out. After all, you got Visual Studio for free.