For my entire working career, I have been a Microsoft boy. I use Windows (including desktop and server operating systems) and I am a .NET fanboy. It’s a fun environment to program with, flexible and the tools are great. Also I have never really given open source much thought. Not because I don’t agree with it, or anything negative, but I have just never really bothered with it. Until recently that is.
About 7 years ago, I tried Open Office, and I didn’t have a very good experience. More recently I have been having more problems with Microsoft Office. It is slow, clunky, and quite unreliable in that I experience more crashes with it than I would like. I decided to try Open Office again, well more specifically Libre Office as that’s what the cool kids seem to recommend. This suite has had quite a while to mature, and you know what, I love it. It is fast, compact, and reliable. It interoperates with Microsoft Office documents perfectly and is a joy to use, so I have made this a permanent switch.
This got me thinking. If something like Libre Office is a slick as it is, and Free (Free as in cost and freedom with the source being open), then what other goodies are out there. This has led me on to switching over to many open source tools instead of commercial tools. I now frequently use Gimp and XMind. I am also looking to switch away from Enterprise Architect to an open source UML tool. I haven’t picked my final tool yet, but Modelio is looking very good.
I have also starting having a go at producing my own open source projects, and Safepad and Text Shredder are the current fruits of my labour. So, I am pretty much covered on switchnig over to Open Source productivity tools. But what about my main love of developing .NET software. The .NET libraries and compiler are Free of charge. They are not open source, although you can decompile the source easily enough to see what’s going on, but Visual Studio is not free. You do have the Visual Studio Express editions, but they are just very cut down versions of the full thing to entice you into the full Visual Studio. The commercial versions can cost anywhere from $800 to $11000, depending on what edition you go for.
If you work for any .NET developer worth its beans, then you will most likely have an MSDN license which gives you access to all these tools, but what about if you want a full featured .NET development environment, that is not propriety and closed source? Sharp Develop is the answer. I first tried SharpDevelop about 5 years ago, and it was pretty good. No where near ready for prime time, but an interesting little IDE that showed promise. I have tried it again recently, and all I can say is WOW! SharpDevelop has come on a long way.
First up, you should check out the feature list at the Sharp Develop site. As you can see it is quite feature rich for free alternative. The types of projects and language supported it large too. Language wise it supports C#, VB.NET, Boo, IronPython, IronRuby, and F#. For my purposes I care mainly about C#. SharpDevelop support many useful project types too.
From a C# point of view it supports windows applications, windows services, ASP.NET MVC 3 and 4, Silverlight, WCF and WPF.
Testing SharpDevelop with an Existing Visual Studio Project
As a test I decided to try it out with an existing Visual Studio Project. For this I picked my SafePad application. This was originally developed in Visual Studio 2013 Ultimate Edition as a Winforms Application targeting the .NET 4.5 runtime. Thankfully Sharp Develop supports the Visual Studio Solution files and project files so this is a good start.
I was pleased to see that my project loaded up with no problems at all. All my projects where there in the solution and I could navigate around the code perfectly. Also, all my forms loaded up properly in the form designer.
On first compile, I encountered a few errors. These were due to the fact that in my original Visual Studio solution I was using the Visual Studio Static Code analyser, which in its current form is not supported in Sharp Develop.
This was easily resolved by loading up the properties for each project and disabling the static code analysis.
This isn’t really fixing the problem, but turning off the code analysis allowed the program to compile perfectly after that. You can do static code analysis in Sharp Develop with a separate FxCop add-in, but I have not tried this yet to know if I can use my existing ruleset file or have to create a new one.
Now that SafePad compiles I can run it and it works perfectly. It should do really as under the hood it is still using the same .NET compiler and libraries that Visual Studio uses. Sharp Develop does work with Mono too, but I haven’t tried this.
Next up I gave the debugger a try by setting a few break points. Sharp Develop contains a pretty standard set of debugging tools that instantly feels familiar when it comes to setting break points, watching variables etc. There wasn’t any surprises here, it just seemed to work, which is always a good sign.
Whilst this is only a quick little test of Sharp Develop, I am impressed so far. In terms of code editing the editor works as expected and the syntax highlighting looks sensible. There is also basic support for standard re-factorings styling. You can install an additional StyleCop plug-in which makes things a little more familiar with people used to productivity tools like resharper.
I was also pleased to see some code quality tools in SharpDevelop like a code dependency matrix. This should be familiar to anyone used to using tools like NDepend.
Currently my Safepad application contains a comprehensive suite of unit tests. Out of the box SharpDevelop supports NUnit tests and not MSTests, so I can’t run them straight away. There is an add-in that lets you support MSTest if needed, or I could just switch back to NUnit.
I have been pleasantly surprised by Sharp Develop. It certainly feels ready for prime time from my initial testing. For me, the next step is to use it on a full project. I have a few project ideas in mind, so I may just use Sharp Develop as my IDE of choice. But what about in my professional work? As great as Sharp Develop is, I think I will stick with Visual Studio. I don’t think it would be wise for me to switch teams over to using this tool when we have paid up licenses to MSDN and all the support that goes along with it. It would be interesting to hear if any commercial projects are done with Sharp Develop.