.NET Core 3.0 SDKをRaspberry Piで動かしてみた

OSインストール

最新のRaspbianをダウンロードしてmicroSD焼きます。
現時点の最新、2019-07-10-raspbian-buster-lite.imgを使いました。
あと、sudo apt updatesudo apt upgradeも忘れずに実行。

NETCore 3.0インストール

最新のNET Core 3.0をダウンロード、インストールします。
現時点の最新はv3.0.100-preview9

まずはダウンロード。

wget https://download.visualstudio.microsoft.com/download/pr/33387ff2-7687-4564-a90d-28b9539e0d3b/f75a063b80fc5a94a4d35689aee8b108/dotnet-sdk-3.0.100-preview9-014004-linux-arm.tar.gz

RaspbianはARM32なので、Linux.NETCore BinariesにあるARM32をクリックすると、ダウンロードURLを得ることができます。

約113Mbytesのファイルでした。

次に、ダウンロードしたファイルを解凍します。

mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.0.100-preview9-014004-linux-arm.tar.gz -C $HOME/dotnet

最後に、環境変数DOTNET_ROOTPATHに、解凍したディレクトリを設定します。
これは.bashrcの最後に以下を追加してログインし直し。

export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

Hello World!

.NETCoreでコンパイル、実行できるか確認します。

dotnet new console -o myApp
cd myApp
dotnet run

Hello World!と表示されれば正常です。

Single-file executables

2回目以降でも、相変わらず起動に時間がかかるのですが、
f:id:matsujirushix:20190908165253p:plain

.NETCore3から使えるようになった(?)、Single-file executablesで、どれくらい起動時間が短縮されるか見てみましょう。

dotnet publish /p:PublishSingleFile=trueで実行ファイルを生成すると、
f:id:matsujirushix:20190908165825p:plain

エラーorz

あ、-rオプションでRuntime Identifierというのを指定する必要があるみたい。

気を取り直して、リトライ。

dotnet publish -r linux-arm /p:PublishSingleFile=true

できたっぽい。
f:id:matsujirushix:20190908170752p:plain

起動がクッソ速くなった。
f:id:matsujirushix:20190908170914p:plain

仕組みについては、ここに書いてあるようです。