The guys at the Mono Project have released their Mono Tools for Visual Studio. This must be one of the most anticipated projects of the year for me yet!

According to the official project page:

Mono Tools for Visual Studio is a commercial add-in for Microsoft™ Visual Studio™ that enables developers to write .NET applications for non-Windows platforms within their preferred development environment. It allows developers to build, debug and deploy .NET applications on Linux, while continuing to leverage the extensive ecosystem of code, libraries, and tools available for .NET.

While there’s a fair bit of marketing speak in there (I tune out pretty much whenever I hear the words “leverage” and “ecosystem”), the benefits are actually quite simple.

You can now remotely deploy and debug .NET applications on Mono directly from within Visual Studio!

I can’t begin to tell you how much help this is going to be in working on BlogEngine.NET on Linux. Unfortunately this capability isn’t open-source or free, but as a Visual Studio developer you’re probably going to be used to paying for features. Starting at $99 I guess it’s not too hefty a price to pay if you’re serious about using C# on Mono and Linux.

Here’s some of the awesome things you can do with it right now:

  • Directly deploy a .NET application to a remote Linux machine.
  • Debug and step through your code in Visual Studio as you run on a Linux box.
  • Built in portability checker for existing .NET applications.
  • Package your application as an .rpm for installation on distributions that support RPM’s (not Ubuntu unfortunately).

For more information, I’d suggest you go visit Miguel de Icaza’s blog, and also the official product page at the Mono project.

I’ll be following up this post shortly with a guide to getting it all to work on Ubuntu.

I’ve finally put together a bash script to automatically download, compile and install Mono on Ubuntu. At the time of writing, it installs Mono 2.4.2.3. Should this be outdated by the time you read this, you can simply modify the install script to download the latest files.

More...

The Mono team has just released Mono 2.4.2.1. This release is of particular significance because it contains support for ASP.NET MVC. That’s great news for me as I am now thoroughly addicted to MVC.

Mono 2.4.2.1 will install using the instructions in my existing tutorial, but I did have some trouble compiling the new release on my own server.

In particular, I had a SIGSEGV error while compiling Mono. I got around that by updating my system. So  make sure that update your system before compilation using “apt-get upgrade”.

Secondly, I ran out of memory while compiling again. It seems that as the mono documentation gets bigger, the memory required for compilation just gets more and more. I managed to compile with 450MB of free memory this time.

So head on over to my tutorial on Installing Mono on Ubuntu and give it a go yourself.

We've just released the final version of BlogEngine.NET 1.5 to the public. You can read more about the changes and improvements at Mads Kristensen's blog.

With this release we've worked hard to ensure that the application works out of the box on Linux using Mono. There is no compilation to be done and no configuration settings to tweak. It just works.

For those wishing to try this out, I've created a little tutorial called Installing BlogEngine.NET on Mono/Linux. As you will see there is hardly anything to it, it's just that easy.

So go on, give it a try and let us know how it pans out for you!

BlogEngineLogo

We've just made a release candidate for BlogEngine.NET 1.5 available over at the CodePlex site. As there are a number of changes and improvements to the code base, we'll be using the release candidate to test all the new changes. Please help us out and test as much as you can with this new release.

Aside from the improvements that Al mentions on his blog, this is the first release in a while that is completely Mono on Linux compatible out of the box.

Installing BlogEngine.NET on Linux is now as easy as installing Mono, copying the BlogEngine.NET files over to your server and configuring apache. To those that have tried that before I realise that it's easier said than done, so I will be putting together a BlogEngine.NET on Mono tutorial in the next couple of days.

If you are using BlogEngine.NET on Mono, please give the new release a test and let me know your results in the comments.

So Miguel just let slip on Slashdot that they're working on some very fancy features for Mono and ASP.NET / MVC.

I agree that Visual Studio is a very nice tool.

Luckily the code that you produce with Visual Studio will run on Mono (no recompilations necessary) including code that uses ASP.NET MVC. And with the new support for ASP.NET precompiled sites in Mono (available in Mono 2.4) you do not even need to copy the source code to your target server.

Click "Publish" in visual studio, enter the location for your shared directory, and you have a fully working ASP.NET MVC app running on Linux, without leaving Windows.

We are working on various integration points for Visual Studio that will give developers even more: debugging from Visual Studio remote applications deployed on Linux systems and producing packages ready-for-distribution on Linux. [Miguel on Slashdot]

I doubt that this was a secret to begin with, but it is the first I've heard of this and it excites me greatly. I mean, come on, debugging a Mono hosted ASP.NET application remotely using Visual Studio? It doesn't get better than this!

The Novell guys have pushed out another release of Mono, and I've just updated my VPS.

I'm glad to report that everything works great with BlogEngine.NET on Ubuntu. I've updated my instructions for installing Mono on Ubuntu to include the latest release.

If you haven't given Mono a go yet, what are you waiting for?

So I finally decided to upgrade my linux server to the latest Ubuntu, Mono and BlogEngine.NET.

As you can see it all worked out in the end, but only after 2 days of fighting trying to compile Mono 2.2. Let me point out though that it should not have been such a mission. Mono 2.2 does compile and install fine using the instructions you can find here.

The snag turned out to be the amount of memory available on my VPS. So here's a note of warning to everyone trying to compile Mono 2.2: You need more that 300 MB of RAM to make it work. Anything less and you're going to end up with the compilation process dying at random points with no indication as to the problem. 400 MB eventually did the trick.

As for BlogEngine.NET 1.4.5, it works fine on Mono except for the URL rewriting. A fix for that is available here.

If you've recently tried to install the latest version of BlogEngine.NET on Mono, you would have noticed that the URL rewriting does not work for posts, but does work for categories.

This comes down to a bit of an oddity in the mono ASP.NET runtime. It turns out that if you have a path like /posts/2009/03/09/slug.aspx and an actual file called /posts.aspx exists in the root site, mono gets confused and mangles the path.

In your URL rewriting IHttpHandler you'd expect the path returned by context.Request.Path to match what was requested, but in reality Mono will give you /posts.aspx.cs/2009/03/09/slug.aspx instead. This is obviously a bug in Mono, but it's fairly easy to work around.

To fix the issue in BlogEngine.NET, open UrlRewrite.cs in BlogEngine.Core and modify your context_BeginRequest method to look like this:

private void context_BeginRequest(object sender, EventArgs e) {
    HttpContext context = ((HttpApplication)sender).Context;
    string path = context.Request.Path.ToUpperInvariant();
    string url = context.Request.RawUrl.ToUpperInvariant();
    // fixes an oddity in mono where .aspx.cs is added
    path = path.Replace(".ASPX.CS", "");
    url = url.Replace(".ASPX.CS", "");
    ...
}

Compile and deploy!

I've had some requests for a tutorial on installing BlogEngine.NET on Linux (and in particular Ubuntu).

Getting BlogEngine.NET itself to run is the easy part, the hard part is getting the latest release of Mono compiled from source on Ubuntu and getting mod_mono and apache2 configured together.

So to that end I'm starting a series of tutorials, beginning with the installation of Mono 1.2.6 from source on Ubuntu 7.10 (Gutsy Gibbon). These instructions should also work on Ubuntu 6.10/7.04. The next tutorial will be focused on installing BlogEngine.NET itself.

Here's the first tutorial: Installing Mono from source on Ubuntu 7.10 (Gutsy Gibbon)

If you should have any issues with the tutorial, either contact me directly or add a comment on this post, and I'll attempt to guide you through any problems you may have. Any feedback should also help in creating a troubleshooting section for the tutorial to help others out that may have the same issues.


I am a software developer / architect currently interested in combining .NET technologies with open-source operating systems. 

I am a member of the open-source BlogEngine.NET development team and focus mainly on ensuring Mono compatibility for the project.

twitter

BlogEngine.NET


At StayUnlimited Cape Town accommodation we help you choose from and book guest houses, self catering apartments, bed & breakfasts, luxury villas and hotel accommodation.