はじめに
Raspberry Pi 4B に、.NET 5 でコーディング、実行する環境を構築します。
2021年現在、デバッグ実行のためには、テスト中の拡張機能が必要です。
標準の Raspbian OS のデスクトップ上で、VS Code によるコーディング、実行を繰り返し、GPIO の動作を確認したいといった目的で利用する、初学者向けの環境構築手順です。vscode + C# の基本については省略して、Windows環境構築との差分について記述しています。
Raspbian 上で動かした vscode の動作は、決して軽快とは言えないので、本格的な開発を行う場合は、リモートSSHを使用して、コーディングと実行環境の分割を検討してください。
.NET SDK
Raspbian OS の標準イメージは 32bit カーネルのため、.NET SDK は、Arm32 を選択します。
Ubuntu の場合、パッケージでのインストールが可能ですが、Raspbian へは、手動でのインストール手順を実行します。
最新のSDKバージョン確認、ダウンロードURLは、以下から確認します。
.NET 5 > SDK - Arm32 のダウンロードページを開きます。
ダウンロードページの、コマンドと手順に基本的には従います。
公式の手順は、/home/pi 以下に配置していますが /usr/share/dotnet に配置します。
pi ユーザーの環境変数を設定します。
$ nano ~/.bashrc
# dotnet sdk enviroments
export DOTNET_ROOT=/usr/share/dotnet
export PATH=$PATH:$DOTNET_ROOT
VS Code 関連
重要な問題点として、Raspberry Pi 上で動作させている VS Code で、デバッグを実行する正当な方法がありません。
C# 拡張機能の元である、OmniSharp が、ARMをサポートしていないためです。
C# 拡張機能をインストール後、dotnet new console
で作成したプロジェクトフォルダーを開くと、以下の通知メッセージが表示されます。
The C# extension for Visual Studio Code (powered by OmniSharp) is incompatible on linux armv7l
本来ならば、自動で launch.json の生成するかを確認する通知メッセージが表示されます。
Feature Request の issue が発行されています。
修正のPRが、テスト進行中です。
慣れ親しんだ、F5 による実行とデバッグ (launch.json による定義) を可能にするには、後述のPR承認待ちの拡張機能をインストールします。
.NET 5 自体は、ARMをサポートしているため、ターミナルを開いて、dotnet build
& dotnet run
する事で、現在でも実行はできます。
csharp-1.23.17.vsix を先行テスト
armv7l が追加定義された vsix を手動インストールしてテストします。
※beta1 の 400k 程度のビルドを使用します。直近のビルドは、100Mを超えていて余計なものが含まれてしまっています。
ダウンロードした vsix をファイルからインストールすると、既存の拡張機能に上書きインストールされます。
Installing C# dependencies...
Platform: linux, armv7l, name=raspbian, version=10
Downloading package '.NET Core Debugger (linux / ARM)' (56954 KB).................... Done!
Validating download...
Integrity Check succeeded.
Installing package '.NET Core Debugger (linux / ARM)'
Finished
実行とデバッグを開き、launch.json をワークスペースに追加します。
構成の追加で、{} .NET: Launch .NET Core Console App
を選択します。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net5.0/Xxxxx",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
"console": "internalConsole"
}
]
}
program の部分を環境に合わせて修正します。
ビルドも実行できるように、ビルドタスクを作成します。
ターミナル > 既定のビルド タスクの構成... > テンプレートから task.json を生成 > .NET Core ビルドコマンドを実行
デバッグ実行の開始と、ブレークポイントによる停止が可能である事を確認しました。
git のユーザー情報設定
コードを管理する GitHub ユーザー情報を git config で初期設定します。
$ git config --global user.name xxxxx
$ git config --global user.email xxxxx@exsample.com
「GitHub に公開」を可能にする
ソース管理から、GitHub に公開 を実行すると、エラーが発生します。
初回実行時に、ブラウザで vscode-auth.github.com でアクセストークンの発行後、出力の "GitHub Authentication" に、以下のエラーが出力されます。
Setting token failed: Error: The name org.freedesktop.secrets was not provided by any .service files
通知には、キーチェーンの保存に失敗したとのメッセージが表示されます。
$ sudo apt-get install gnome-keyring
gnome-keyring をインストール後、GitHub に作られてしまった空リポジトリを削除後に、公開を再実行します。
VS Code を起動する度に、キーチェインをアクティブにする為のパスワード入力を求められます。
参照記事