04 noviembre 2010

Compilar C# con Geany en Windows

Geany es un interesante editor de textos. Quizá con menos cantidad de posibilidades que otros como Notepad++, pero aun así muy potente y razonablemente sencillo de manejar.

Una de las mayores ventajas que tiene (para mi gusto) frente a Notepad++ es que es fácil compilar y ejecutar programas creados en distintos lenguajes de programación sin necesidad de salir del editor. Eso sí... a veces hay que afinarlo un poco:

En el caso de C#, viene preconfigurado para compilar con Mono, pero esto en Windows es menos inmediato de lo que podría parecer. Vamos a ver por qué y cómo solucionarlo:

La configuración relacionada con C# está en un fichero llamado "filetypes.cs", que se encuentra en la carpeta "data" de Geany (en "C:\Archivos de programa\Geany\data\filetypes.cs" si hacemos una instalación típica en Windows XP). Podemos abrir ese fichero desde el propio Geany.

Las dos últimas líneas de ese fichero deberían ser algo como:

compiler=mcs /t:winexe "%f" /r:System,System.Drawing
run_cmd=mono "%e.exe"

El problema es que esas dos líneas esperan compilar fuentes en C# usando Mono, algo que es inmediato en Linux, pero que no es tan trivial en Windows, porque supondría cambiar la configuración básica de Windows, para que la carpeta de Mono sea una de las carpetas de búsqueda del sistema.

Hay una alternativa sencilla, si tenemos instalada cualquier versión de la plataforma "punto net", algo que es casi seguro si tenemos algún Service Pack para Windows XP, o bien si tenemos una versión de Windows más moderna: podemos usar el compilador que se incluye con la propia plataforma.

Primero tenemos que encontrarlo: abrimos nuestro disco C (o el que tenga instalado el sistema operativo), entramos a la carpeta de Windows, y en ella debería estar una subcarpeta llamada "Microsoft.net", que a su vez contiene otra carpeta llamada "Framework", y en ésta encontraremos varias subcarpetas, una por cada versión de "punto net" que tengamos instalada:


Por ejemplo, en esta imagen se muestra una versión básica de Windows XP, que tiene las versiones v1.0.3705 y v1.1.4322. Entramos a cualquiera de esas carpetas (preferiblemente a una reciente, con un número de versión elevado) y comprobamos si en ella está el compilador, un fichero llamado "csc".

Si es así, ya sabemos cual es la ruta completa del compilador, algo como

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe

(no es necesario memorizarlo, podemos copiar y pegar desde la barra de dirección de nuestro explorador).

Entonces ya podemos modificar las dos líneas de configuración que nos interesan: para compilar bastará indicar la ruta anterior seguida por el nombre de nuestro fuente, y para lanzar el ejecutable resultante usaremos el nombre de nuestro fuente terminado en ".exe", así:

compiler=C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe "%f"
run_cmd="%e.exe"

Por cierto, otras opciones de Geany que a mí me parecen cómodas son:

  • En Editar / Preferencias / Editor / Sangría: ancho 4 o 2, pero siempre relleno con Espacios en vez de Tabulaciones.
  • En Editar / Preferencias / Editor / Mostrar: marcador de líneas largas activado, en la columna 80, para que no descuadre al imprimir; si uso fuentes antiguos o de otros programadores, que quizá usen el carácter de tabulación en vez de espacios, marcaría también la opción de "Mostrar espacio en blanco".
  • También me parece cómodo que se cambien tabulaciones por espacios de forma automática y que se borren los espacios al final de cada línea cada vez que se guarda un fichero, algo que se puede conseguir desde Editar / Preferencias / Archivos
Para que los cambios sean efectivos, podemos salir del editor y volver a entrar, o bien usar la opción "Recargar configuración" del menú (esto sirve para los de apariencia; no para el "nuevo compilador" para fuentes en C#; para eso sí debemos salir del editor y volverlo a abrir).

Happy coding! ;-)


(Todo esto está probado con la versión 0.19.1 en Windows XP y Windows 7)

1 comentario:

Anónimo dijo...

Gracias nacho tu explicacion me ha sido muy util y es la unica que he encotrado que funcione.