VS2022 發佈快三個月了,我終於甘心裝好 VS2022 邁向新時代。之前撐著不裝的理由是強迫自己熟悉 VSCode,幾個月下來算是上手了,能順順地用它開發、測試、部署程式。小木頭這陣子在學寫 Arduino 程式,也順勢被我洗成 VSCode 鐵粉,對它的指令提示、語法檢查、自動程式排版、Column 編輯模式(垂直選取數列文字增刪)讚不絕口。

VSCode 固然輕巧方便,但要追求開發效率的極致,還是非 Visual Studio 莫屬,就像馬拉松選手要挑戰世界紀錄,犯傻才會放著碳板跑鞋不穿。

從 VS2019 使用者角度,VS2022 介面改變不大,幾乎不需要摸索就能使用自如。為避免錯過亮點,還是照著官方文件 What's new in Visual Studio 2022 來個新功能巡禮。

  1. Visual Studio 功能強大,但向來給人笨重、啟動遲緩的印象,VS 2022 有做了一些改善。順手測了手邊包含五個專案的 sln,跟 VS2019 相比,開啟時間由 25 秒縮短到約 15 秒。
  2. 終於,Visual Studio 現在是 64 位元了,不再受限 2GB 記憶體上限。
  3. 尋找所有檔案功能變快,官方有實測展示 Find in Files 由 18s 加快到 7s。
  4. 完整支援 .NET 6、C++ 20、Blazor 最新功能,強力推薦 Hot Reload 測試功能,錯過它將終生遺憾。(並不會)
    參考:Scott Hanselman Hot Reload 展示影片
    參考:Speed up your .NET and C++ development with Hot Reload in Visual Studio 2022
  5. 支援 Multi-Repo。一般版控時會將所有專案相關程式庫、資源放在同一個 Git Repo,當專案規模過大,Repo 包含數十上百萬個檔案,開發成員成百上千,共用一個 Repo 常會帶來效率及管理上的衝擊,於是便衍生將大專案拆解成多個 Repo 各自管理的 Multi-Repo 做法。
    過去 VS 處理 Multi-Repo 專案必須依賴第三方工具或啟動多個 VS,VS2022 已能識別 Multi Repo,同時追蹤多個 Repo 異動,一次 Commit。
    參考:Multi-repo Support in Visual Studio
  6. 視覺上的小更新:圖示優化並能感應 Windows 夜間模式(Night Light)切換主題。
  7. Quick Action 之前就有,能簡化重構、調整程式的繁瑣手工,像是在寫 DI 建構式參數時就不可或缺。VS2022 將小燈泡圖示移至打字游標處,比起之前要按快捷鍵或把滑鼠移至行號觸發圖示,再方便一些。

    參考:Discover quick actions for common tasks as you type, with IntelliCode

再來介紹我心中 VS2022 最大亮點 - IntelliCode

IntelliCode 並非 VS2022 首創,從 VS2019 16.4 就已內建,也有 VSCode 套件版本。但 VS2022 在 IntelliCode 又加入讓人印象深刻的新功能 - 一次幫你把整行程式寫完。

簡單來說,IntelliCode 是「具有 AI 功能的強化版 IntelliSense」,IntelliSense 會依你敲入的部分字元提示可能的型別、方法、變數名稱,自動補完。而 IntelliCode 更進一步,會依據程式前後文,以及常用程式寫法(依據 Github 上超過 50 萬行開源專案程式碼訓練成的 AI 模型), 主動猜測你想做什麼。而猜測的依據包含變數名稱與順序、參照的程式庫、臨近方法、IntelliSense 清單... 等。AI 模型在本機運作不透過雲端,故可離線使用,目前支援的程式語言有 Python、JavaScript、TypeScript、C# 及 Visual Basic。

例如:我寫了一個 Compare(int x, int y),IntelliCode 問我,你是要 return x == y 嗎?

若 x, y 是 int?,敲了 if ,IntelliCode 則會猜,你是要檢查 HasValue 嗎?

再如以下實例,VS 提示補完 CreateDiretory 後接著問我是不是要填進上一行宣告的變數?若是,按兩下 Tab 自動寫完整行。

是不是好雞婆好貼心?

程式編輯視窗左下角有個紫燈泡,可切換是否提示整行程式、等待打字停頓再提示整行程式、是否換行後直接提示整行程式。

除了整行自動完成,有個 IntelliCode Suggestions,在需要修改多段相似程式碼時,自動找到待修改的地方,一次幫你改掉。VS Blog 有個範例 - 將寫死的攝氏華氏溫度算式重構換成共用函式,先手動修改兩處,修改第三處時,IntelliCode 能自動找到剩下還沒改的地方,一次改完。

IntelliCode 也能依據團隊的開發習慣及既有程式庫訓練模型,自訂模型需結合 Azure DevOps Server,使用 Visual Studio IntelliCode Team Model Training 套件分析程式碼, 上傳到 IntelliCode 雲端服務訓練專屬模型,完成後 VS 自動下載更新過的模型,得到為讓 Repository 量身訂做的建議。

IntelliCode 也能透過 .editorconfig 設定檔自訂程式風格,決定程式碼排版、寫法規範等,使其貼近團隊要求。

AI 模型要精準,有賴於大量數據與持續回饋修正,因此 IntelliCode 會回傳匿名統計及錯誤狀況作為訓練模型的依據,以提高 IntelliCode 建議的準確度。回傳內容偏向 IntelliCode 建議被採納的比率,不會包含使用者寫的程式碼內容,原則上不致有洩密疑慮。但我知道,不相信的人永遠不相信,要關閉回傳統計,可以從 Help / Privacy / Privacy Settings... 進去停用:

最後,如果你很喜歡寫程式有 IntelliCode 小書僮服侍,幫忙磨墨遞筆,偶爾還幫你寫個兩句,那麼有個好消息,號稱 Coding 槍手的 Github Copilot 已在 3/29 登陸 VS2022,靠 Github 數十億行程式訓練出來的 AI 引擎,宣告完函式名稱、參數,甚至剛寫完註解,Github Copilot 就幫忙生出整個函式。Github Copilot 為雲端服務,目前可免費申請但要排隊,有興趣的朋友可以試試。

補充:MVP demo 有篇詳細的 VS2022 新功能拆解,推。

A glance of new features of VS2022.


Comments

# by YoMin Su

> IntelliCode 也能透過 .editconfig 設定檔自訂程式風格 是.editorconfig,修正一下喔~

# by Jeffrey

to YoMin Su, 感謝指正。

Post a comment