C#, crear una aplicación usando Mono [referenciando Windows.Forms]
Ya daba un pequeño ejemplo en la entrada “Acerca de Mono“, mas en la anterior ( C#, crear una aplicación usando Visual Studio) ponía dos ejemplos:
- Crear una aplicación en modo consola
- Crear una aplicación que usaba levemente la API de Windows.Forms
Pues bien, teniendo en cuenta que ya he explicado cómo se compilan y ejecutan aplicaciones simples, hagamos una en la que se utilice el namespace System.Windows.Forms. Supongamos que tenemos la aplicación en C# siguiente:
//Un mensaje en un MessageBox con C#
using System.Windows.Forms;
class Hola3
{
static void Main(string[] args)
{
MessageBox.Show("Hola Bill, no me gusta tu sistema");
}
}
Lo primero que debes tener en cuenta, es que es necesario que esté instalado el módudo Windows Forms para Mono. Ahora debemos referenciar el archivo System.Windows.Forms.dll al compilar la aplicación. En mi caso, dicho archivo se encuentra en /usr/lib/mono/1.0/, así que ejecutamos el compilador de mono para C Sharp (mcs) con el flag -reference (o solo -r), seguido de la ruta del archivo a referenciar:
casidiablo@punko:~/c#> mcs -reference:/usr/lib/mono/1.0/System.Windows.Forms.dll Hola3.cs
casidiablo@punko:~/c#> mono Hola3.exe
Lo cual mostrará lo siguiente:

Como ven funciona perfectamente… y me gustaría hacer una recomendación a los interesados en el tema: ustedes pueden usar en Mono en cualquier distribución de Gnu/Linux (y en muchas otras plataformas), pero yo les recomiendo que usen openSuse. ¿por qué? Bien:
- Mono es un proyecto sustentado por Novell (al igual que openSuse), y como se podrán dar cuenta en la página de descargas, el centro de atracción de la paquetería es openSuse y sus RPM.
- openSuse viene además con la posibilidad de que instales Mono desde el CD, así que desde el principio tendrás tu sistema con la capacidad de compilar y ejecutar aplicaciones con Mono. (además de venir con servidores Web y otras herramientas)
- Ubuntu no es un buen sistema para desarrollar software, es más para usuarios “normales”… por ejemplo al instalarlo no tienes nisiquiera el gcc preinstalado, así que, aunque puedas usarlo con Mono, lo más probable es que tengas más problemas que usando openSuse. Pero claro, todo es decisión tuya.
56 Comentarios | deja el tuyo





y este framework, es libre o propietario?….entonces la plataforma mono no te serviria de nada, para hacer y correr aplicaciones desarrolladas con el IDE Monodev?
El framework de .NET es gratuito, pero no libre.
Lo que hace mono es permitirte desarrollar y ejecutar aplicaciones .NET sobre entornos como Linux y MacOSX, y que además puedas portar el código a Windows sin hacer muchas modificaciones.
yap, que al final, la plataforma mono sirve para emigrar las aplicaciones existentes en windowns, y desarrolladas en .NET al mundo de linux….pero esas aplicaciones no dejan de ser propietarias…mira…me gustaria enviarte algo que redacte para que me lo revises, tu pareces tener conocimientos bien solidos sobre esto de las plapataformas.
gracias por tu tiempo amigo.
Pues hombre. Siento decirte que no tengo tantos conocimientos como insinuas, y peor aún, no poseo mucho tiempo para ayudarte.
Un saludo!
Casidiablo, pero si la idea usar software libre, no creo que la mejor forma para que corra la aplicacion desarrollada en Mono en sistema operativo windowns, es usar framework. Net, lo mejor seria usar las librerias GTK#, y despues correrlo sobre la version de mono para windowns, asi si usarias software libre.
Si quieres que corra en Windows sin tener que instalar nada adicional (sobre el Microsoft .Net Framework), debes usar bibliotecas estándares de .Net (nada de Gtk# y esas cosas). De lo contrario tendrías que instalar esas dependencias en Windows. La otra forma de que te corra sin lío en Windows es que instales el mono para Windows y corras tu aplicación siempre sobre Mono.
Muchísimas gracias por el aporte, Gustavo!
Que diferencia pudiera existir entre un lenguaje de programacion estandarizado por la ECMA(C#) y los leguajes de programacion libre(Perl o Python) o Propietario. Para el desarrollo de aplicaiones Libre.
Acaso significa que un lenguaje que este estandarizado no necesariamente hay que pagarle licencia a los dueños de este lenguaje(C#)
Eso quiere decir, que como es un estandar, es posible hacer implementaciones gratuitas de ese lenguaje.
Aqui lo propietario es la implementación que hacen los de Microsoft. Pero una cosa es la implementación, y otra cosa es el estándar (las reglas para crear la implementación).
Un saludo!
Mira. yo acabo de ver un video de Miguel Icaza donde habla muchisimo sobre la plataforma Mono. El ahi dice, que lo que permitio desarrollar esta plataforma fue, que Microsoft estandarizara unas de las parte mas compleja de la plataforma .Net.
Como fue el lenguaje, las APIs ADO.NET, ASP.NET.
Ahora amigo mio, mi pregunta es:
Si yo uso estos elementos estandarizado, como las APIs que mensione. Mi aplicaion es libre completamente, claro si la compilo con la maquina virtual de Mono. ?
Nada de Framework.Net que eso es propietario
Por supuesto que será libre!
Muchas Gracias, este servicio esta muy bueno. Estas Invitado a mi tesis de Postgrado. Es una aplicacion desarrollada en Mono trata reconociemiento de patron del audio.
el monodevelop tiene los mismo componentes visuales que el visual estudio.Net
Alguien me podria decir si monodevelop tiene los mismo componentes visuales que el visual estudio.Net?
Hola sinlenay.
Pues no. El generador de interfaces gráficas de MonoDevelop solo permite desarrollar aplicaciones en Gtk#.
Sin embargo, Mono tiene implementados todos los componentes visuales de .NET (aunque no tenga diseñador gráfico).
Un saludo!