The Mono Project recently released Version 2.0 of MonoDevelop, a full IDE for developing C# programs under the Mono runtime.
The short story is that if you've worked with Microsoft Visual Studio, you will see many similarities in MonoDevelop and will feel quite comfortable in the Mono environment. If you're new to MonoDevelop and haven't worked in Visual Studio, you'll find that the learning curve is not very steep.
One important change in Version 2.0 is the use of the MSBuild file format. Since Mono is an open-source implementation of Microsoft's .NET runtime, it makes sense to support as many .NET tools and formats as possible.
As somebody who has been faced with porting from Visual Studio to Linux and other operating systems, I can say that one of the biggest frustrations is the build process. With Visual Studio's proprietary build file formats (which are similar to make files, but not at all compatible with the standard make utilities), the support for MSBuild file formats is a welcome addition to MonoDevelop.
Another new feature is the way in which solutions are handled. Previously, MonoDevelop used nested solutions, but now, to be more compatible with Visual Studio's solution system, MonoDevelop allows you to organize projects as folders within a solution.
In addition to many other improvements-such as per-project policies and opening multiple solutions simultaneously (something you can't do in Visual Studio)-MonoDevelop now includes a powerful assembly browser. This tool is particularly useful for its ability to let you inspect the contents of an assembly, right down to the IL, including types and member definitions.
Originally, Mono did not support ASP.NET, but it wasn't long before support was added. Now, as the support has become stronger and more complete, MonoDevelop has been enhanced to offer full support for ASP.NET. For example, the Web projects (which are handled differently than non-Web projects within Visual Studio) are compatible with Visual Studio 2008, including Visual Web Developer. Again, this will make porting much easier.
Of course, MonoDevelop is for Linux, and, as such, it caters to the needs of the typical Linux developer. For example, the editor in MonoDevelop has almost full vi support, including most of the common vi commands.
Although many of us who work primarily in Visual Studio are perfectly comfortable with the Visual Studio editor, I personally know many Linux and Unix developers who are much more at-home with the vi editor. (And I, for one, can attest that once you learn vi, you never forget it.) So even though vi often gets a bad rap as being archaic, it's fast and efficient when you know what you're doing. This is a welcome addition to MonoDevelop.
Next, and this is a biggie, MonoDevelop now has full GUI support for debugging, both with MDB (Mono Debugger) and the standard GDB support. You can set breakpoints within the IDE, and step through your code, inspect and evaluate expressions, and more.
In short, MonoDevelop Version 2.0 is a fine tool that is on par with Visual Studio and offers many features beyond those that I've listed here. These include a split-view code editor; incremental search bar (something many of us love once we start using it); and code folding. You can see the whole list of improvements at http://monodevelop.com/Download/MonoDevelop_2.0_Released.
Finally, you'll want to be aware of one shortcoming: Right now, MonoDevelop is available only on Linux and Mac OS X, not Windows. However, this is temporary; a team within the Mono project is actively working on porting it to Windows. You'll want to keep an eye on the main page at monodevelop.com for more information.
Jeff Cogswell can be reached at firstname.lastname@example.org.