4 votos

Ejecutar el binario .NET con mono

Cuando tengo abc.exe generado desde el código fuente de C#/Mono, uso 'mono abc.exe'.

¿Hay alguna manera de ejecutar abc.exe con 'abc.exe' y no con 'mono abc.exe'? Es decir, cuando ejecute 'abc.exe', ¿puedo hacer que se llame automáticamente a 'mono abc.exe'?

0 votos

Tal vez alguien más sabe cómo configurar el sistema para la ejecución directa, pero esto podría ser una pregunta para stackoverflow.

0 votos

@calavera No hay un equivalente "JAR" en mono, necesitas el mono runtime, que yo recuerde.

6voto

reallygoodname Puntos 391

Ver este enlace

Básicamente lo que tienes que hacer es utilizar una de las herramientas de Mono (mkbundle es una genérica mientras que macpack está diseñada para funcionar en Mac OS X) para enlazar todos los ejecutables, recursos y dll de tu aplicación en un único archivo ejecutable que pueda ser ejecutado posteriormente como una única app.

Del documento de macpack:

macpack es una herramienta que debe usarse para empaquetar aplicaciones Cocoa# en paquetes de doble clic, amigables con el Finder, en Mac OS X. Empaqueta bibliotecas y recursos estáticos, así como genera un info.plist básico en el paquete .app.

Por ejemplo, los siguientes comandos se utilizan para construir el CurrencyConverter.exe en un paquete de aplicaciones:

$ mcs -g -debug+ CurrencyConverter.cs -out:CurrencyConverter.exe -pkg:cocoa-sharp
$ rm -rf CurrencyConverter.app
$ macpack -m:2 -o:.  -r:/Library/Frameworks/Mono.framework/Versions/Current/lib/    
  libCocoaSharpGlue.dylib -r:CurrencyConverter.nib -n:CurrencyConverter 
  -a:CurrencyConverter.exe

La aplicación CurrencyConverter.app resultante es una aplicación más de Mac OS X en lo que respecta al Finder, y puede abrirse desde el Finder, o lanzarse desde el Terminal utilizando el comando open -a CurrencyConverter.

0 votos

Parece que la agrupación o el macpac sería el camino a seguir, a menos que quiera algo realmente sencillo.

0 votos

¿podrías incluir algunas recomendaciones basadas en ese enlace en el texto de tu respuesta? la putrefacción de los enlaces siempre es un problema con el tiempo, pero si lo pones aquí y sólo haces referencia a tu fuente, seguirá siendo útil en el futuro.

2voto

UnkwnTech Puntos 21942

Mejorando la respuesta de Calavera para que permita hacerlo con un parámetro, el script debería quedar así:

#!/bin/bash
mono $1

Así se puede hacer:

./abc.sh name_of_the_app.exe

Habría añadido esto como comentario, pero se habría perdido el formato

1 votos

No te lo tomes a mal, pero ¿no es un poco redundante? Reemplaza la llamada a mono por una llamada al script, pero de cualquier manera todavía tienes que escribir el nombre de la aplicación... así que reemplazas $ mono someapp.exe con ` $ callmono.sh someapp.exe`. solo digo :P

0 votos

Estaba pensando en eso ;) la verdad es que mono suele estar en una ruta loca, con el script podrías poner la ruta completa, pero sí. Pégame una patada.

0 votos

Eso es cierto, si el mono no está en su $PATH esto permitiría llamarlo sin la ruta absoluta delante.

1voto

Shawn Puntos 8120

No tengo mucha experiencia con mono pero probablemente tendrás que crear un shell ejecutable script que haga la llamada a mono por ti. Algo así como:

$ vi abc.sh

#!/bin/bash
#abc.sh
mono abc.exe
:wq

$ chmod +x abc.sh
$ ./abc.sh

0 votos

No es la tarea que prosseeek quiere, sólo hay que crear otro shell script para ejecutar un archivo específico, pero creo que quiere una solución general.

0 votos

@am1rr3za: de acuerdo, pero como he dicho no he usado mucho mono así que no sé si hay una forma de compilar tu ejecutable para poder ejecutarlo directamente en la línea de comandos. Al menos en el mundo de Windows, el SO sabe identificar un binario .net y cargar el CLR .net para interpretar el MSIL. No sé cómo funcionaría eso en Unix, a menos que el binario fuera compilado a lenguaje de máquina. Pero en .net, tiene que haber un runtime (tampoco creo que se pueda ejecutar directamente una aplicación java).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X