Rating: 4 out of 5 stars
A short time ago, I had the opportunity to try out IC#Code's SharpDevelop to develop a file system–watcher Windows service in C#. To my surprise and delight, I found that SharpDevelop comes with a lot of bells and whistles that one would expect to find in a professional-grade IDE. From what I understand, that has helped SharpDevelop establish itself as a strong competitor in the freeware realm. This article provides an overview of SharpDevelop 4.0. (The latest version, released after this article was written, is 4.1.)
Getting Up and Running
SharpDevelop runs on Windows 7, Windows XP SP2, or Windows Server 2008 R2. Installing SharpDevelop is simple. To do so, go to the IC#Code site's download page and select the version of SharpDevelop that corresponds to your version of .NET. Keep in mind that each major release of SharpDevelop is meant to run against the equivalent .NET version. Hence, version 4 requires that you have .NET Framework 4.0 installed on your machine, version 3.2 requires .NET 3.5, and version 2.2 requires .NET 2.0 (version 2.2 and earlier are no longer supported). The .NET Framework is not packaged with SharpDevelop, so you have to get it from Microsoft's site if you don't already have it installed or would like to upgrade. The SharpDevelop page provides links to the .NET download pages for your convenience.
Creating a Project
The first time that you launch SharpDevelop, you'll see the Start Page, shown in Figure 1. Other visible panes include Projects on the left side of the page, Errors at the bottom, and Classes on the right.
When you start a new project by clicking New solution on the Start Page, the New Project dialog is displayed, as shown in Figure 2. You can select a number of project types from the New Project dialog. SharpDevelop supports many other languages in addition to C#, including Boo, C++, F#, Python, Ruby, and Visual Basic. Within each language category, there may be several project types available to you. Each project type will produce a slightly different template to start your coding.
For example, selecting Console Application from the New Project dialog, as I did in Figure 2, produced the code shown in Figure 3. The code provided by any of the SharpDevelop templates is enough to run a minimal functioning application. The code in Figure 3 prints the familiar "Hello World!" greeting to the console.
Familiar Look and Feel
The makers of SharpDevelop went a different route than did some other IDEs -- such as IronPython Studio (integrated edition) and Gizmox's Visual WebGui -- by not integrating into Visual Studio. Instead, the SharpDevelop IDE mimics the layout of Visual Studio in many respects, as you can see in Figure 4. This decision has both positive and negative implications. On the plus side, it makes it easier for .NET developers to learn to use the SharpDevelop IDE. It also saves us from having to download and install yet another product (Visual Studio). On the negative side, the resulting installation file is rather large. My personal opinion is that SharpDevelop's standalone design can be attributed to its inception as a C# IDE, which subsequently grew to support other languages.
You could say that SharpDevelop is a more streamlined counterpart to Visual Studio, but perhaps it's a bit much to compare SharpDevelop to Visual Studio Professional. A more apt comparison would be to Visual Studio Express, with which SharpDevelop compares quite favorably. Some of SharpDevelop's more noteworthy features include a refactoring tools menu, code auto-insert, an integrated debugger, and even add-in extensibility (just like the old Visual Basic IDE).
A few third-party tool commands are integrated into the SharpDevelop IDE and available to you once the product is installed. These include Microsoft's StyleCop code-analysis and FxCop assemblies-analysis tools, as well as the outstanding TortoiseSVN interface to the Subversion version control system and Microsoft's Sandcastle Help File Builder.
It's hard to beat Microsoft's Help facilities and documentation. SharpDevelop's Help is somewhat weak by comparison; it's really just a link to an online wiki. I prefer traditional Help files, but maybe I'm just old school. Another small gripe I have is that you still have to go outside the IDE to perform certain tasks. For instance, I had to install my File Watcher service using a DOS command prompt. In Visual Studio, you can install the service by following Visual Studio Tools, Visual Studio.NET 2005 Command Prompt from the menu.
A number of other .NET IDEs compete with SharpDevelop. One such product, also free, is MonoDevelop. Recently, I tried a product called Visual WebGui, available in both free and professional editions, for form creation and deployment of applications to the web, mobile, and cloud. (For more information about Visual WebGui, see Alvin Bruney's review of Visual WebGui Professional Studio 6.4. Finally, if you're willing to pay some money for a product, check out PrimalScript by Sapien Technologies, a mid-level IDE for working with .NET, VBScript, Windows PowerShell, HTML, ASP.NET, ActionScript, KiXtart, XML, and other technologies.
I can't help but recommend SharpDevelop despite its rigid .NET version coupling and lack of traditional Help files. It's just so darned enjoyable to use, not to mention productive! After developing in the Visual Basic IDE for years, I found the look and feel of SharpDevelop to be similar in all the right ways. Although I found a few of SharpDevelop's tools lacking, overall I found that SharpDevelop offered a great deal of capability for a free .NET IDE. If you can do without some of the features provided by Visual Studio Professional, you might just find yourself pleasantly impressed by this feature-packed development tool!