Mono es una plataforma de software diseñada para permitir a los desarrolladores crear fácilmente aplicaciones multiplataforma.
Patrocinado por Microsoft, Mono es una implementación de código abierto de .NET Framework de Microsoft como parte de .NET Foundation y basada en los estándares ECMA para C# y Common Language Runtime. Una creciente familia de soluciones y una comunidad contribuyente activa y entusiasta están ayudando a posicionar a Mono para convertirse en la opción líder para el desarrollo de aplicaciones multiplataforma.
Mono, la plataforma de desarrollo de código abierto basada en .NET Framework, permite a los desarrolladores crear aplicaciones multiplataforma con una productividad de desarrollador mejorada. La implementación .NET de Mono se basa en los estándares ECMA para C# y Common Language Infrastructure.
Con el respaldo de Novell, Xamarin y ahora Microsoft y la Fundación .NET, el proyecto Mono cuenta con una comunidad colaboradora activa y entusiasta. Mono incluye herramientas de desarrollo y la infraestructura necesaria para ejecutar aplicaciones de servidor y cliente .NET.
Los componentes
Hay varios componentes que componen Mono:
Compilador de C#: el compilador de C# de Mono tiene funciones completas para C# 1.0, 2.0, 3.0, 4.0, 5.0 y 6.0 (ECMA). Una buena descripción de las características de las distintas versiones está disponible en Wikipedia.
Mono Runtime: el tiempo de ejecución implementa la infraestructura de lenguaje común (CLI) de ECMA. El tiempo de ejecución proporciona un compilador Just-in-Time (JIT), un compilador Ahead-of-Time (AOT), un cargador de biblioteca, un recolector de basura, un sistema de subprocesamiento y funcionalidad de interoperabilidad.
Biblioteca de clases de .NET Framework: la plataforma Mono proporciona un conjunto completo de clases que proporcionan una base sólida sobre la que crear aplicaciones. Estas clases son compatibles con las clases de .NET Framework de Microsoft.
Biblioteca de clases Mono: Mono también proporciona muchas clases que van más allá de la biblioteca de clases base proporcionada por Microsoft. Estos proporcionan funciones adicionales que son útiles, especialmente en la creación de aplicaciones Linux. Algunos ejemplos son clases para Gtk+, archivos Zip, LDAP, OpenGL, Cairo, POSIX, etc.
Aspectos destacados de las funciones mono
Multiplataforma
Se ejecuta en Linux, macOS, BSD y Microsoft Windows, incluidos x86, x86-64, ARM, s390, PowerPC y mucho más.
Multi lenguaje
Desarrolle en C# 4.0 (incluido LINQ y dinámico), VB 8, Java, Python, Ruby, Eiffel, F#, Oxygene y más.
Compatible con binarios
Construido sobre una implementación de la infraestructura de lenguaje común de ECMA y C#.
API compatible con Microsoft
Ejecute aplicaciones ASP.NET, ADO.NET, Silverlight y Windows.Forms sin recompilación.
Código abierto, software gratuito
El tiempo de ejecución, los compiladores y las bibliotecas de Mono se distribuyen mediante la licencia MIT.
Cobertura tecnológica integral
Enlaces e implementaciones administradas de muchas bibliotecas y protocolos populares.
Los beneficios
Hay muchos beneficios al elegir Mono para el desarrollo de aplicaciones:
Popularidad: gracias al éxito de .NET, hay millones de desarrolladores que tienen experiencia en la creación de aplicaciones en C#. También hay decenas de miles de libros, sitios web, tutoriales y códigos fuente de ejemplo para ayudar con cualquier problema imaginable.
Programación de nivel superior: todos los lenguajes Mono se benefician de muchas características del tiempo de ejecución, como administración automática de memoria, reflexión, genéricos y subprocesos. Estas características le permiten concentrarse en escribir su aplicación en lugar de escribir el código de infraestructura del sistema.
Biblioteca de clases base: tener una biblioteca de clases completa proporciona miles de clases integradas para aumentar la productividad. ¿Necesita un código de socket o una tabla hash? No es necesario escribir el tuyo propio, ya que está integrado en la plataforma.
Plataforma cruzada: Mono está diseñado para ser multiplataforma. Mono se ejecuta en Linux, Microsoft Windows, macOS, BSD y Sun Solaris, Nintendo Wii, Sony PlayStation 3, Apple iPhone y Android. También se ejecuta en x86, x86-64, IA64, PowerPC, SPARC (32), ARM, Alpha, s390, s390x (32 y 64 bits) y más. Desarrollar su aplicación con Mono le permite ejecutarla en casi cualquier computadora existente.
Common Language Runtime (CLR): CLR le permite elegir el lenguaje de programación con el que más le guste trabajar y puede interoperar con código escrito en cualquier otro lenguaje CLR. Por ejemplo, puede escribir una clase en C#, heredarla en VB.NET y usarla en Eiffel. Puede optar por escribir código en Mono en una variedad de lenguajes de programación.
Vamos a instalar el entorno de código abierto de .NET para programar en C#:
En Ubuntu 24.04 LTS:
$ sudo apt install ca-certificates gnupg
$ sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
$ echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-noble main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
$ sudo apt update
En Ubuntu 22.04 LTS:
$ sudo apt install ca-certificates gnupg
$ sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
$ echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-jammy main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
$ sudo apt update
En Debian 12 y MX-Linux 23
$ sudo apt install dirmngr ca-certificates gnupg
$ sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
$ echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/debian stable-bookworm main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
$ sudo apt update
Instalar Mono.NET
Se debe instalar el paquete mono-devel para compilar el código.
Se debe instalar el paquete mono-complete para instalar todo; esto debería cubrir la mayoría de los casos de errores de “ensamblaje no encontrado”.
El paquete mono-dbg debe instalarse para obtener símbolos de depuración para las bibliotecas del marco, lo que le permitirá obtener números de línea en los seguimientos de la pila.
Se debe instalar el paquete referenceassemblies-pcl para admitir la compilación PCL; esto resolverá la mayoría de los casos de errores de “Framework no instalado: .NETPortable” durante la compilación del software.
Se debe instalar el paquete ca-certificates-mono para obtener certificados SSL para conexiones HTTPS. Instale este paquete si tiene problemas para realizar conexiones HTTPS.
Se debe instalar el paquete mono-xsp4 para ejecutar aplicaciones ASP.NET.
$ sudo apt install mono-devel mono-complete mono-dbg referenceassemblies-pcl ca-certificates-mono mono-xsp4
MonoDevelop IDE multiplataforma para C#, F# y más
MonoDevelop permite a los desarrolladores escribir rápidamente aplicaciones web y de escritorio en Linux, Windows y macOS. También facilita a los desarrolladores la migración de aplicaciones .NET creadas con Visual Studio a Linux y macOS manteniendo una única base de código para todas las plataformas.
Características destacadas
Multiplataforma
Soporta Linux, Windows y macOS.
Edición de texto avanzada
Soporte de finalización de código para C#, plantillas de código, plegado de código.
Banco de trabajo configurable
Diseños de ventanas totalmente personalizables, combinaciones de teclas definidas por el usuario, herramientas externas
Soporte de múltiples idiomas
C#, F#, Visual Basic .NET, Vala
Depurador integrado
Para depurar aplicaciones Mono y nativas
GTK# Diseñador Visual
Cree fácilmente aplicaciones GTK#
ASP.NET
Cree proyectos web con soporte completo para completar código y pruébelos en XSP, el servidor web Mono.
Otras herramientas
Control de código fuente, integración de archivos MAKE, pruebas unitarias, empaquetado e implementación, localización.
$ sudo apt-get install monodevelop
Verificando que todo funciona.
Después de instalar Mono, probablemente sea una buena idea ejecutar un programa rápido Hola Mundo para asegurarse de que todo esté configurado correctamente. De esa manera sabrás que tu Mono está funcionando antes de intentar escribir o ejecutar una aplicación más compleja.
Consola Hola Mundo
Para probar la funcionalidad más básica disponible, copie el siguiente código en un archivo llamado hello.cs.
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
Console.WriteLine ("Hola Mono Mundo");
}
}
Para compilar, use csc:
$ csc hello.cs
Nota: el compilador csc no está disponible en todas las plataformas o en versiones Mono muy antiguas; en tales casos, utilice mcs en su lugar.
El compilador creará “hello.exe”, que puedes ejecutar usando:
$ mono hello.exe
El programa debería ejecutarse y generar:
Hola Mono Mundo
Conexiones HTTPS
Para asegurarse de que las conexiones HTTPS funcionen, ejecute el siguiente comando para verificar si puede conectarse a nuget.org:
$ csharp -e 'new System.Net.WebClient ().DownloadString ("https://www.nuget.org")'
El programa imprime el contenido del sitio web si todo funciona o genera una excepción si no funciona.
WinForms Hola mundo
El siguiente programa prueba la escritura de una aplicación System.Windows.Forms.
using System;
using System.Windows.Forms;
public class HelloWorld : Form
{
static public void Main ()
{
Application.Run (new HelloWorld ());
}
public HelloWorld ()
{
Text = "Hello Mono World";
}
}
Para compilar, use csc con la opción -r para indicarle al compilador que extraiga las bibliotecas de WinForms:
$ csc hello.cs -r:System.Windows.Forms.dll
El compilador creará “hello.exe”, que puedes ejecutar usando:
$ mono hello.exe
ASP.NET Hola mundo
Crea un archivo de texto con el nombre hola.aspx y el contenido:
<%@ Page Language="C#" %>
<html>
<head>
<title>Sample Calendar</title>
</head>
<asp:calendar showtitle="true" runat="server">
</asp:calendar>
Luego ejecute el comando xsp4 desde ese directorio:
$ xsp4 --port 9000
Utilice un navegador web para contactar http://localhost:9000/hello.aspx
Gtk# Hola Mundo
El siguiente programa prueba la escritura de una aplicación Gtk.
using Gtk;
using System;
class Hello
{
static void Main ()
{
Application.Init ();
Window window = new Window ("Hello Mono World");
window.Show ();
Application.Run ();
}
}
Para compilar, use mcs con la opción -pkg para indicarle al compilador que extraiga las bibliotecas Gtk# (tenga en cuenta que Gtk# debe estar instalado en su sistema para que esto funcione):
$ mcs hello.cs -pkg:gtk-sharp-2.0
El compilador creará “hello.exe”, que puedes ejecutar usando:
$ mono hello.exe
Pues finalizamos el articulo verificando que todo funciona, ya tenemos instalada la plataforma de código abierto Mono.NET y IDE para desarrollar software en C# en MX-Linux, Debian, Ubuntu y Linux Mint.
Fuente oficial y traducción del inglés al español en https://www.mono-project.com/