# Monday, January 04, 2010
« Model mismatch | Main |

I've been using MonoDevelop on Ubuntu this weekend, because it just doesn't feel right to use it on Windows. If you have Windows and need to write C# code, I'm sorry you're going to use Visual Studio, period.

Sun VirtualBox (VBox) has been instrumental in getting a Mono environment setup. VBox just rocks, but I did have one hickup. Initially I started with Suse Linux 11.2 because that's officially supported by MonoDevelop, but it kept throwing segmentation faults on bootup when trying to load the NIC driver. I tried several reinstalls, 32 bit, 64 bit, KDE, Gnome, different NICs inside VBox; nothing worked, so I gave up and went back to my tried and true friend Ubuntu. I never did figure out the root cause.

Instead of compiling MonoDevelop from SVN or from the latest release tarballs (like I did last time) I just grabbed the latest and gratest version of MonoDevelop (v 2.0) out of the multiverse, which to my surprise is pretty new. This took a LOT less effort and was much more stable.

I was actually able to make some changes to my command line library and for the most part get the tests to pass in Linux/Mono. The SVN integration worked perfectly. The MonoDevelop usability was pretty good. No hard crashes. No super strange compilation errors, everything pretty much worked right out of the gates.

I did have a few issues:

  • Rename method or property fails and shows an exception dialog.
  • Adding a NUnit test class automatically references the NUnit.Core and NUnit.Framework Mono package - which causes a compilation error: Duplicate TestFixture attributes. Removing the auto added NUnit package references fixes this, but this was less than obvious.
  • Find Usages works most of the time, but also displays the declaration in the results.
  • Go to declaration doesn't always appear on a method.
  • No (obvious) way to interactively debug an NUnit test. Maybe there's a way to do this, but the only way I could find was to create a console app which runs an NUnit suite.
  • The syntax highlighting is pretty monotone (at least the default scheme)
  • The ability to automatically add a using statement when a used type isn't imported would be super handy. I've been using Re# far too long to NOT have this.

I will continue to use MonoDevelop, because its good enough and runs on Linux. Clearly it has a ways to go to compete with Visual Studio on Windows or many other Java or Ruby IDEs, but if you need to write C# code on Linux it'll certainly do. I'm hopeful the development experience with MonoDevelop will only get better in 2010.

Linux | Mono
Tuesday, January 05, 2010 11:37:23 PM (GMT Standard Time, UTC+00:00)
Well let's not forget MonoDevelop is free. Whether by circumstance or choice, MonoDevelop on Windows is now an interesting alternative to SharpDevelop. Now for a Mac user, it's behaving quite acceptably and is really just mindblowingly cool!
Dylan
Wednesday, January 06, 2010 12:15:56 AM (GMT Standard Time, UTC+00:00)
I agree that on the Mac and Linux, it's finally quite usable. A little more polish, and I think they'll have it nailed. Which would be awesome, since Java as a language sucks, but as a platform is pretty cool.

I'm still not sure I would choose it over SharpDevelop or even the free version of VisualStudio (although the NUnit support might convince me). I'm a ReSharper whore; I must have refactoring support that works reliably. On the other hand, Visual Studio (esp w/Re#) is slow and bloated.

I'm tempted to try MonoDevelop at work and see how it does. Can I even compile the monster solution?
Wednesday, January 06, 2010 7:26:40 AM (GMT Standard Time, UTC+00:00)
ReSharper is what keeps me from using anything but Visual Studio for .NET development (emacs would be my preference :-) ). It's nice to see alternative (& free) editors/IDEs getting better for C# particularly from the Mono camp.

I've been using Snippet Compiler (http://www.sliver.com/dotnet/SnippetCompiler/) for lightweight validation of C# and understanding language features, but it gets painful beyond a few lines of code without R# (I too lament the inability to have the 'using' directives magically appearing).

I'd like to eventually try out and switch from Snippet Compiler to using Mono's CsharpRepl (http://www.mono-project.com/CsharpRepl) assuming I can get it working on Windows (but, again, I'll probably miss the auto-complete functionality of R#.)


Thursday, January 07, 2010 6:17:03 PM (GMT Standard Time, UTC+00:00)
The Mono team truly kicks ass. They already have C# 5.0 features in their trunk, as well as some numerical optimizations they put in for some game developers who were using Mono in their engine.

There is a Mono compatability analyzer (MOMA) that can run inside of Visual Studio.
http://www.go-mono.com/monotools/Moma.aspx

But if you are still working at Daptiv and thinking about compiling that solution.
No, just no. It's just too... just no. It won't.

There's lots of talk about porting R# to MonoDevelop, either by Jetbrains or a community effort.
Friday, January 08, 2010 1:57:48 AM (GMT Standard Time, UTC+00:00)
Indeed the Mono team does kick ass. I would love to be able to write truly portable C# code... and in many cases I already can.

I'm pretty sure you're right that the VS solution at Daptiv won't work with its 50 projects of varying quality, but I figure it would be a good test case of pure torture. Even if it did open, it wouldn't compile. There's no way all the tests would ever work, even though they're all ported to NUnit now.

Re# for MonoDevelop would great, but Jetbrains coming out with their own .NET/Mono/Windows/Mac/*Nix IDE would be awesome! That certainly would allow me to develop with pleasure.
Monday, January 11, 2010 4:58:49 PM (GMT Standard Time, UTC+00:00)
I wondered how Re# would work with emacs keybindings, about as well as I suspected. At least emacs carries over between languages and platforms.

I'm going through some of the same problems relearning the Re# keybindings. I've been using Re# since 2.5 when they only had IntellJ bindings, so I'm unlearning that in favor of the newer VS Re# bindings because pair programing is proving to be troublesome since everyone else uses the VS bindings.

I looked at some of the Mono documentation (they completely redid their website last week), and it looks like it shouldn't be a problem to run C# REPL on Windows.
Name
E-mail
(will show your gravatar icon)
Home page

Comment (Some html is allowed: a@href@title, strike) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Enter the code shown (prevents robots):

Live Comment Preview