A while ago, I wrote a blog entry about how Eclipse and Visual Studio 2005 stacked up against each other. Some of my quibbles with Visual Studio 2005 were due to my ignorance, but some were significant (from my point of view) missing features. Well, since then many people have recommended that I take a look at ReSharper. I requested a 30 day eval licence (as well as requesting a full free MVP licence by email – those people at JetBrains are very nice, thank you very much!) installed it, and after a quick look decided it would be worth revisiting my previous blog entry, to see just how many of the problems have been solved by ReSharper.
- “Open Type” in Eclipse: yup, solved by ReSharper with “GoTo Type” – shortcut Ctrl-N
- “Open Resource” in Eclipse: ditto, “GoTo File” – shortcut Ctrl-Shift-N
- Overloads in Intellisense: amazingly, yes! I really hadn’t expected this one
- “Organise imports” in Eclipse: yup, “Optimize Usings” – shortcut Ctrl-Alt-O
- Unit test integration: see later
- Refactoring: well, Extract Method still isn’t as smart as Eclipse, but there’s a lot more available than in vanilla VS2005. Only time will tell how much is really useful in practice
- Navigational Hyperlinks: after my original blog entry was posted, readers explained the VS2005 equivalents. ReSharper provides some more navigation options though, including Ctrl+Click to navigate to the declaration, which will be handy for my muscle memory.
- SourceSafe integration: not an issue for me now, as I use Subversion. AnkhSvn is pretty good, but I haven’t used it enough to really compare it with Subclipe (or Subversive)
- Structural differences: no changes that I’m aware of
- Compile on save: again, no change. After a couple of years with Eclipse, I’m really going to miss this.
- Combined file and class browser: no changes that I’m aware of. I suspect the ReSharper guys could do this one. Maybe the next release? :)
I said I’d come back to unit testing. Previously, I’ve used TestDriven.NET but I’ve never been particularly happy with the lack of real IDE integration. It’s not too bad for NUnitGUI to come up in a new window, but it’s not as nice as the JUnit support in Eclipse. ReSharper has the same kind of integration as Eclipse, which is very welcome. I gather you need a different plug-in to run VSTS test cases, but that doesn’t bother me. There’s one thing which TestDriven.NET gives me which I’ll miss, however – NCover integration. Maybe I need to look into writing an NCover plugin for ReSharper… it would certainly come in handy. (I should point out at this stage that I don’t have the equivalent in Eclipse.) Of course, there’s nothing to stop me from using TestDriven.NET and ReSharper in the same, but they are both commercial products (for non-personal use at least). I’m not sure that NCover integration is enough to make it worth buying TestDriven.NET if you’ve decided to get ReSharper.
So, why wouldn’t you get ReSharper? Well, it hurts performance a bit. I can’t say by how much, or whether it depends on the size of solution. I’ve only tried it on a small solution, and only briefly at that. It’s definitely more sluggish than normal, but far from unusably so – the features above will more than make up for it, I’m sure, and those are only the ones I happened to highlight in my Eclipse comparison. There are many more features, and it looks pretty tweakable. (It does some extra highlighting in the editor that I’ve turned off, for example.)
In short, it looks fabulous so far. I’m very much looking forward to using it more, and hopefully persuading colleagues (and those who hold the purse strings, of course) of its value. As a mark of how much I expect to use it, I’m not changing the shortcut keys to match those in Eclipse. If I expected to just use it myself, I’d do so – but as I expect to see it in use on colleagues’ machines, I’d rather use the default shortcuts where possible.
13 thoughts on “Visual Studio 2005 vs Eclipse – again, but this time with ReSharper…”
The one feature that I really, really want in Visual Studio is the ability to zoom in & out of code windows.
In Word / Visio / Excel / Powerpoint / Internet Explorer this is easy. Fit to Page, Zoom In, Fit to Width, Zoom Out – these are all great features in modern GUI’s.
In Visual Studio, there’s no way to do this short of changing font sizes, and it’s very frustrating.
(Have you used the DevExpress products – CodeRush & Refactor Pro? I’ve played with them both a bit, and they seem nice, but I’ve not put in the time to really learn them…)
Can’t say I miss zoom in/out personally, but there we go :)
I used CodeRush a long time ago. Maybe it’s time to give it another go – again, I think I’ve got a free licence somewhere… I seem to remember having to tone it down a bit – those huge arrows did my head in a bit.
Given some of the Visual Studio Powertoys coming out, maybe I should try to do a regular (and somewhat more in depth than this entry) blog post about VS plug-ins…
Persuading the purse-string-holders shouldn’t be to hard, I’d hope. Where I work, I reckon our Resharper licences paid for themselves (in increased productivity) very, very quickly.
If you’re looking to run VSTS Unit Tests, I released the VstsUnit Plugin for ReSharper a few weeks back:
The JetBrains folks were kind enough to mention it on their blog too.
I agree that NCover integration in TestDriven.NET is an awesome feature, but I too have yet to break open my wallet. Personally I prefer the visual feedback of ReSharper or NUnitGUI. I see green, I can continue coding or refactoring. No need to scan text. So a ReSharper plugin to do Code Coverage would be excellent. I haven’t looked to see if it’s possible though…
I used ReSharper for a while with Visual Studio 2003. Very powerful but also very, very buggy — and the developers always seemed more interested in piling on more half-baked features than in fixing the existing ones.
I’d appreciate if you let us know whether the current version is more solid, once you’ve used it for a while.
I also Used ReSharper for a while with VS2003. Experienced some bugs, but the reason I no longer use it is the impact on performance. Made VS2003 sluggish enough on my 3 GHz P4 machine to be annoying.
I have also programmed with Eclipse for years and kudos for the ReSharper guys for scratching an itch, but that sort of functionality needs to be part of the IDE.
In that vein of discussion, I’ve only added a couple of different plugins to VS2003 and VS2005 and I don’t find that they don’t ‘integrate’ into the ide experience as cleanly and seemlessly as the eclipse plugins do. Anything I’ve added to eclipse and I’ve added big plugin aggregations like MyEclipseIDE to little ones like RSS or stock quotes and they just feel ‘at home’ in eclipse.
RE: zooming. I go back and forth between eclipse and VS and I constantly find myself double clicking the tab of the code I’m working on in VS to get it to ‘full window’ like eclipse. this and hot-code replace while debugging are my two biggest issues with VS2005.
If performance is an issue that would put me off. I’m finding VS2005 to be really slow at the moment anyway. It took minutes to load and close a simple WPF project in VS2005 last night and that was very painful to witness.
I also agree that these features should be part of the IDE and we shouldn’t have to be resourcing these ourselves. I don’t mind stumping up the cash for products to use personally but to have to pay £80 for a plugin is quite steep in my eyes. I paid £50 for a MySQL database editor and that was an IDE so I think the pricing of resharper definitely makes it an impossible use for personal developers unless you’re made of money.
I love developing C# again but I do miss a lot of the free will found by Java component developers. My colleague laughed when I showed him resharper, one of his main reasons for getting his next contract as a Java one was because of things like this.
One reason for not using Resharper: if you’re doing WPF development right now, it appears to be a non-starter.
I was doing some work for a company that had licenses for Resharper, and I ended up uninstalling it out of frustration.
Resharper appears not to understand what the WPF build system is doing – WPF does a lot of compile-time code-gen, and apparently does so in such a way that Resharper can’t see it. So you lose Intellisense for all the WPF-related code gen. This was such a disaster that I had to remove Resharper – whatever it was going to give me wasn’t worth the loss. (I tried it for a week before giving up.)
That said, right now the WPF tools are all still in early preview. (Hence the disastrous performance that Emma Middlebrook reports in the comment above. Yup, it’s horrendous, but that’s largely because you’re working with an early preview.) Hopefully once the final WPF tools ship – this will happen with the next version of VS – maybe Resharper will have sorted out their integration with WPF. And then maybe I can try it out.
I tried Resharper long time back, but found it to be buggy, somehow the shortcuts weren’t standard and few other minor glitches. I gotta try it again sometime.
I also used Resharper 1.5 with Vs2003. I found it to be a huge win over plain vanilla Vs2003. Loved the refactorings, optimize usings, find all references, etc… However, it did slow down the machine tremendously on WinForms projects most due to the fact that a metric ton of GUI code was generated when you dropped a 3rd party grid on the form and, obviously, ReSharper had to parse that.
Another problem with ReSharper is that it stopped the IDE in its tracks while it was loading (which took at least 10-50 seconds depending on the solution). They tried a parallel loading approach with R# 2.0, but it didn’t seem to increase performance all that much.
To be honest, I see no reason to use R# with VS2005. It has pretty much all the important refactorings that R3 has, it has Find All References function, it has code snippets to cover pretty much all the R# goodness.
Finally, the architecture of R# is what slows down the loading time. It was discussed on their forums, but they basically load 70 assemblies on startup. Their model needs to be changed to load on demand – I don’t need all their features at once.
For me to go back to using R# (or other similar tool), it shouldn’t get in my way, load on demand, shouldn’t slow me down and allow me to pick & choose features that I want to use, rather than forcing it down my throat. I like MZ-Tools in that respect. I’ve told it not to load on startup and it only loads when I click one of its buttons.
I don’t think I can live without ReSharper ‘Ctrl + N’ & ‘Ctrl + Shift + N’.
‘Alt + F7’ (Find usages) and ‘Ctrl + F12’ (to nagivate the methods/props within the class are gold too.
This post may be dead – got here via Stack Overflow.
You say that Eclipse doesn’t have “nCover like” functionality – have you ever used Emma and its Eclipse plugins? Very sweet – better than nCover in VS2005.
Jared: Yes, I’ve used Emma – I think when I last used it properly the Eclipse plug-in wasn’t particularly functional. I’m glad to hear it’s better now :)