2009-08-24 8 views
13

Me gustaría convertir mi utilidad de consola simple .Net 2.0 pura en un exe portátil que podría simplemente poner en una memoria USB y ejecutar sin tener que preocuparme si las bibliotecas CLR y framework están instaladas en una máquina particular o no.¿Cómo convertir un simple proyecto de consola .Net a en un exe portátil con Mono y mkbundle?

Stackoverflow ya tiene some information sobre el uso de Mono y Mkbundle para la creación de autónomos ex de Windows desde .Net-proyectos, pero lo que me gustaría tener es un COMO compacta pero útil.

¿Cuáles son los pasos mínimos para lograr una portabilidad desde un simple proyecto de C# Visual Studio?

Respuesta

16

He encontrado un simple cómo here, sin embargo, como no lo he probado yo mismo, no puedo garantizar los resultados. Como de costumbre YMMV.

Cita del artículo original (por favor, siga el hilo en el artículo original, así embargo):

Mkbundle: paquete Mono con sus aplicaciones

¿Se ha preguntado por qué es necesario. NET Framework o Mono instalado para ejecutar su programa? Bueno, sería mucho más útil si pudieras distribuir tus aplicaciones sin molestar a tus clientes para que instalen frameworks adicionales, ¿no es así? Aqui estamos. Permite agrupar una aplicación basada en .NET con Mono, por lo que no necesita Mono o .NET instalado para ejecutarlo.

Preparar un entorno

En primer lugar es necesario instalar más reciente Mono y Cygwin. Instalar Mono es muy sencillo, así que no puedes arruinar nada. Cuando comiences a instalar Cygwin, ve a la Vista completa, luego incluye 4 paquetes adicionales. Estos son: gcc, mingw, mingw-zlib y zlib.

Ahora necesita un símbolo del sistema. Tanto Mono como Cygwin crean accesos directos para las solicitudes de comando en su escritorio, pero necesita combinarlos en uno solo. Aquí hay un lote que lo hace por mí. Puede necesitar cambiarlo, si tiene otra versión Mono, por ejemplo.

Código:

echo Mono version 2.4 Build 6 
echo Prepending 'C:\PROGRA~1\Mono-2.4\bin' to PATH 
PATH=C:\PROGRA~1\Mono-2.4\bin;%PATH% 

chdir C:\cygwin\bin 
bash --login -i 

Bundle una aplicación con Mono

Así que ahora estamos en un símbolo del sistema, la ejecución de este modo de Cygwin. Tenga en cuenta que esto ya no es un aviso de DOS, y "dir" ya no funcionará. Para listar archivos use el comando de Linux "ls". La carpeta que está explorando ahora es como la siguiente. Arek es un nombre de usuario. Código:

C:\cygwin\home\Arek 

Navegar a esta carpeta con su explorador. Ahora copia 2 archivos en esta carpeta. El primero es su aplicación exe y el segundo es el archivo Mono.dll (2MB) que puede encontrar en su carpeta Mono. Código:

C:\Program Files\Mono-2.4\bin 

Por alguna razón todo el procedimiento no funciona con nombres de archivo largos, por lo que cambiar el nombre de su exe aplicación. Debería cumplir con este antiguo nombre de DOS 8.3.

Vamos a volver al símbolo del sistema. Solo necesita 1 comando para agrupar su aplicación, y aquí hay alguna explicación.

mkbundle es un programa dentro del paquete Mono | -o Bundled1.exe especifica cómo se nombrará el exe Mono-bundled | Winform1.exe dice lo que se incluirá, las bibliotecas Mono se incluirán de todos modos | --deps es necesario aunque no estoy seguro de qué hace | -z comprimirá la salida exe mucho Código

:

mkbundle -o Bundled1.exe Winform1.exe --deps -z 

Así que ahora tienes tu Bundled1.exe, que contiene su propia aplicación en sí, junto con Mono. No debería necesitar Mono ni .NET para ejecutarlo. Tenga en cuenta que tendrá un tamaño de 4 MB o más. Esos ex integrantes no son livianos.

Cuestiones relacionadas