Necesitamos instalar:
- Mono para OS X (incluye Mono, GTK# y Cocoa#)
- MonoDevelop para OS X
Con la primera ejecución de MonoDevelop nos buscará las últimas actualizaciones.
Para comprobar que todo está funcionando correctamente, crearemos una aplicación de prueba que muestre un Hola Mundo, pero la peculiaridad estará en que utilizaremos los mismos espacios de nombres que usamos cuando programamos bajo Windows. Es decir, no utilizaremos GTK#, Cocoa#, ni ningún otro subsistema, sino WinForms.
Creamos una nueva solución C# vacía, como la siguiente:

Tras esta ventana, puede aparecer otra para activar determinadas opciones para personalizar el proyecto, pero no marcaremos ninguna (en caso de necesitarlas, puede hacerse posteriormente en las opciones del proyecto).
Se habrá creado la solución HolaMundo con el proyecto HolaMundo en su interior. Haciendo click derecho sobre el proyecto añadiremos un nuevo archivo C# (Añadir, Nuevo Archivo, Empty Class, y le ponemos como nombre -por ejemplo- CHolaMundo).


Incluiremos el siguiente código en el nuevo archivo creado:
using System;
using System.Windows.Forms;
namespace HolaMundo
{
public class CHolaMundo : Form
{
static public void Main ()
{
Application.Run (new CHolaMundo ());
}
public CHolaMundo ()
{
Text = "Hello Mono World";
}
}
}
Si intentamos compilar en este momento, nos devolverá el error:
Error CS0234: The type or namespace name `Windows’ does not exist in the namespace `System’. Are you missing an assembly reference?
La razón es que, por defecto, el compilador de C# incluído con mono únicamente referencia los siguientes ensamblados: mscorlib.dll, System.dll y System.Xml.dll. Para que el proyecto sepa que debe referenciar System.Windows.Forms, podemos lanzar el compilador desde línea de comandos (con el parámetro -r:System.Windows.Forms.dll), o añadirlo permanentemente a las opciones del proyecto.
Bajo el nombre del proyecto, en los archivos de la solución, veremos la carpeta Referencias, sobre la que haremos doble click, y buscamos el ensamblado que queremos referenciar en nuestro proyecto:

Tras incluirlo, la solución ya funcionará perfectamente, por lo que podemos hacer un Build (Command+K) y Ejecutar (Command+Alt+Enter), y podremos ver este resultado:

Desde luego no es la aplicación de .Net más compleja que podíamos utilizar como ejemplo, pero ya es algo. Y tanto el código utilizado como el ejecutable resultante son 100% compatibles con sistemas Windows.