Veränderungen begünstigen nur den,
der darauf vorbereitet ist. – Louis Pasteur
Mein erster Anlauf mit .NET Core auf einem Raspberry war so holprig wie bei einem Kind, das laufen lernt. Mit der ersten Version benötigten ein paar Linux-Distributionen Mono als Brücke, damit die .NET Core Programme überhaupt liefen. Mit .NET Core 2.0 ist das nun anders. Ein Hauptgrund liegt darin, dass die Betriebssysteme künftig als ein Ganzes betrachtet werden und nicht mehr pro Distribution.
Nun hatte ich die Gelegenheit einen zweiten Anlauf zu nehmen, um .NET Core 2.0 auf einen Raspberry PI mit Linux laufen zu lassen.
Als Vorbereitung installierte ich folgende Pakete:
- sudo apt-get install curl libunwind8 gettext
Damit die Anwendungen auch laufen, wird die .NET Core Runtime benötigt. Um die letzte Version zu installieren, sind folgende Schritte nötig:
curl -sSL -o dotnet.tar.gz https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.0.0/dotnet-runtime-latest-linux-arm.tar.gz sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet sudo ln -s /opt/dotnet/dotnet /usr/local/bin dotnet --help ## um die erfolgreiche Installation zu testen.
Damit ist die Installation zügig abgeschlossen. Als holprig und kompliziert empfinde ich das nicht mehr.
Ein kleines Projekt als Test darf natürlich auch nicht fehlen. Dies habe ich in Visual Studio 2017 auf einen Windows-Rechner realisiert. Dafür sind die folgenden Installationen eine Voraussetzung:
Mit diesen Voraussetzungen existieren die Projektvorlagen für .NET Core 2.0 Anwendungen und das System ist für .NET Standard 2.0 bereit. Der Workflow für die Entwicklung ist identisch wie bei anderen Projekten, welche in Visual Studio entwickelt werden.
Nach dem Erstellen der Beispiel-Lösung raspicli stellt sich natürlich die Frage, wie kommt die Anwendung auf den Raspberry PI? Das Paket habe ich mittels SSH auf den Einplatinencomputer übertragen. Die bekanntesten Werkzeuge dafür sind WinSCP und Putty.
Zuvor muss es jedoch für die entsprechende Umgebung aufbereitet werden. Dazu habe ich die Nuget Package Manager Console zu Hilfe genommen und folgenden Befehl ausgeführt:
dotnet publish -r linux-arm -c Release
Im Relase-Ausgabeverzeichnis netcoreapp2.0 wird ein weiteres Verzeichnis mit dem Namen linux-arm angelegt und darin wiederum ein Publish-Ordner. Dieser Inhalt kann mittels SSH auf den Raspberry übertragen werden.
Damit auf dem Raspberry das Programm ausgeführt werden kann, ist folgende Anpassung der Dateiberechtigung einmalig notwendig.
sudo chmod 755 raspicli
Anschliessend kann die Datei mit
./raspicli
Für mich stellen die Neuerungen im Linux-Bereich eine enorme Vereinfachung dar. Auf meinem Raspberry und natürlich auf dem meiner Tochter läuft nun die dotnet-Runtime. Als nächstes stehen auch ein paar Tüftelein mit Unosquare.Raspberry.IO an.
Wie sind deine Erfahrungen mit .NET Core 2.0?