Quando eseguo un programma .net su Ubuntu devo digitare "mono foo.exe" anziché semplicemente foo.exe o fare doppio clic sull'icona. C'è un modo per eseguire solo foo.exe?
Quando eseguo un programma .net su Ubuntu devo digitare "mono foo.exe" anziché semplicemente foo.exe o fare doppio clic sull'icona. C'è un modo per eseguire solo foo.exe?
Risposte:
Questo link aiuta? Running Mono
Dal progetto Mono sull'uso di binfmt:
Registrazione di .exe come binari non nativi (solo Linux)
Poiché questa è una funzionalità specifica di Linux, non è consigliabile che gli sviluppatori distribuiscano questa soluzione, poiché limiterebbe la portabilità dei loro script.
Inoltre, questo meccanismo non funziona come previsto dalle Linee guida per la distribuzione delle applicazioni .
È inoltre possibile apportare una modifica a livello di sistema e utilizzare binfmt per registrare i file exe come file binari non nativi. Quindi, quando si tenta di avviare un file exe, il kernel eseguirà l'interprete mono per gestire il comando. Binfmt può anche essere usato per lanciare file eseguibili di Windows usando WINE o file .class Java usando una JVM. Per registrare exe con il kernel:
Diventa root e attiva il modulo binfmt nel tuo kernel con questo comando:
sudo apt-get install binfmt-support
modprobe binfmt_misc
Inoltre, potresti voler aggiungere il modprobe
comando allo /etc/rc.local
script di avvio, in modo che venga eseguito all'avvio.
Aggiungi la riga seguente al tuo /etc/fstab
file:
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none
Quindi, fai in modo che il tuo sistema esegua il seguente comando all'avvio:
echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
Assicurati di contrassegnare i tuoi file .exe come eseguibili anche nel filesystem:
chmod +x myprogram.exe
Nota che questo non cambia il tuo kernel, ma solo i moduli che carica all'avvio del tuo sistema. In altre parole, puoi comunque aggiornare il tuo kernel senza preoccuparti di perdere queste modifiche. Allo stesso modo, puoi aggiornare il tuo runtime Mono senza influire su nessuno dei metodi di chiamata elencati in questa sezione.
FATAL: Module binfmt not found
12.04
Crea uno script di avvio.
Apri un semplice editor di testo, aggiungi questo:
#!/bin/bash
mono foo.exe &
A seconda della configurazione, potrebbe essere necessario utilizzare il percorso completo per foo.exe.
Salvare il file ad esempio come foo.sh
.
Renderlo eseguibile:
sudo chmod a+x foo.sh
Ora dovresti essere in grado di avviare foo.exe facendo doppio clic foo.sh
.
È possibile associare l'estensione del file '.exe' su Nautilus con cui eseguire /usr/bin/mono
So che questa è una vecchia domanda, ma l'ho trovata tramite Google e mi ha fatto pensare. Questo è un grande trucco ma puoi scaricarlo
https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh
a casa tua e aggiungi quanto segue 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; }