Hallo, liebes Forum.
Da ich selbst C#-Entwickler bin, aus Gewohnheit hier nach dem Anmelden gleich mal gesucht habe und nichts zu den Stichworten "C#" oder "Mono" finden konnte, hier schnell mal mein Erfahrungsschatz diesbezüglich.
C# ist ja diese Programmiersprache von Microsoft, die auf dem .net-Prinzip aufsetzt und sich kurz ungefähr so beschreiben lässt: "wie Java und noch ein paar Sachen dazu". Ich will nicht sagen, dass sie besser ist als irgendwelche anderen Programmiersprachen, aber ich habe beruflich ziemlich viel damit zu tun, so dass ich eher darauf zurück greife, als etwa auf Java oder C/C++.
Da auf dem Raspi mangels der Performance schlecht in einer komplexen IDE zu entwickeln ist, habe ich mal geschaut, ob man nicht ein auf Windows aus C# kompiliertes Programm auf dem Raspi in der Konsole laufen lassen kann. (Das Visual C# Express gibt es übrigens kostenlos, und das reicht für diese Zwecke; auch wenn es im Vergleich zum "großen" Visual Studio eine ganze Menge Abstriche zu machen gibt.)
Von vorn herein ist erst einmal klar, dass Windows Forms (also die bekannten Windows-Fenster) nicht auf Linux laufen. Da gibt es auch beim Mono-Projekt verschiedene Anstrengungen, die WinForms zu interpretieren oder beim kompilieren durch GTK-Elemente zu ersetzen.
(Einwurf: Entwickelt man C# per MonoDevelop (o.ä.) auf Linux und benutzt dort Forms (GTK+), sollten diese Programme auch visuell auf dem Raspi unter X laufen, sofern GTK vorhanden ist - aber hier lehne ich mich zu weit raus, da ich das noch nicht im Detail getestet habe.)
Aber ich habe erst einmal geschaut, dass ich eine Konsolenanwendung (für die Windows-Kommandozeile) schreibe - also eine .exe, die einen Text ausgibt und vielleicht noch eine Eingabe erwartet. Die habe ich (erfolgreich) kompiliert.
Diese test.exe habe ich dann auf den Raspi geschoben.
Dann ist mono zu installieren - das Äquivalent zur .net-Runtime auf Windows (bzw. der java-Runtim überall):
Mit
lässt man das ganze nun laufen - man kann den Aufruf natürlich auch in bash-scripte einbetten usw.
Und es hat funktioniert.
Nicht nur Windows.Forms-Bibliotheken funktionieren nicht, auch andere Dinge scheinen (noch) nicht unterstützt zu werden. Das ist aber kein Raspi-Thema, sondern ein "was kann Mono unter Linux nicht, was C# unter Windows kann - bis jetzt"-Thema.
Hinweis: Zur Zeit gehen (ohne weiteres) nur .net-Anwendungen bis zur Framework-Version 3.5 - unabhängig von den verwendeten Bibliotheken.