After the clusterfuck that was SharpDevelop 1.1 (you know what I'm talking about if you've tried to use it for any serious projects), the constant pushbacks for Corsavy, and a forum post indicating that Corsavy hadn't been touched in months, it seemed like SharpDevelop was R.I.P.
It comes as bit of a suprise then that out of the blue the repository for Corsavy was opened for public consumption, and to be honest, I'm a bit amazed: SharpDevelop 2.0 is very, very good for what they consider alpha quality code.
Its got some pretty sweet features; when you find all references for a type, for instance, they appear in a little search window at the bottom, colorized by syntax and divided by columns. If you've had to deal with Visual Studio 2005's "let's cram everything onto one line in the same color and hope it works out" this is going to be sweet, sweet relief to you.
By default they ship supporting NUnit, MbUnit, and SVN support. You'll find SVN support under "Tools" which doesn't make as much sense as if first sounds when you think of it, but that's a minor problem.
Also nice to find was that if you right click on a project you have the option of deploying it via ClickOnce, although it seems that functionality for assembly signing hasn't been completed yet: ever see a ListBox with the words "TODO" in it before? Scary.
Generics support is just as you'd expect: generics in code completion. There's a minor annoyance when creating a generic type, as when you type List
Did I mention that the debugger works? We all know t
Oodles of small goodies, but they're like the little mints you find on your pillow at night: you don't notice them until you're there, and when you do, you smile. ;)
There are still some missing features, though:
- No background compiliation to check for errors. After having used Visual Studio 2005 and Eclipse for quite a bit, its become a *must.*
- No contextual help for error messages. This removes quite a few short-cuts that Eclipse and VS2005 made possible: you can't instanize a new type, click on the error message, and automagically import the namespace that holds the type.
- Weak refactoring. You can't refactor local variables, apparently, and the refactorings for methods and classes are pretty weak, as there are no convience refactorings like "explicitly/implicitly implement members" for interfaces and abstract classes.
- You can't "go to definition" or "find references" arbitrarily by left clicking in the source code; you have to use the little class/interface/property/field icons that appear to the left of the screen if you want to find references for a class. I cannot click on a local variable that is an interface and go to that interface's definition. I can't even "find references" for a varaible, which is sometimes uber useful!
Definitely something to keep my eyes on.