Run your .net applications on Linux !

Let us suppose that you are one of the greatest .net developers across and you want to use the Linux as the operating system then what will you do ? Will you admit that Windows is better than Linux..! I will say no, dont cry for space ! You just have to use MONO and you will save the world 🙂 

Mono is an open source project (sponsored by Novell) that allows you to run .Net applications on Linux (as well as Unix, Mac OS X, Solaris and even Windows). To obtain it, go to the Mono download page and find the version you need for your distro’s. Once you’ve installed Mono, get one of your .Net programmers to create and compile a simple Microsoft Visual Studio console application. Just something easy, such as: 

using System;

namespace ConsoleApplication1
    class Program
        static void Main(string[] args)
            Console.WriteLine("Hello World");

Transfer the compiled application from the Windows machine by using FTP or Samba, then log on to your Linux box and run the application:

$ ConsoleApplication1.exe Hello World 

Surely it can’t be as simple as that? Amazingly, it is. If you don’t believe that it’s Mono that’s allowing you to do this, try transferring the application to a Linux box that hasn’t got Mono installed. You’ll get a result something like: 

$ ConsoleApplication1.exe
-bash: ./ConsoleApplication1.exe: cannot execute binary file

You may need to run chmod +x on the file to get it to run. Also, I found that on Debian at this stage I got an error: The assembly mscorlib.dll was not found or could not be loaded. It should have been installed in the '/usr/lib/mono/2.0/mscorlib.dll' directory. I cured that by executing:  

$ cd /usr/lib/mono
$ sudo ln -s 1.0 2.0


The application name ends in .exe because it has been compiled as a Windows application. Once you’ve got it on Linux you can of course call it whatever you want: 

$ mv ConsoleApplication1.exe  HelloWorld
$ HelloWorld Hello World

You’ve just seen just how easy is to use a Microsoft Visual Studio application on Linux. However, you’re also probably thinking that you have absolutely no intention of using Windows at all; your .Net programmers are just going to have to have to learn to program in something that runs solely on Linux. That’s a good idea — if you’ve got the time for them to learn something new. If not, don’t despair. Mono comes with its own .Net compiler, mcs. To us it, paste the code for the ‘Hello World’ application above into a file, compile it (using mcs), then run the new application from the command line. 

$ mcs -out:HelloWorld.exe Program.cs
$ HelloWorld.exe

Hello WorldIf you’ve still got that Windows machine fired up, you may find it interesting to transfer the newly compiled application to it and running your app in Windows. You’ll find that you’ve created something on Linux that will also run on Windows. Of course, by the time you’ve explained all this to your .Net programmers they’ll be up in arms. “How can you expect us to program without a pretty GUI?” they’ll cry. “With Monodevelop,” you’ll say, referring to Mono’s integrated development environment (IDE). With Monodevelop your developers can happily work with Glade#, Gnome#, and GTK#, all within a .Net-type environment. 

Installing the software MONO: 

 sudo apt-get install mono-xsp 

Then running it: 

$ cd mono
$ xsp
Listening on port: 8080
Listening on address:
Root directory: /home/bainm/mono
Hit Return to stop the server. 

XSP will run in the directory where you start it, will use this as its home directory, and will use port 8080 by default. If you don’t want to have to change into that directory every time you start the server, you can use its --root option. To change the port, use the  –-port option: $ xsp –root ~/mono –port 8081 

When you’ve got your server up and running, go to Mono’s Web Services page, where you’ll find some good examples of the types of services that you can start running. However, if you’re desperate to see the server in action, go to the directory you’re running XSP from and cat the following into index.aspx: <%@ Page Language=”C#” %>
    Response.Output.Write(“Hello World!”);
</body> </html>Now open up a Web browser and type in the URL of your host (plus the port number) — e.g. http://hector:8080. Granted, this isn’t the most exciting example in the world, but it proves that you can run ASP .Net on Linux.

Enjoy !  

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s