Raspberry Piで.NET 6開発をしたい
マイクロソフト公式のページにインストール方法が書いてあった
「フレームワーク依存アプリの展開」の「2.」で解説されている。
この項目の上から順番にターミナルへコピペすれば良さそう。
以下、このページのインストール方法を見る前の内容。
まず、.NET 6のインストールでつまずく。
dotnet-install スクリプトを使用するのが簡単そう。
実行権限を与えて実行すると自動でインストールされる。
環境変数に設定されていないので、設定する。
ターミナルからコマンドを使って設定しても、ターミナルを閉じると消えてしまう。
環境変数の永続化をしないといけない。
「~/.profile」ってファイルに書けばいいらしい。
「~/」はホームディレクトリのことらしい。
ファイルの一番下に以下を追加すればいい。
export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$DOTNET_ROOT
ちなみに、APTによるインストールはARMに対応していない
こちらの記事によると、apt-getコマンドで簡単にインストールできると書いてあるけど、APTによるインストールはRaspberry piの採用しているCPUであるARMには対応していない。
記事の「APT のトラブルシューティング」の項に記述がある。
(VNC経由だと?)Raspberry pi上のVS Codeは使い物にならない
私はCUIが苦手なので、GUIでできる部分は全部GUIにしたです。
なので、Raspberry piもVNCを使ってリモート操作できるようにしました。
.NET 6がインストールできたので、VS Codeをインストールし、開発を始めようと思いました。
しかし、VS Codeでターミナルを開き、コマンドを実行しようとキーボードを叩くと、文字は表示されません。少し待つと、バババと叩いたキーの文字が表示されました。ラグすぎます。
テキストエディタ部分は触っていませんが、ターミナルがこれでは使い物になりません。
Raspberry pi上でVS Codeを使うのはあきらめました。
他の人の記事によると、割とスムーズに動作しているようです。
VNCが重いのでしょうか?要検証です。
IntelliSenseが使えない
Raspberry pi上でVS Codeを使うのはあきらめたわけですが、ではどうやって開発をするのか。
Remote Development拡張機能を使用して、WindowsのVS Codeから遠隔操作することにしました。
こんな便利な機能があったのかと驚いたわけですが、これで使用すると、IntelliSenseが使えませんでした。使用したい拡張機能は、サーバー側(Raspberry pi)にインストールする必要があるらしいので、C#の拡張機能を「install in SSH:」ボタンを押してインストールします。すると、右下に「ARMでは使えません」的なポップアップが表示されます。
結局、Sambaを使う
IntelliSenseが使えないので、Remote Developmentは使えません。
となると、Windowsのローカル環境でVS Codeを使用するしか無さそうです。
Raspberry piとWindowsでファイルを共有して作業するのが良さそうです。
Raspberry piをファイルサーバーにするつもりは無かったのでSambaは入れてなかったのですが、Sambaを使用してファイルを共有します。
Sambaを使用すると、WindowsからRaspberry piのファイルが見えるので、そのままエクスプローラの「Codeで開く」から開いて作業ができます。
ビルド等は、SSHでRaspberry piに接続してビルドを行います。
最近のWindowsでは、コマンドプロンプトからSSH接続ができるので、VS CodeのターミナルでSSH接続しちゃうといいかもしれません。
Windowsからlinux用にビルドできるので、そのままビルドします。
ARM対応C#拡張機能のプレ版
VS CodeのC#拡張機能は、OmniSharpってプロジェクトらしい。
githubのissueを見てみると、すでに議論がされていて、探すとすでにARM対応プレリリース版があるらしいことに気づいた。
これで、Raspberry pi上でIntelliSenseが使える用になる!?
Samba使っているのならWindowsでビルドしてDLLをRaspberry piへコピーすればいいんじゃね?
そのまま↓に書いてある方法が簡単っぽい?
ってか、Raspberry piのディレクトリでビルドするのだから、成果物はRaspberry pi上にできるわけで、コピーすらいらない。
VS CodeのC#拡張機能Linux arm版は、名前から察するに64bit版。
Raspberry Pi Imager使ってインストールできるのは、32bit版。
一応、vsixファイルをダウンロードしてインストールしてみたけど、使えなかった。
Raspberry pi osの64bit版をインストールしてみて、再挑戦してみる。
Raspberry Pi osの64bit版とVS CodeのC#拡張機能Linux arm版でいけた
Raspberry Pi osの64bit版を入れて、VS CodeのC#拡張機能Linux arm版を入れたら、IntelliSenseが動いた。
Remote Development拡張機能でも機能した。
以下の組み合わせが最適解っぽい
Raspberry Pi os 64bit版
VS Code + C#拡張機能Linux arm版 + Remote Development拡張機能
結論はこちら
ラズパイOS64bit版が正式リリースされた。