Natürlich ist das möglich und der Prozess ist extrem einfach.
Hier erkläre ich die Schritte für Ubuntu Linux.
Terminal öffnen:
Strg + Alt + T
Geben Sie
eingedit hello.cs
Im gedit
Fenster, das sich öffnet, fügen Sie den folgenden Beispielcode ein:
using System;
class HelloWorld {
static void Main() {
Console.WriteLine("Hello World!");
}
}
Speichern und schließen Sie gedit.
Zurück im Terminaltyp:
sudo apt update
sudo apt install mono-complete
mcs -out:hello.exe hello.cs
mono hello.exe
Ausgabe:
Hello World!
HINWEIS:Die Antwort von @adabru unten macht meine Lösung obsolet, es sei denn, Sie verwenden eine ältere Mono-Plattform.
C#-Skripte können genau wie Python- und Perl-Skripte über die Bash-Befehlszeile ausgeführt werden, aber es braucht ein wenig Bash-Magie, damit es funktioniert. Wie Corey oben erwähnt hat, müssen Sie zuerst Mono auf Ihrem Computer installieren. Speichern Sie dann den folgenden Code in einem ausführbaren Bash-Skript auf Ihrem Linux-Computer:
if [ ! -f "$1" ]; then
dmcs_args=$1
shift
else
dmcs_args=""
fi
script=$1
shift
input_cs="$(mktemp)"
output_exe="$(mktemp)"
tail -n +2 $script > $input_cs
dmcs $dmcs_args $input_cs -out:${output_exe} && mono $output_exe [email protected]
rm -f $input_cs $output_exe
Angenommen, Sie haben das obige Skript als /usr/bin/csexec gespeichert, folgt ein Beispiel für ein C#-"Skript":
#!/usr/bin/csexec -r:System.Windows.Forms.dll -r:System.Drawing.dll
using System;
using System.Drawing;
using System.Windows.Forms;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello Console");
Console.WriteLine("Arguments: " + string.Join(", ", args));
MessageBox.Show("Hello GUI");
}
}
Speichern Sie den obigen Code in einer Datei wie „hello.cs“, machen Sie ihn ausführbar, ändern Sie die erste Zeile so, dass sie auf das zuvor gespeicherte Bash-Skript zeigt, und führen Sie es dann aus. Sie sollten die folgende Ausgabe zusammen mit einem Dialogfeld mit der Aufschrift „Hello GUI":
bash-4.2$ ./hello.cs foo bar baz
Hello Console
Arguments: foo, bar, baz
Beachten Sie, dass für die GUI Ausführungsebene 5 erforderlich ist. Hier ist ein einfacheres C#-Skript, das auf einer reinen Textkonsole ausgeführt wird:
#!/usr/bin/csexec
using System;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello Console");
Console.WriteLine("Arguments: " + string.Join(", ", args));
}
}
Beachten Sie, dass die Befehlszeilenargumente an das C#-Skript übergeben werden, aber die Shebang-Argumente (im ersten C#-Skript über „-r:System.Windows.Forms.dll -r:System.Drawing.dll“) an C# übergeben werden. Compiler. Mit letzterer Funktionalität können Sie beliebige Compiler-Argumente, die Sie benötigen, in der ersten Zeile Ihres C#-Skripts angeben.
Wenn Sie an den Einzelheiten der Funktionsweise des Bash-Skripts interessiert sind, fasst shebang (#!) alle übergebenen Argumente in der ersten Zeile des C#-Skripts zusammen, gefolgt vom Skriptnamen, gefolgt von den an das Skript übergebenen Befehlszeilenargumenten selbst. Im ersten C#-Beispiel oben würden die folgenden 5 Argumente an das Bash-Skript übergeben (getrennt durch Anführungszeichen):
"-r:System.Windows.Forms.dll -r:System.Drawing.dll" "hello.cs" "foo" "bar" "baz"
Das Skript stellt fest, dass das erste Argument kein Dateiname ist, und geht davon aus, dass es Argumente für den C#-Compiler enthält. Anschließend entfernt es die erste Zeile des C#-Skripts mit „tail“ und speichert das Ergebnis in einer temporären Datei (da der C#-Compiler nicht von stdin liest). Schließlich wird die Ausgabe des Compilers in einer anderen temporären Datei gespeichert und in Mono ausgeführt, wobei die ursprünglichen Argumente an das Skript übergeben werden. Der 'Shift'-Operator wird verwendet, um die Compiler-Argumente und den Skriptnamen zu eliminieren, sodass nur die Skript-Argumente übrig bleiben.
Kompilierungsfehler werden an die Befehlszeile ausgegeben, wenn das C#-Skript ausgeführt wird.
Die #!
(hashbang)-Tag wird verwendet, um der Shell mitzuteilen, welcher Interpreter verwendet werden soll, damit Ihre Perl-, PHP-, Bash-, Sh- usw. Skripte richtig ausgeführt werden.
Aber C# ist keine Skriptsprache, es soll in ein ausführbares Format kompiliert werden. Sie müssen mindestens einen Compiler und eine Laufzeitumgebung installieren, wenn Sie C# verwenden möchten, und vorzugsweise eine IDE (Integrated Development Environment), die Ihnen beim Entwickeln und Debuggen Ihrer Anwendungen hilft.
Installieren Sie Mono für den Compiler und die Laufzeitumgebung, dann MonoDevelop für die IDE.