在像 Raspberry Pi 這類基於 ARM 的 SBC 上執行的 .NET 應用程式除錯是一項獨特的挑戰。 如果需要,你可以在裝置上安裝 Visual Studio Code 和 .NET SDK,並在本地開發。 然而,裝置的效能使得本地編碼與除錯並不理想。 此外,Visual Studio Code 的 C# 擴充功能與 32 位元 ARM 作業系統不相容。 因此,像 IntelliSense 以及 ARM 裝置上的 Visual Studio Code 除錯功能僅支援於 64 位元系統。
基於這些原因,強烈建議你先在開發電腦上開發應用程式,然後部署到裝置進行遠端除錯。 若您希望在裝置上本地開發與除錯,則需具備以下條件:
- 一個 64 位元作業系統搭配桌面環境,例如 Raspberry Pi OS(64 位元)。
-
Visual Studio Code,並搭配 C# 擴展 。
- 關閉 硬體加速。
- .NET SDK 10 或更新版本。
- 使用 dotnet-install 腳本安裝,如同在框架依賴部署中進行。 記得新增
DOTNET_ROOT環境變數,並將 .dotnet 目錄加入$PATH。
- 使用 dotnet-install 腳本安裝,如同在框架依賴部署中進行。 記得新增
本文的其餘部分將說明如何從開發電腦遠端偵錯單板電腦上的 .NET 應用程式。
從 Visual Studio Code 除錯(跨平台)
從 Visual Studio Code 除錯 .NET 需要在單板電腦上及專案的 launch.json 檔案中進行設定步驟。
在 SBC 上啟用 SSH
遠端除錯需要 SSH。 要在 Raspberry Pi 上啟用 SSH,請參考 Raspberry Pi 文件中的「啟用 SSH」。 請確保你已設定 無密碼 SSH。
在 SBC 上安裝 Visual Studio 遠端除錯器
在 SBC 的 Bash 主控台內(無論是本地工作階段或透過 SSH),執行以下指令。 此指令可在裝置上下載並安裝 Visual Studio 遠端除錯器:
curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l ~/vsdbg
在 Visual Studio Code 設定 launch.json
在開發電腦上,為專案 launch.json新增啟動設定。 如果專案沒有 launch.json 檔案,請切換到 Run 分頁,選擇 create a launch.json file,並在對話框中選擇 .NET 或 .NET Core 來新增一個。
launch.json 的新配置應該會類似以下其中之一:
"configurations": [
{
"name": ".NET Remote Launch - Self-contained",
"type": "coreclr",
"request": "launch",
"program": "~/sample/sample",
"args": [],
"cwd": "~/sample",
"stopAtEntry": false,
"console": "internalConsole",
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "ssh",
"pipeArgs": [
"pi@raspberrypi"
],
"debuggerPath": "~/vsdbg/vsdbg"
}
},
請注意下列事項:
-
program是由dotnet publish所建立的可執行檔。 -
cwd是啟動裝置應用程式時應使用的工作目錄。 -
pipeProgram是通往本地機器上 SSH 用戶端的路徑。 -
pipeArgs是要傳遞給 SSH 用戶端的參數。 務必指定密碼參數,以及格式pi中的使用者。<user>@<hostname>
部署應用程式
依照cwd 設定參數中指定的路徑相同。
啟動偵錯工具
在 Visual Studio Code 中,在
從 Windows 上的 Visual Studio 除錯
Visual Studio 可以透過 SSH 除錯遠端裝置上的 .NET 應用程式。 裝置上不需要專門的設定。 若要詳細了解如何使用 Visual Studio 遠端偵錯 .NET,請參考使用 SSH 在 Linux 上遠端偵錯 .NET。
如果您在除錯框架依賴性的部署,務必選擇dotnet流程。 否則,程序名稱將與應用程式的執行檔相同。