it-swarm.com.de

Ausführen eines Monoprogramms ohne Eingabe von "mono foo.exe"

Wenn ich ein .net-Programm unter Ubuntu starte, muss ich "mono foo.exe" anstelle von "foo.exe" eingeben oder auf das Symbol doppelklicken. Gibt es eine Möglichkeit, einfach foo.exe auszuführen?

13
dan gibson

Hilft dieser Link? Mono ausführen

Ab dem Mono-Projekt mit binfmt:

Registrieren von .exe als nicht native Binärdateien (nur Linux)

Da es sich um eine Linux-spezifische Funktion handelt, empfehlen wir Entwicklern nicht, diese Lösung bereitzustellen, da dies die Portabilität ihrer Skripts einschränken würde.

Darüber hinaus funktioniert dieser Mechanismus nicht wie in den Anwendungsbereitstellungsrichtlinien vorgesehen.

Sie können auch systemweit Änderungen vornehmen und binfmt verwenden, um die exe-Dateien als nicht native Binärdateien zu registrieren. Wenn Sie dann versuchen, eine exe-Datei zu starten, führt der Kernel den Mono-Interpreter aus, um den Befehl zu verarbeiten. Binfmt kann auch zum Starten von ausführbaren Windows-Dateien mit WINE oder von Java .class-Dateien mit einer JVM verwendet werden. Um exe beim Kernel zu registrieren:

Melden Sie sich als root an und aktivieren Sie das binfmt-Modul in Ihrem Kernel mit folgendem Befehl:

Sudo apt-get install binfmt-support
modprobe binfmt_misc

Darüber hinaus möchten Sie möglicherweise den Befehl modprobe zu Ihrem Startskript /etc/rc.local hinzufügen, damit es beim Start ausgeführt wird.

Fügen Sie die folgende Zeile zu Ihrer /etc/fstab -Datei hinzu:

binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none

Lassen Sie dann Ihr System den folgenden Befehl beim Booten ausführen:

echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register

Stellen Sie sicher, dass Ihre .exe-Dateien auch im Dateisystem als ausführbar markiert sind:

chmod +x myprogram.exe

Beachten Sie, dass dies nicht Ihren Kernel ändert, sondern nur die Module, die er lädt, wenn Sie Ihr System starten. Mit anderen Worten, Sie können Ihren Kernel trotzdem aktualisieren, ohne sich Gedanken über den Verlust dieser Änderungen machen zu müssen. Ebenso können Sie Ihre Mono-Laufzeit aktualisieren, ohne eine der in diesem Abschnitt aufgeführten Aufrufmethoden zu beeinflussen.

17
user8290

Erstellen Sie ein Startskript.

Öffnen Sie einen Nur-Text-Editor und fügen Sie Folgendes hinzu:

#!/bin/bash
mono foo.exe &

Abhängig von Ihrem Setup müssen Sie möglicherweise den vollständigen Pfad für foo.exe verwenden.

Speichern Sie die Datei zum Beispiel als foo.sh.

Mach es ausführbar:

Sudo chmod a+x foo.sh

Sie sollten jetzt in der Lage sein, foo.exe durch Doppelklicken auf foo.sh zu starten.

10
j-g-faustus

Sie können die Dateierweiterung '.exe' auf Nautilus zur Ausführung mit /usr/bin/mono verknüpfen.

2
Jader Dias

Ich weiß, dass dies eine alte Frage ist, aber ich habe sie über Google gefunden und darüber nachgedacht. Dies ist ein großer Hack, aber Sie könnten herunterladen

https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh

zu Ihnen nach Hause und fügen Sie Folgendes zu .bashrc hinzu

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; }
1
nettux