I have been playing a little bit with MonoDevelop as an alternative to running a VM from OS X for C# development. After spending a little time with it, MonoDevelop really isn’t that bad…

(I can hear the *hissing* from naysayers)

… Really! It’s not Visual Studio, mind you, but it’s still a great IDE. For OS X, the latest versions have pretty awesome coverage of the .NET 4.0 specification and C# 4. Even a good portion of the .NET 4.5 specification is supported and C# 5 is on the way!

I’ll go over a few things that I really like and don’t like about the experience so far.

The Good

Code completion is extremely boss in MonoDevelop. Here you can see the type-ahead completion and extracted documentation rendering in the IDE while I code:

I love this type of code completion. Even the most tepid command-line programmers can’t poo-poo this kind of functionality.

The Solution View – navigating your files

Next, the IDE does this wonderful thing where only one project is open at a time and provides a clear “solution” view as well as other useful perspectives for viewing, editing, and debugging projects.

Just like Visual Studio, you can see all of the projects and resources associated with your solution and can easily manage them. Projects unrelated to what you are doing are not cluttering your workspace and sucking up valuable space in your IDE.

Debugging

Here you can see code with a breakpoint and interactive debugging being performed from MonoDevelop, it’s very slick!

Here you can see the watch and immediate windows, you might exclaim, “I can’t believe it’s not Visual Studio! Same great taste!”

Overall, the MonoDevelop team has the basics covered and much more, even approaching into addressing all the “nice to have” things as well.

The Bad

Some core library and developer functionality just plain isn’t there. I’m not sure if it’s Mono, MonoDevelop, OS X, or gremlins, but there are certain times that you will see things like this:

Most of the time, this doesn’t affect you, the coverage that you get on the Mono platform is surprisingly good.

Regardless of your Mono version, you will sometimes have to do weird things to get your code working. This could be due to programmer laziness because Visual Studio is basically cruise control + autopilot for programmers or it could be due to the very heterogeneous environments in which Mono(Develop) runs in. Regardless of the cause, you have to do some magic bone waving in order to get your project running if you created it on Windows with Visual Studio.

Using MonoDevelop in practice

Speaking of magic bone waving, I got the Google+ C#/.NET Quickstart working from MonoDevelop on OS X! I only had to do one little trick to get DotNetOpenAuth to stop complaining… the following steps should be enough to get you going:

Place the extracted DLL from the Mono folder into the services folder alongside the other libraries

Profit!

When you run the sample, the server will not by default go to the http://localhost:4567/signin.aspx page. Instead, it will load on the default development port, 8080, and will navigate to index.html the template file used for the project. The easiest way to get around these two things:

Manually enter the URL http://localhost:8080 into your browser when the code runs

That’s it!

Feel free to let me know what you think of MonoDevelop and whether you have any tips for using it, my first foray into using it has shown this to be a very promising, intuitive, and clean IDE. If only I could develop and manage Java projects with such a nice UI and the wonderful code completion and documentation integration…