Programming Course in C# ¡Free!

What is Mono Project

 Friday, May 26, 2017 published by Exercises C#
Sponsored by Microsoft, Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime.
A growing family of solutions and an active and enthusiastic contributing community is helping position Mono to become the leading choice for development of cross platform applications.
What is Mono Project

Architecture model

This includes the CLI with the virtual machine that is responsible for loading the classes, the Just-in-time compiler and the garbage collector among others.
It has very good compatibility with the Microsoft .NET Frawework in many libraries and part also has extra libraries such as the GTK that allows you to create native graphical interfaces of the GTK toolkit.
The architecture model would be the following:
You can create many types of compatible applications between different platforms and systems. It is possible to create web projects with ASP.NET, connect to SQL Server or Oracle databases and create desktop applications using the GTK library.
If you are going to develop a multiplatform application using Mono, you will have to take into account the substantial differences between operating systems, such as the treatment of uppercase and lowercase letters in Linux or the management of routes.

Supported platforms

One of the main motivations for creating the Mono project was due to the need to create applications for Linux quickly and inexpensively.
Currently Mono is compatible with many more operating systems:
  • Linux
  • macOS, iOS, tvOS, watchOS
  • Sun Solaris
  • IBM AIX
  • BSD - OpenBSD, FreeBSD, NetBSD
  • Microsoft Windows
  • Sony PlayStation 4
  • XboxOne

Compatible languages

The Mono platform has compatibility with a multitude of programming languages ​​since it is easy to integrate it based on its architecture. The Mono project provides compilers in C#, Basic and llasm, besides there are free and commercial compilers that can be used.
See a complete list of all the programming languages ​​currently supported in this link.

Compatibility

Currently the compatibility between the .NET Framework and Mono is almost complete except for WPF, WWF, the limitations with WCF web services and the use of asynchronous methods in ASP.NET.

.NET 4.7

.NET 4.6

.NET 4.5

.NET 4.0

.NET 3.5

Development environment

The recommended work environment if you use Windows is Visual Studio, you can also compile your binaries with Mono. If you program in Linux or Mac OS X you will surely be able to work with the Visual Studio IDE. In any case there is the possibility of using Mono Develop independently of the operating systems that we have installed.

New Mono Interpreter

A new feature of Mono is the integration of a .NET interpreter creating a mixed compilation process, in which it is possible to perform a pre-compilation and add dynamic code in the execution of our applications.
$ mono --interpreter yourassembly.exe
It is a very useful function for iOS, PlayStation or Xbox developers, since it does not perform a static compilation of the source code and does not generate a new executable every time the application is updated, so the execution process is much faster in this type of systems.

Examples of applications

Tomboy is an example desktop application developed in C # using Mono and currently running on Linux, Unix, Windows and Mac OS X systems.
You can see more details in this link. And a list of more applications developed using this technology.

Curiosity

Name's origin
Mono is the name of an open source project initiated by Miguel de Icaza in the company Ximian and currently promoted by Novell (after the acquisition of Ximian) to create a group of free tools, based on GNU / Linux and compatible with .NET according to what is specified by the ECMA