Running .NET applications on Linux Embedded Systems
You may have some applications developed using Microsoft .NET application framework that are running on Windows XP, Windows Vista and Windows 7.
If after spending much effort and time, you have a request to port your application to Linux, you don’t need to rewrite everything thanks to Mono, an open source implementation of .NET framework that can be run in Windows, Linux and MacOS.
The development framework is composed of three parts:
- Mono – An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET
- MonoDevelop – An open Source C# and .NET development environment for Linux, Windows, and Mac OS X
- Mono Tools for Visual Studio – Development Tools to develop and migrate .NET applications to Mono on Linux without leaving Visual Studio. This application can be tried for 30 days and / or purchased. This tools is compatible with Visual Studio 2008 and Visual Studio 2010.
A large number of applications already use mono including:
- Unity3D – Unity is is a 3D game editor with powerful cross-platform capabilities (also used together with Qualcomm Augmented Reality development kit)
- gTwitter – A standalone GTK# twitter application
- Paint.NET – A port of Paint.NET 3.0 to run on Linux
- Nant – A free .NET build tool.
- Ayuda OpenSplash – A (soon to be) open source digital signage player
Mono 2.8 is compatible with all versions of .NET (up to .NET 4.0). However mono is not 100% compatible with all features of the .NET framework, here are the limitations:
- .NET 4.0 Limitations:
- CodeContracts – API complete, partial tooling
- EntityFrameworks – Not available.
- Server-side OData – Depends on Entity Framework.
- .NET 3.5 Limitations: N/A
- .NET 3.0 Limitations:
- WCF – silverlight 2.0 subset completed
- WPF – no plans to implement
- WF – Will implement WF 4 instead on future versions of Mono.
- .NET 2.0 Limitations: N/A
- .NET 1.1 Limitations:
- System.Management – does not map to Linux
- System.EnterpriseServices – deprecated
mono can also be used for ARM and MIPS platforms running Linux and other OS.
It is currently running on iPhone, Linux (Maemo) and Android devices such as Nokia 770
The best way to cross-compile .NET framework for ARM is to use ScratchBox, a cross-compilation toolkit for Linux.
The instructions to cross-compile Mono native code (Virtual Machine to run on ARM) and managed code (C# toolchain) are available at http://www.mono-project.com/Mono:ARM#Building_Mono.
Since Mono 1.2.1, mips targets are also supported.
If your systems is low on flash, follow the instructions to reduce mono footprint.