2010-11-20 17 views
4

Ich habe eine C# Quelldatei. Gibt es eine Möglichkeit etwas wie # setzen/usr/bin/env mono, so wird es kompiliert werden und dann als ausführbare Datei ausführen:Mono Rahmen Shebang Linux

Für Python zum Beispiel, ich werde tun, wie folgt:

#!/usr/bin/env python 

In der Tat, was ich will, ist das Skript ohne Aufruf von "mono the.exe", nach dem Kompilieren. Ich möchte etwas wie "./the.exe".

Antwort

4

BEARBEITEN: Ich habe gerade bemerkt, dass Sie dies für eine einzelne Quelldatei tun möchten - für eine einzelne Quelldatei. Dies wird fast durch die csharp REPL unterstützt, die mit Mono ausgeliefert wird. Die REPL spuckt jedoch einen Syntaxfehler aus, weil sie die Shebang-Linie nicht versteht und sie als Präprozessordefinition sieht. Wenn ich missverstanden habe und Sie über eine kompilierte Assembly gesprochen haben, gilt der folgende Text weiterhin./BEARBEITEN

Sie können shebangs nicht verwenden, da EXE-Dateien, die von Mono erstellt werden, PE-ausführbare Dateien sind, genau wie unter Windows. Sie enthalten CIL, kein Skript.

Was Sie tun können, ist jedoch ein kleines Shell-Skript, das mono your.exe läuft und verwenden, oder Sie können die binfmts Unterstützung des Linux-Kernels verwenden, wie beschrieben here.

+0

Danke, es hat funktioniert mit binfmts. –

1

Ich denke, Sie können update-binfmts verwenden, um mono als Interpreter für (kompilierte) Mono-Programme zu registrieren.

Versuchen update-binfmts --display und sehen, ob die Ausgabe wie etwas enthält:

cli (enabled): 
    package = mono-common 
     type = magic 
     offset = 0 
     magic = MZ 
     mask = 
interpreter = /usr/bin/cli 
    detector = /usr/lib/cli/binfmt-detector-cli 
+0

Ich habe Fedora, und ich konnte Update-binfmts nicht finden. –

Verwandte Themen