Visual Studio 2022 的第四次大更新來了~官方的更新公告是《Visual Studio 2022 17.4 is now available!》,感覺比較大的點,包括了:
- .Net 7
- 正式支援 Arm64
- Git 支援多 repository
- Microsoft Teams Toolkit
- Productivity(IDE 新功能)
- 效能改善
而在開啟 Visual Studio 後的新功能頁面,則是列出了下面的新功能:
- 在 .gitignore 中取消追蹤變更
- 選取範圍相符項目醒目提示
- 內嵌重新命名
- 多存放庫支援
- 文件大綱
如果要更完整的功能,則應該就是要參考 release note 了。
這邊,則來稍微介紹一下一些 Visual Studio 的新功能。
支援 ARM64
這是第一個原生支援在 Arm 的處理器上進行 Arm64 的程式建置、偵錯的版本。
復原安裝版本(Rollback)
Git 支援更新
一個主要的更新,就是允許同一個方案裏面有最多 10 個 Git repository,並可以同時對多個 repository 進行 commit、push、pull 等操作。
如果同一個方案裡面,有專案是來自不同的 repository,右下角的 repository 資訊就會顯示對應的狀態:
要推送的時候,也可以同時推送給的兩個遠端的 repository。
詳細的說明可以參考《Multi-repo Support in Visual Studio》,不過老實說個人不知道什麼時候會要這樣玩?
另外,現在也可以在方案總管中,透過右鍵選單將檔案加到 .gitignore 裡面、取消追蹤。
音訊提示
在工具、選項、文字編輯器、一般中,現在有個「啟用音訊提示」的選項。在開啟這功能後,之後在編輯程式碼的時候,只要輸入游標切換到有問題、有中斷點的那一行的時候,就會發出對應的聲音做提示。
而如果是在比對程式碼差異的時候,移動到有刪除、新增行的地方,也會有聲音。
觸發條件總共有五個,可以在 Windows 的聲音控制(右圖)中來各別控制。
基本上,這是個個人覺得有點謎的功能?
凸顯與選取區域相符的內容(Selection Match Highlighting)
現在在文字編輯器中選取文字後,除了會在編輯區域中把和選取內容相符的文字加上底色外,還會在捲軸上也用顏色凸顯出來,方便使用者知道整份文件中,還有哪裡有相同的字串。
不過…Heresy 怎麼覺得這功能上一版就有了?o_O
由於 Heresy 自己主要是以 C++ 開發為主,所以這邊還是來特別看一下和 C++ 有關的部分了~這部份則可以參考官方的《What’s New for C++ Developers in Visual Studio 2022 version 17.4》這篇。
編譯器的診斷功能改善
根據該文的說法,這次比較大的改善應該是編譯器內部、針對 concept、ranges 這類新語法的診斷(diagnostics)功能;而改善的結果,主要會是在編譯器吐錯誤訊息的時候了~
更詳細的資訊,則可以參考《The Future of C++ Compiler Diagnostics in MSVC and Visual Studio》這篇文章。
此外,在警告的部分似乎也有做相當的修改(參考)。
Dev Container
再來,則是開始支援 CMake 專案的「Dev Container」功能。
這項功能基本上應該就是透過預先安裝好所有必要開發工具的 Docker 的容器,來進行專案的跨平台建置;官方也有提供一個範例專案(連結)可以讓使用者測試,不過 Heresy 這邊好像沒能成功?
Heresy 這邊其實也是用類似的方法在玩的,但是因為沒有在用 CMake,所以沒有辦法使用這個方法來整合就是了…認真講,好像應該花點時間來研究看看怎麼樣在 Visual Studio 裡面透過 WSL 來建置、偵錯了?
更詳細的資訊,可以參考《Dev Containers for C++ in Visual Studio》。
IDE 改進
這次微軟號稱針對方案進行索引的速度又有在做強化,在開啟大型方案的時候,號稱和 17.3 相比、會有 20-35% 的改善。
此外,以往在透過「建立宣告/定義」的功能的時候,編輯器都會透過「peek」的形式、在該行的下方顯示一個小視窗來顯示對應的內容。
而現在則可以在設定中調整他的行為模式,設定成不要預覽、或是直接開啟對應的文件。
設定的位置是:工具、選項、文字編輯器、C/C++、進階,「重構」裡面的「CreateDeclDefNavigation_Exp」(好像沒翻譯到? XD)。
C++23
在新的 C++ 標準的支援部分,這次也有再繼續強化,目前使用 /std:c++latest 來建置的話,也已經支援部分 C++23 的功能了。
其他的部分,這次的更新也還有一些個人覺得實用的小改變:
- 輸出視窗多了一個時鐘圖示的按鈕、是「顯示時間戳記」,可以在輸出的紀錄前面加上時間。
- 在文字編輯器中壓住 shift 鍵在轉動滑鼠滾輪會變成水平捲動。
這兩者在 Heresy 來看也算是實用的。
而在效能改善的部分,他是號稱在切換 Git 的分支、C++ 的索引、在檔案中搜尋取代、單元測試等等部分,都有相當程度的改善。
另外,針對 .Net 的程式,DataTable Visualizer 的部分也有做改進。他可以在偵錯時針對資料表去做排序、過濾、匯出。(參考)
老實說,這個功能感覺還滿實用的啊!不知道有沒有可能在 C++ 的部分也提供類似的工具?