Ist es möglich (und machbar), .NET-Anwendungen auf dem Raspberry Pi mit Mono auszuführen ?
Wenn ja, wie gut laufen sie? Ist eine grundlegende GUI verwendbar oder beschränkt sie eine schlechte Leistung realistisch auf Befehlszeilenanwendungen?
Ist es möglich (und machbar), .NET-Anwendungen auf dem Raspberry Pi mit Mono auszuführen ?
Wenn ja, wie gut laufen sie? Ist eine grundlegende GUI verwendbar oder beschränkt sie eine schlechte Leistung realistisch auf Befehlszeilenanwendungen?
Antworten:
Es gibt eine ganz ähnliche StackOverflow-Frage, Mono on Raspberry Pi . Durch meine eigenen Recherchen konnte ich jedoch nichts Spezielles für .NET finden, sondern nur C #.
Sie können die Laufzeit mit APT auf einer Debian-Distribution installieren, indem Sie Folgendes ausführen:
$ sudo apt-get install mono-runtime
Sie können auch (vorausgesetzt, Sie haben eine Art GUI wie LXDE) eine langsame Mono-IDE installieren mit:
$ sudo apt-get install monodevelop
Für Arch Linux ARM müssen Sie die Laufzeitumgebung wie folgt über Pacman installieren :
$ sudo pacman -S mono
Die Mono-IDE kann auf ähnliche Weise installiert werden:
$ sudo pacman -S monodevelop
Entgegen der weit verbreiteten Meinung läuft der von VB.NET kompilierte Code auf dem Raspberry Pi einwandfrei, zumindest unter Debian. apt-get installiere mono-vbnc und führe dann deine VB-exe als Argument für mono aus, zB mono yourexe.exe
Ich habe keine Leistungsbenchmarks durchgeführt, da ich keine leistungsintensive App schreibe, aber bisher in Ordnung zu sein scheint.
.NET-Code, der .NET Framework-Bibliotheken verwendet, kann nicht auf Raspberry Pi ausgeführt werden, da für die Ausführung eine ARM-kompatible Version von NETMF oder CLR erforderlich ist . Microsoft hat Windows noch nicht auf ARM (WoA) veröffentlicht. In Experiment 19 erfahren Sie, wie Microsoft Research CLR mit ARM arbeitet.
Das Ausführen von .NET-Code (ohne Referenz oder mithilfe von .NET Framework-Bibliotheken) ist jedoch mit Mono möglich, da Mono über eine CLR für ARM-Geräte verfügt.
Weitere Informationen zu Windows unter ARM (WoA) finden Sie unter Erstellen von Windows für die ARM-Prozessorarchitektur .
Ich habe eine .NET-Kommandozeilenanwendung, um mit Mono zu arbeiten. Die App führt im Grunde genommen eine Art Port-Weiterleitung durch, wobei über den seriellen UART empfangene Daten über TCP / IP weitergeleitet werden. Es werden die Klassen SerialPort, TcpListener, TcpClient und Socket .NET verwendet, wobei nur geringfügige Änderungen am SerialPort-Verarbeitungscode erforderlich sind. Ich benutze das Debian-Soft-Float-Betriebssystem.
In Bezug auf die Leistung war das erste, was mir auffiel, eine erhebliche Verlangsamung bei einigen Debug- / Trace-Codes, bei denen ein Array von Bytes zu Protokollierungszwecken in eine Zeichenfolge formatiert wurde. Es war 50x langsamer als auf einem PC.
Daher würde ich empfehlen, einige Leistungstests zu schreiben, wenn Sie vorhandenen Code auf das RPi portieren.
Für Unit-Tests funktioniert NUnit auf dem RPi ...
So installieren Sie NUnit:
sudo apt-get install nunit
Zu rennen:
nunit-console appUnderTest.exe