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.
47 Comentarios | deja el tuyo



Gracias Casidiablo, muy amable.
1-.Pero si yo intalo las dependencia de Gtk# en windows puedo correr la aplicacion en windows?
2-Pero, yo lo que uso es el IDE de programacion MonoDevelop. Y lo compilo con Mono. Mono como tal es la maquina virtual.
Mira yo debo usar componente como por ejemplo el datetimepiker, para fecha y hora,tambien el opendialog para cargar fichero, ademas de los otros componentes clasicos . Esos componente si ya estan implementado en Mono, porque son componente de Visual Studio.Net, entonces que IDE de Mono me sirve para desarrollar aplicaciones con todos estos componentes visuales.?
Hola de nuevo.
1. Sí, si puedes correr las aplicaciones en Windwos
Con respecto a lo demás, te explico un poco más a fondo. Con el IDE Monodevelop SI puedes desarrollar aplicaciones con componentes visuales de .NET, PERO no de manera gráfica. Es decir, podrás codificar las aplicaciones, compilar y construir ejecutables, pero (repito) codificandolas. O sea, que no puedes simplemente arrastrar un botón, y con un par de clics cambiarle el nombre, etc.
Para “dibujar” la interfaz gráfica, tienes que usar el diseñador de interfaces de Monodevelop, el cual las hace en Gtk#.
Un saludo!
necesito si alguien de ustedes conoce que nombre tiene los componentes visuales que se usan en gtk#, para hacer aplicaciones en Monodevelop.
Me refiero a los clasicos:
Edit.
Button.
Opendialog.
Label.
Datetimepiker.
listbox.
Mira Ramon, si te refieres a los componentes visuales, intala la version de monodevelop en linux y busca ahi…ahora si lo que vas hacer es hacer graficos y cosas de ese estilo, si tendras que usar GTK#. Acabo de migrar una aplicacion hecha en Visual Studio.Net a Mono usando el MoMA1-2-6. Oye pincho perfecto lo unico que no se ven son los graficos….pero todos los componentes visuales como los botones, los label, todo eso…ect, perfecto…esta barbaro, creo que con el Mono en desarrollo Visual Studio va a tener que cojer la cola, porque lo que es propietario sera ahora libre, ademas que migrar aplicaciones sera muy comodo.
Solo me falta saber como o de donde descargar System.Windows.Forms.dll porque al instalar modevelop no me lo instaló.
¿Qué distro usas? En ubuntu, por ejemplo, usas el Synaptic para buscar el paquete que contiene esas librerías.
¡Un saludo!
Resuelto. Buscando lo encontre en la carpeta 2.0
A la hora de referenciarlo me encuentro el siguiente problema:
mcs -reference:/usr/lib/mono/2.0/System.Windows.Forms.dll Hola3.cs
Gracias Cristian. Me va a servir de gran ayuda cuando tenga que buscar otro del estilo, porque yo de ignorante buscando en el google..
Cada problema que resuelvo me da otro.
he instalado mcs. que era el error que me daba.
Ahora :
hola3.c(6,13): error CS0103: The name `MessageBox’ does not exist in the current context
cuando lo referencio me dice que no encuentra messagebox, que puede estar
pasando?
Hola amigo tengo una consulta me podrias explicar algo mas detalladamente la parte de ejecutar el conpilador de c# mcs.
Se ejecuta en la consola o donde???
saludos….
Sí, ademir, desde la consola. Aunque también puedes usar MonoDevelop si no te gusta usar la consola.
Un saludo.
gracias por el material. puedo utilizar los devexpress compilar en mono y correr esa aplicacion en ubuntu?. puedo crear toda mi aplicacion en sharpdevelop compilar en mono usando windows.forms y correr en ubuntu. si esto es asi podria crear mi interfaz graficamente y conectarme a codigo???? Y GRACIAS POR COMPARTIR LA INFORMACION MUY BUEN MATERIAL (Y)
Claro. Recuerda además que la edición de código la haces con MonoDevelop para que te sea fácil.
Un saludo!
hola oye ami me gustaria que me ayudaras con mi duda.
Hay algun complemento que tenga Mono que pueda usar para hacer juegos.
por ejemplo en Windows esta VS y su complemento es XNA
en linux esta Mono y su complemento es??? y ademas que pueda hacer juegos para linux y windows o windows minimo.
gracias
como conecto postgres cpn monodevelop en ubuntu con wuindow.form porfavos una ayuda.