在Raspberry Pi上輕鬆設置.NET Core並使用VS Code進行遠程調試

目錄

介紹

背景

工具選擇

先決條件

準備SD卡

SSH配置和.NET安裝

示例程序

興趣點


介紹

手動設置了用於.NET Core和遠程調試的Raspberry Pis之後,我想要一個更簡單,更自動化的解決方案。這樣做的好處是:

  • 更輕鬆、更省時
  • 更少的錯誤傾向
  • 更容易跟上Raspbian的新版本
  • Headless ——即無需顯示器、鍵盤或鼠標。

背景

關於該主題還有很多其他文章,對我來說可能最有用的是Scott Hanselman的這篇文章。但是,它們都需要大量的手動設置。我想要一個儘可能自動化的解決方案。顯然,需要進行一些手動干預,因爲您必須物理地移動SD卡,給設備加電等,但是除此之外,我的目的是運行腳本,然後設置就會發生。正如Scott Hanselman所說:

引用:

好的(有點開玩笑,但不是真的)是程序員的經驗法則——如果您執行兩次操作,請使其自動化

我希望安裝程序能夠實現以下目標:

  • 從開發機上新格式化的SD卡開始
  • 將卡配置爲在傳輸到Raspberry Pi時允許遠程ssh
  • 配置Raspberry Pi以實現安全的無密碼ssh連接
  • 安裝.NET CoreVS遠程調試器

最後,我將添加幾個C#項目來演示所有工作。

工具選擇

我已經使用VS Code幾年了,並且真的很喜歡它——這就是我決定使用的方式(幾十年來我也使用過各種版本的Visual Studio——但是我不會在這裏詳細介紹它們的優點和缺點。:)

我也非常喜歡Powershell,但決定將Bash用於腳本。希望這將使其儘可能成爲跨平臺的。您將需要配置VS Code以將bash作爲默認外殼程序——最簡單的方法是按Ctrl + Shift + P並鍵入default shell。這將提供命令提示符,Powershell或各種Linux版本的選項。最適合我的人是Git Bash但其他的也應該工作。

先決條件

VS Code解決方案可以複製到開發計算機上的任何位置。在Visual Studio Code中打開它時,請使用文件菜單中的打開文件夾

您將需要一種將Raspbian鏡像放入SD卡的方法。我會推薦Raspberry Pi Imager。您不必先下載鏡像,但我認爲這是值得做的,因爲否則,您可能會發現自己使用了大量的Internet帶寬(即使壓縮後,鏡像的大小也往往爲GB)。可通過鏡像列表上的使用自定義來訪問下載的鏡像。

您將需要一個Wifi路由器,並且需要知道SSIDPSK。我認爲你有那些:)。而且顯然是Raspberry Pi和電源。我在Raspberry Pi 3上進行了測試,但是從V2起的任何版本都可以。請注意,這不會Raspberry Pi Zero工作,因爲它使用是.NET Core不支持的ARMv6。如果您的Raspberry Pi沒有內置Wifi,則還需要USB Wifi加密狗。

最後,您將需要下載.NET core SDK的最新版本。在撰寫本文時,版本爲3.1。這應該複製到PiFiles文件夾。您將需要ARM32版本,並且應該期望它的大小超過100MB

準備SD

一旦有了新刷新的SD卡,在將其插入Raspberry Pi之前,需要一些額外的配置。這是任務12。要運行任務,請按Ctrl + Shift + P並選擇任務:運行任務。您應該看到如下任務列表:

選擇任務1.設置Wifi設置...這將要求您輸入Wifi SSIDPSK。輸入它們時,它們將存儲在settings.json中,因此您無需再次輸入它們。

然後選擇任務2.修改SD卡以進行SSH訪問...這將要求您提供帶有SD卡的驅動器。因爲這將在bash腳本中訪問,所以它可能類似於/d/mnt/d。如果您剛剛對卡進行了鏡像,則可能需要重新插入它,因爲鏡像程序會在完成後將其彈出。運行任務2後,應彈出卡並將其插入Raspberry Pi。打開Raspberry Pi的電源,等待其啓動,然後再進行下一步。

SSH配置和.NET安裝

下一步是運行任務3.設置Raspberry Pi Name。這會將主機名從默認的raspberrypi更改爲您選擇名稱。還會詢問您是否要設置靜態IP地址。如果您不希望使用靜態IP,請將其留空。我在Windows 10和本地主機名查找(mDNS)方面的經驗是非常少的——我不確定它是否是可用的。但是,即使您根本無法使用本地名稱解析,也應該可以使用IP地址。和以前一樣,這些設置會記住在settings.json中,因此您不必重新輸入它們。

設置好新名稱後,任務4. 將公共SSH密鑰添加到Raspberry Pi將重新配置Raspberry Pi並將公共SSH密鑰複製到它,這樣當您(VS工具)通過SSH連接時就不必輸入密碼了。系統將詢問您是否要連接(鍵入yes),然後輸入raspberry pi密碼(鍵入raspberry)。此時,Raspberry Pi將重新啓動,因此您需要等待,然後再運行下一步。如果尚未設置ssh密鑰,則類似這樣的文章將向您展示如何創建一個。現在,您將能夠登錄,而不需要輸入密碼,但只有從您的機器。

任務5. Raspberry Pi Dotnet安裝將在Raspberry Pi上安裝 .NET核心SDKVS調試器。這將需要一段時間,但是一旦完成,我們現在就可以在Raspberry Pi本身上或在我們的主要開發機器上遠程編寫.NET程序——顯然,遠程編寫會變得更加有趣!

示例程序

我創建了兩個示例程序。第一個是Hello World項目。這將在本地(即在開發計算機上)和遠程運行。運行它的最簡單方法是選擇左側的運行圖標,然後從下拉列表中選擇配置:

現在,您應該能夠像在本地一樣設置斷點並進行調試:

爲了運行Blink程序,您需要將LED連接到GPIO引腳之一。Blink程序使用出色的System.Device.Gpio庫,應使用NuGet自動安裝該庫。

興趣點

這就是本文的內容。使用Python編寫blink程序可能會容易得多,但是對我來說,使用c#的全部意義在於,您可以使用.NET創建更大、更可維護的解決方案(儘管我敢肯定有些人會不同意這一點)。話雖如此,本文中的演示程序並非旨在用作更大程序的模板。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章