Cuando ejecuto un programa .net en Ubuntu, tengo que escribir "mono foo.exe" en lugar de simplemente foo.exe o hacer doble clic en el icono. ¿Hay alguna forma de ejecutar foo.exe?
Cuando ejecuto un programa .net en Ubuntu, tengo que escribir "mono foo.exe" en lugar de simplemente foo.exe o hacer doble clic en el icono. ¿Hay alguna forma de ejecutar foo.exe?
Respuestas:
¿Ayuda este enlace? Running Mono
Del Proyecto Mono sobre el uso de binfmt:
Registro de .exe como binarios no nativos (solo Linux)
Debido a que esta es una característica específica de Linux, no recomendamos que los desarrolladores implementen esta solución, ya que limitaría la portabilidad de sus scripts.
Además, este mecanismo no funciona según lo previsto en las Directrices de implementación de aplicaciones .
También puede hacer un cambio en todo el sistema y usar binfmt para registrar los archivos exe como binarios no nativos. Luego, cuando intente iniciar un archivo exe, el kernel ejecutará el intérprete mono para manejar el comando. Binfmt también se puede usar para iniciar ejecutables de Windows usando WINE o archivos Java .class usando una JVM. Para registrar exe con el kernel:
Conviértase en root y encienda el módulo binfmt en su núcleo con este comando:
sudo apt-get install binfmt-support
modprobe binfmt_misc
Además, es posible que desee agregar el modprobe
comando a su /etc/rc.local
script de arranque, para que se ejecute en el arranque.
Agregue la siguiente línea a su /etc/fstab
archivo:
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none
Luego, haga que su sistema ejecute el siguiente comando en el arranque:
echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
Asegúrese de marcar sus archivos .exe como ejecutables en el sistema de archivos también:
chmod +x myprogram.exe
Tenga en cuenta que esto no cambia su núcleo, solo los módulos que carga cuando inicia su sistema. En otras palabras, aún puede actualizar su kernel sin preocuparse por perder estos cambios. Del mismo modo, puede actualizar su tiempo de ejecución Mono sin afectar ninguno de los métodos de invocación enumerados en esta sección.
FATAL: Module binfmt not found
en 12.04
Crea un script de inicio.
Abra un editor de texto sin formato, agregue esto:
#!/bin/bash
mono foo.exe &
Dependiendo de su configuración, es posible que deba usar la ruta completa para foo.exe.
Guarde el archivo, por ejemplo, como foo.sh
.
Hazlo ejecutable:
sudo chmod a+x foo.sh
Ahora debería poder iniciar foo.exe haciendo doble clic foo.sh
.
Puede asociar la extensión de archivo '.exe' en Nautilus para que se ejecute con /usr/bin/mono
Sé que esta es una vieja pregunta, pero la encontré a través de Google y me hizo pensar. Este es un gran truco, pero puedes descargar
https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh
a su hogar y agregue lo siguiente a .bashrc
source ~/.bash-preexec.sh
preexec() {
if [[ $1 =~ [^\s]+\.exe$ ]]; then
eval "$1() { return 1; }"
export -f $1
/usr/bin/mono $1
fi
}
precmd() { [[ $1 =~ [^\s]+\.exe$ ]]; unset -f $1; }