SharpDevelop 3.0 vs Visual Studio Express edition

For developers who  don’t know, SharpDevelop is a great free IDE for developing .Net framework applications. SharpDevelop is comparable to the express editions of Visual Studio. So since they are comparable, I will compare them in this post.

On februari the 10th 2009 sharpdevelop 3.0 was released, you can download it here. The version before this one was 2.2 and was released on the 8th of august of 2007, that is a long gap. I thought that SharpDevelop was dead. The 3.0 version shows that it is alive and kicking.
The visual studio express editions are also great. Just the idea of giving away a free IDE to starting developers or just developers who can’t or will not pay for the full editions  of Visual Studio is magnificent. The express editions can be found here

First Impressions
When you spent a lot of time in Visual Studio, starting up the express editions will make you feel right at home. Everything is where you think it is. Stating SharpDevelop will make you feel a bid off. It is like someone has build a new house, redecorated it and made it look like your own house, but you know it isn’t. Still once you see there is enough beer in the fridge and have found the remote , you can have lot of fun in the new house also.
ExpressFirstImpression
Spoiled by Resharper
In my normal development I am totally spoiled by Resharper. These IDE’s don’t support Resharper. How easy are they to use without Resharper.
Renaming a class with Resharper  also renames the file that the class is in, if you want it to. Resharper also renames all references to your renamed class and even gives you a change to change them in comments AND strings. SharpDevelop does not rename the file directly but if it detects that the class and filename are different it gives you the option to rename the file from right clicking the class name. SharpDevelop does also rename all references but does not look at comments by default. The Express Editions give the option to rename also in comments OR strings, it does not rename the filename.

When I use a class that is in the same solution but in another project Resharper gives me the option to reference the project and insert a using statement with a single shortcut. After making a reference in SharpDevelop and the Express Editions by hand you can add the using statement with a right and left click.

In general neither wins, only Resharper wins.

Add Ins and external tools
The express editions let you define your own external tools, so you can startup notepad or ildasm from your IDE and pass in parameters from your IDE. SharpDevelop lets you do the same but by default has already defined some of them. Extra to this SharpDevelop has a Regular Expression Toolkit a resource toolkit, support for subversion, FXCop and stylecop. I can see a lot more of these add- ins for SharpDevelop being developed. The express editions don’t have and probably never will have these possibilities because , and I quote :” We made a business decision to not allow 3rd party extensibility in Express.” From this post.

SharpDevelop wins this one easily.

Targeting .net frameworks
Both IDE’s by default target .net Framework 3.5 but also support 3.0 and 2.0. In addition SharpDevelop supports compact framework 3.5 and 2.0.

Another point for SharpDevelop.

Web Development
This one makes me a little sad. SharpDevelop just fails short to the “visual web developer express edition”. The express edition has a graphical designer for the pages, split screen functionality, javascript debugging possibilities and his build in web server. SharpDevelop has not.

A big win for the express editions.

Little Annoyances
The express editions don’t support solution folders, luckily SharpDevelop does.
If you want to combine a console or windows forms application with a web application or web service in a single solution the express edition don’t support this,  SharpDevelop does.

Two point for SharpDevelop.

Conlusion
If I have to choose for web applications than the express edition wins easily. The build in webserver, the graphical designer with split screen functionality and javascript debugging just make it too good.
If you think you really need to work with a database from within the IDE than also SharpDevelop is not for you. If you want to create a windows forms or console application both will work fine, if you want to build these applications more seriously and use a source control system, static code analysis and stylecop from the IDE you need SharpDevelop !

If the express editions would allow third party extensibility (Resharper) and solve my little annoyances,  it would be number one.
If SharpDevelop would get a resharper add-in, a graphical designer for web pages and a build in web server, it would be number one.

Feature Table
Matt Ward did a comparison of SharpDevelop 2.1 and the Express Editions at that time here. I stole his table and reevaluated. Thanks Matt I hope you don’t mind. The result is shown below:

Feature SharpDevelop 3.0 Visual Studio Express Editions
Code auto-completion Yes Yes
Code syntax highlighting Yes Yes
Windows Forms Designer Yes Yes
Web Forms Designer No Provided with Visual Web Developer
Code Coverage Yes No
Unit Testing Yes No
Languages Supported C#, VB.NET, Boo,F#, Python, ILASM C#, C++, VB.NET, J#
Help documentation No Yes
Plug-in support Yes No explicit support for plug-ins however third party plug-ins can work with the Express edition.
Insert PInvoke Signatures Yes No
Testing Regular Expressions Yes No
Class View Yes Yes
Solution Explorer Yes Yes
Project and Solution File Format MSBuild MSBuild
Web references Yes Yes
Refactorings Rename, Extract Method, Extract Interface Rename, Extract Method
Go to definition Yes Yes
Find References Yes Yes
Code generation Yes. Not as powerful as Visual Studio’s Code Snippet Manager. Yes
Object Browser Yes Yes
Database Explorer Yes. Lacking support for many database providers. Yes
Publishing No Yes
Data Sources View No Yes
Add Data Source Wizard No Yes
Document Outline View No Yes
Resources Local only Local and project
ActiveX Toolbox Items Partial – need to generate .NET interop library Yes
Integrated debugger Yes Yes
Targeting different .NET frameworks Yes Yes
Code Completion for different .NET frameworks Yes Yes
Reporting Yes Yes through the report viewer plug-in
Task List Yes Yes
Error List Yes Yes
Database Designer Tools No Yes
Code conversion Yes No
Integrated NAnt support Yes No
Integrated WiX support Yes No
Integrated FxCop support Yes No
Navigation History Yes Yes
XPath Queries Yes No
Incremental Search Yes Yes
XML documentation preview and generation Yes No
Solution Folders Yes No
Class Diagram Yes No
Build in webserver No Yes
Integrated subversion support Yes No

  SharpDevelopFirstImpression

Hooking into the world wide web.

Yesterday I taught a developer centric training class for starting in software architecture. During this class we discussed a few information sources on the web. While putting together the mail for the students in which I mention a lot of the information sources, I thought this would make a nice blog post. So here are the links.

 

Online rss readers:                                                                

http://www.bloglines.com/

http://www.google.com/reader/

 

Good rss feeds:

http://codebetter.com/

http://www.infoq.com/

http://architects.dzone.com/

http://nplus1.org/

http://blogs.msdn.com/jmeier/default.aspx (look at the pocket guides )

 

Link collections: (if you don’t want to plough through 320 feeds yourself)

http://www.arjansworld.com/

http://www.alvinashcraft.com/

http://blog.cwa.me.uk/

 

podcasts:

http://www.dotnetrocks.com/

http://www.hanselminutes.com/default.aspx

http://se-radio.net/

http://thirstydeveloper.com/default.aspx

 

screencasts

http://www.dnrtv.com/ (check out the design pattern series with JP Boodhoo shows 63,65,68,71,92)

http://channel9.msdn.com/

http://channel9.msdn.com/shows/ARCast_with_Ron_Jacobs/

 

free magazines

https://www.msarchitecturejournal.com/Default.aspx

http://www.microsoft.com/netherlands/studenten/informatie/dotnetmagazine.aspx (Dutch)

http://selfservice.abonneren.nl/titels/computable/abonneren.html;jsessionid=C7FD65099CA5399EA1133ED3BB9E2C12 (Dutch)

 

msdn:

http://msdn.microsoft.com/en-us/architecture/default.aspx

 

Good site for asking questions

http://stackoverflow.com/

 

Sogeti related sites (I work for Sogeti):

http://dsa.sogeti.nl/

http://www.clemensreijnen.nl/

http://blog.softwarefun.nl/ (not much to read yet J )

 

The list isn’t complete and it isn’t meant to be. I have given people my opml file with 320 feeds (No I don’t read them all completely) and it was just too much. This list is a way to get started.

 

Good additions are welcome in the comments off course.