Visual Studio 2022 的更新又來囉~這次的版本是 17.6,官方的公告是《Visual Studio 2022 – 17.6 Now Available》,這邊就來簡單紀錄一下個人有興趣的更新了。
首先,Visual Studio 執行後列出的新增功能列表如下:
- C# 的 InteIIiCode API 使用範例
- .NET 遠端偵錯的視覺化檢視支援
- Unreal Engine 記錄檢視器
- Tim Jones 提供的 HLSL 工具擴充功能
- 適用于 ARM64 裝罝的 .NET MAUI 工具
- 適用于 Unix 的遠端檔案總管
- CMake 偵錯工具
- 匯入 C 或 C++ 內嵌 STM32CubelDE
- GitHub 問題整合
- 中斷點群組
- WSL 上 .NET 的分析工具即時圖表
- 建立 C + + 成員函式
- C++ 的檢測分析工具
- Android 資訊清單編輯器
C++ 相關的部分則可以參考《Visual Studio 2022 version 17.6 for C++ Developers》,不過個人覺得這次好像比較少值得注意的。
更詳細的更新,則可以參考 release note。
下面是個人覺得比較有興趣的點:
GitHub 問題整合
這邊是強化了 Visual Studio 內建的 git 圖形介面和 GitHub 的整合。
現在如果是 GitHub 的專案的話,在輸入 git commit 的註解的時候,只要輸入「#
」、或是按下右下角的「#」按鈕,他就會列出 GitHub 上面這個專案的 issue 與 pull request,讓使用者可以快速地將這個 commit 連結到對應的 issue;同時,這邊也可以快速地開啟 GitHub 上面的 issue 頁面。
詳細的說明,可以參考《Reference GitHub Issues and Pull Requests in Visual Studio》這篇文章。
這部份對於把專案放在 GitHub 上面的人來說,應該算是個實用的功能;但是由於 Heresy 自己主要是使用自己架設的 GitLab,所以用到的機會就不大了。
另外,git merge 似乎也有更新?但是由於 Heresy 大多都還是使用 TortoiseGit,所以就不多做研究了。
中斷點群組
這次更新後,可以在「中斷點」(breakpoint)視窗中,建立出有階層式的群組,來做控制點的管理。
這樣做的好處是當要大量啟用/停用特定的中斷點的時候,可以透過群組來做操作、而不用一個一個趣點選。
另外,中斷點群組也有很基本的條件式啟動,就不知道以後會不會有更多功能了?
建立 C + + 成員函式
這是個個人覺得還算實用的功能~如果我們定義了一個 class 如下:
class CData { protected: int iVal; float fVal; };
現在在 class 的名字下會出現三個點、將滑鼠游標移過去後會出現一個起子的按鈕,可以選擇要建立那些成員函式。
如果是「預設建構函式」的話,他會直接去透過 default 來建立一個空的建構子(參考)如下:
CData() = default;
而如果是選「具有所有欄位的建構函式」的話,則會變成:
CData(int iVal, float fVal) : iVal(iVal), fVal(fVal) { }
基本上算是幫忙寫了個殼,讓使用者方便後續修改了。
而「等號運算子」的部分,基本上就是 operator==
,建立出來的內容大概如下:
bool operator==(const CData& other) const { return iVal == other.iVal && fVal == other.fVal; }
在很多情況下,能自動建立出這種函式其實算是可以減少一些人工的。
不過個人覺得比較可惜的是,他還沒辦法去建立其他像是 copy constructor 或是 move operator 之類的東西?如果能把這些都自動建立出來,感覺會更方便。
成對括號上色
這個功能在 17.5 就有列出來了,不過當時實際上沒有真正出現;而現在在「選項」中的「文字編輯器」的「一般」、「顯示」裡面,可以開啟這項功能了~不過,選項名稱還是英文?
在開啟這項功能後,對應的括號(大括號和小括號都有)就會用同樣的顏色來顯示;理論上這樣可以更清楚利確認括號是怎麼對應的了~
不過,有的時候可能會覺得程式碼的顏色太花就是了。 :p
這部分可以參考之前的《C++ Brace Pair Colorization and More in Visual Studio》一文。
自黏捲動
這個「自黏捲動」(Sticky Scroll)算是個有趣的新功能?他預設應該沒有開啟,可以在「選項」中的「文字編輯器」、「一般」的「自黏捲動」中找到相關的設定。
它的功能基本上是會在捲動程式碼的時候,把 namespace、class、函式定義、if、for 這些有層次的東西留在文件的上放、讓在捲動程式碼的時候,可明確地看的出來現在的程式碼是在哪個東西裡面。
下面就是為微軟在《Sticky Scroll now in preview》一文中提供的示意:
不過感覺上,這種顯示效果感覺得習慣一下才會有比較有用?
效能改善
另外,根據官方說法,這次更新也大幅改善了大型方案的開啟、關閉速度。
以開啟大型方案來說,在有快取的狀況下號稱可以提高到 8 倍;而在關閉方案的部分,則也號稱快了 50%。
此外,Git History 的功能也號稱提高了 42% 的效能。
其他不知道怎麼用的
理論上,這次更新應該可以將 Just My Code 的設定檔(.natjmc
、.natstepfilter
)的檔案移到方案層級、方便團隊共用。
(關於 Just My Code 可以參考之前的《在 VIsual Studio 使用 Just My Code,避免 C++ 偵錯時顯示大量外部函式庫的內容》)
個人是覺得這樣的更動很實用,只是 Heresy 這邊卻看不出來到底該怎麼使用(官方 issue)?或許等之後研究出來,再來寫一篇好了?
另外,這次「檢測分析工具」(Instrumentation tool、官方文件)也開始支援 C++ 的專案了。要執行的話可以透過「偵錯」、「效能分析工具」裡面的「檢測」來啟動。
不過他不會自動幫專案加上必要性的「/PROFILE
」這個連結參數,需要自己修改專案設定(專案屬性、連結器、進階、設定檔)。
而重點是,這東西個人還不知道該怎麼實用? XD