Cómo ejecutar programas implementados en .NET en Linux con Mono

Author Description

F. Javier Carazo Gil

Casi Ingeniero Informático, co-fundador y administrador de Linux Hispano, además de desarrollar software y mantener sistemas en el CSIC, hace poco he fundado junto con Alberto Hornero una start-up: CODECTION donde trabajamos con software libre. Puedes saber más sobre mí, mi vida laboral, mis libros, mis artículos y mi día a día en @fjcarazo y en mi perfil público de LinkedIn.

  • Pingback: Tweets that mention Cómo ejecutar programas implementados en .NET en Linux con Mono | Linux Hispano -- Topsy.com()

  • Pues me sale este error, que estuve investigando y no conseguí entender.

    Cannot open assembly ‘Setup.exe’: File does not contain a valid CIL image.

    En fin, tampoco es el fin del mundo.

    buen post!, saludos.

  • Pingback: Bitacoras.com()

  • @nordri: Como comento en el post, lo que te ocurre es que el instalador no está implementado en .NET (CIL es el nombre del pseudo-lenguaje que usa .NET/Mono, podríamos compararlo con el bytecode de Java).

    Debes ejecutar el instalador, tratar que te instale el programa (forzándolo a que no compruebe que está instalada la Framework de .NET) y luego ejecutarlo con .NET.

    Si quieres engañarlo puedes tratar de extraer del instalador con tar u otro compresor, el programa en sí y ejecutarlo posteriormente con Mono como comento en este artículo.

    Ya me contarás cómo te va.

  • Bien, efectivamente el instalador no era un programa .NET, y con el último Wine se ha ejecutado y ha instalado el software. De echo, esto me decía “file”
    nordri@nordri-desktop:~$ file sandbox/Setup.exe
    sandbox/Setup.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit

    Bueno, se ha instalado, eso ha mejorado con respecto a la última vez que lo probé con Wine, pero “mono” no lo lanza, te pego aquí lo que me dice:

    http://pastebin.com/PQEdW5Kc

    Un saludo

  • @nordri: Por lo que veo en el pastebin, te faltan los ensamblados de Visual Basic a los que hace referencia el programa de Hoffman.

    Lo más fácil es que pruebes a instalar un paquete que en los repositorios de Ubuntu 10.04 se llama: libmono-microsoft-visualbasic, si no lo encuentras busca: “Visual Basic 2005 runtime libraries for Mono”.

    Con eso creo que lo tendrás solucionado, porque automáticamente el paquete te lo mete en el GAC que es por así decirlo el coordinador del repositorio de ensamblados del sistema Mono/.NET.

  • Instalé el soporte para VB como me has comentado y llego a este error
    nordri@nordri-desktop:~$ mono .wine/drive_c/Archivos\ de\ programa/Hofmann/Hofmann/program/Hofmann.exe
    ** Message: Unknown heap type: CLR

    Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for —> System.InvalidProgramException: Invalid IL code in A.c371aab3e1f40fe2ebcd6dcee95f7d0e1:c5f10bc2014e3a32b10cc0f5e08c0bff9 (): IL_0002: stloc.0

    at ..cctor () [0x00000]
    — End of inner exception stack trace —

    Según he leido el soporte de VB es bastante reciente, así que espero que en próximas releases funcione.

    Muchas gracias
    Saludos

  • @nordri: Esperemos que versiones futuras arreglen el problema. Me alegro al menos de que hayas investigado algo por Mono para ver que muchas aplicaciones de .NET pueden ejecutarse sin problemas en Linux.

    ¡Un saludo!

  • Pingback: Cómo ejecutar programas implementados en .NET en Linux y Mac OS con Mono()

  • Pingback: Meneame: Cómo ejecutar programas implementados en .NET en Linux y Mac OS con Mono | Superlinux()

  • Diego

    Hola por favor ayudame manda tu respuest alo correo lo que pasa que mi aplicacion echa en vs2010 con c# no coje con el wine no se que hacer ya tengo instalado el mono y nada que lo abre el proyecto dice que falta asembladores

  • @Diego: tienes que buscar los ensamblados que te faltan. Para ello búscalos primero, luego los referencias con el GAC y finalmente los ejecutas con Mono.

  • Linuxero novato

    Hola gracias, tu pagina me ayudo a arrancar un programa, pero hay algo que no comprendo. Tengo el codigo fuente  de un programa .NET, lo compilo con make, luego lo instalo con make install y va a /usr/local/share/programax. Si en terminal voy a ese directorio y ejecuto mono programax si funciona. Pero si en el sistema de ficheros en modo grafico, le digo ejecutar con mono runtime (desde terminal o no es indiferentel), entonces parece que intenta arrancar pero la ventana se cierra al poco tiempo. No consigo entender por que pasa, llevo poco tiempo con linux

  • Pingback: Semana de enlaces #32 2010 | Ubuntizando.com()