改用VSCode開發ASP.NET Core心得

語言: CN / TW / HK

近一兩年用 Visual Studio Code 寫程式碼的頻率愈來愈高。工作專案仍以 Visual Studio 2019 為主,但寫 PowerShell 我就會用 VSCode,至於在家寫好玩的程式,像是玩 ESP/Arduino IoT、C/C++、Golang、Node.js、Vue.js + TypeScript SPA、OpenSCAD... 清一色都是開 VSCode。簡單來說,VSCode 包辦所有非 C# 語言的場合。之前的中秋黑客松- LINE Bot 開發,除了是我第一次寫 LINE 機器人,也是第一次用 VSCode 寫完整個 ASP.NET Core Razor Page 專案!

慣用 Visual Studio 的人換成 VSCode 通常需要一段適應期,二者操作概念差異頗大。Visual Studio 是個整合性跟完整度極高的開發環境,開發所需大小功能齊備,只需在大小工具視窗間穿梭點選按鍵敲 Code,談笑間,檣櫓灰飛煙滅,猶如連按摩浴缸都有的豪華遊艇,搭乘起來的爽度不言而喻。至於 VSCode,本質是個開放構架,彙集各路英雄好漢開發的擴充套件,得自己堆疊擴充套件打造理想開發環境,但再怎麼樣,整體舒適度仍跟 Visual Studio 有大段差距,但 VSCode 輕巧、啟動速度快有稍稍扳回一成。

近兩個月用 VSCode 完成了幾個 Coding4Fun ASP.NET Core Razor Page 小專案,小有心得,順手整理一下。(注:本篇會以保哥的如何在 VSCode 設定完整的 .NET Core 建置、發現與部署工作為基礎作補充,開發平臺則鎖定 .NET 6。)

1、VSCode 會自動下載更新,但開發 .NET 6 我遇到一個小陷井- VS2019 也要更新到新版,否則會出現 OmniSharp.MSBuild.ProjectLoader 目前的 .NET SDK 不支援以 .NET Core 6.0 作為目標。請以 .NET Core 5.0 或更低版本作為目標,或是使用支援 .NET Core 6.0 的 .NET SDK 版本。錯誤。新版 VSCode 自帶新版 MSBuild,並有個 MSBuildLocator。機制尋找專案所需的 MSBuild,只是實測發現若有安裝 VS2019,它總是優先用 VS2019 較舊版的 MSBuild,不怎麼聰明。

2、VSCode 的擴充套件超多,多到讓人眼花潦亂,若不知道寫 .NET Core 該裝哪些套件,推薦保哥整理的 .NET Core Extension Pack,幾乎都是寫 .NET Core 必備的好物。安裝擴充套件除了透過 GUI 打關鍵字尋找安裝,也可用一行指令搞定 code --install-extension doggy8088.netcore-extension-pack

3、在 VSCode 要建立 .NET Core 專案,不像 Visual Studio 有建立新專案選單可以選模板,要自己下指令。我慣用的 SOP 是,在 Cmder 或 Windows Terminal mkdir 以專案名稱為名建資料夾,cd 到資料夾後,下指令 dotnet new [template_type],接著輸入 code . 用 VSCode 開啟專案。

4、要檢視有哪些模板,可以下指令 dotnet new -l

帶入 Short Name 引數即可建立不同專案,例如:dotnet new console 是 Console Application、dotnet new razor 是支援 Razor Page + MVC 的 ASP.NET Core 專案、dotnet new webapi 是 WebAPI 專案。專案名稱則由資料夾名稱決定。

5、新增類別(.cs)、View(.cshtml)、Controller、Razor Page 時最懷念 Visual Studio 的方便。Visual Studio 有各式模版,已預先把 using、namespace、程式基本骨架做好,新增完馬上進入重點寫業務邏輯。VSCode 內建的 New File 所建立的是空白檔案,連 using 跟 namespace 都沒有,得從零開始。dotnet new 有提供一些模版,像是 dotnet new page 可建立 Razor Page,但功能很陽春,完整度差蠻多。

有個好用的 C# Extensions 試圖縮小這段差距,它包含在 .NET Core 大補帖中,記得看一下介紹善用它的功能。

6、除了靠套件,現在也可用 dotnet new gitignore 建立 .gitignore。

7、跟 Visual Studio 一樣,按 F5 可以除錯,設斷點、檢視變數、在 DEBUG CONSOLE 即興下指令;流程大致串通後,要細部微調,例如:改 css、HTML、JavaScript 及小調 C# 邏輯時,強烈推薦 .NET 6 的 Hot Reload 功能,修改後不用整個專案重新編譯,快速置換修改部分後,瀏覽器還會自動顯示修改結果,好用到昇天。Scott Hanselman 有段示範短片值得一看,用過通常就回不去了。

當程式修改幅度過大,超出 Hot Reload 涵蓋範圍時,會出現 Unable to apply hot reload because of a rude edit. Rebuilding the app…資訊,不過不用擔心,VSCode 會重新編譯重啟程式,後續的小修改仍可繼續 Hot Reload。參考