2021 年底發表的 Visual Studio 2022 在微軟的 Visual Studio 系列裡面應該算是滿長壽的版本了?目前看來微軟似乎也沒有要改版、而是選擇繼續推出了新的版本、17.12。
官方的公告是《Visual Studio 2022 v17.12 with .NET 9》,除了 Visual Studio 的更新之外,同時也發表了 .NET 9(GitHub);不過由於 Heresy 沒有在使用 .NET,所以這部份就跳過了。
而 Visual Studio 2022 17.12 有什麼新功能呢?詳細的列表可以參考官方的 release note(連結),針對 C++ 的部分則可以參考《What’s New for C++ Developers in Visual Studio 2022 17.12》。
以 release note 來說,這次的更新分成下面幾類:
- Productivity
- GitHub Copilot
- Debugging & diagnostics
- Git tooling
- IDE
- Cloud
- Desktop
- Web
- Data
- .NET
- C++
這邊 Heresy 基本上還是會以自己 C++ 開發的角度、來大概紀錄一下有什麼新功能了~而由於 Heresy 沒有訂閱 GitHub Copilot,所以這部分也不會去管了。
從錯誤清單複製
在建置專案的過程中,如果有出現錯誤或警告的話,相關的資訊都會出現在「錯誤清單」這個視窗內。以往要複製錯誤的資訊的時候,會複製出大量的資訊,如果要拿來搜尋或記錄的話、會比較不方便。
現在這部分變成兩個選項:「複製」和「複製資料列」。
如果是使用 Ctrl + C 的話,就只會複製到錯誤的「說明」、方便拿來紀錄和搜尋;而如果是用 Ctrl + Shift + C 的話,則會複製出整列的完整資料。
顯示方法回傳值
中斷點群組匯入匯出
透過程式碼搜尋快速切換到檔案的特定行
透過「程式碼搜尋」(個人習慣用 Ctrl + Shift + F)的功能,可以快速地找到所有程式碼裡面的特定文字等資訊。而現在它新增了一個功能、是可以跳到特定檔案的指定行數。
如果想跳到目前開啟的檔案的第 10 行的話,可以在程式碼搜尋的搜尋框輸入「:10」,他就會顯示檔案名稱、以及預覽,點兩下後就會在程式碼編輯器裡面開啟到第 10 行了。
不過如果只是這樣的話,其實透過 Ctrl + G 的功能會更快。
程式碼搜尋器的好處,是它可以搜尋檔案名稱、跳到指定檔案的指定行數。比如說輸入「main:10」的話,他會在目前的方案(這個可以自己設定範圍)中,找出檔名中有「main」的檔案、然後讓使用者預覽這些檔案的第 10 行、然後決定要跳到哪個檔案的第 10 行。
個人是比較少需要這樣操作,但是如果是針對其他資訊、來知道要開啟某個檔案的第幾行的時候,這功能會很方便。
另外,這個視窗目前也在右上角也多了兩個按鈕,第一個眼睛的按鈕可以關閉下方的預覽區塊。
第二個按鈕則可以將視窗模式切換為停駐(dock)模式,這樣就可以和 Visual Studio 其他工具視窗一樣,可以固定在主介面上;這樣對於經常需要操作這個功能、或是想要固定看它顯示的結果的人來說,應該可以比更方便地使用?
重新整理尋找的結果
這應該是「檔案中尋找」(Ctrl + Shift + F)的改進,在一般的尋找(Ctrl + F)中如果使用「全部尋找」也適用就是了。
這邊主要是在尋找結果的視窗有多一個「重新整理」的按鈕、可以重新找一次。
如果要搜尋的檔案有修改(例如透過外部工具修改、或是更新版本)的時候,這樣的重新搜尋會直接套用既有的條件、再次搜尋,在某些情境下也算是有用的。
而如果發現搜尋結果不夠好,現在也還有「修改尋找」的按鈕,可以針對現在的尋條件進行調整。
CodeLens 檔案等級指標
預設關閉、個人覺得有點微妙的功能。要開啟的話,要在「工具」、「選項」中,選擇「文字編輯器」下的「進階」,然後勾選右側的「Show file level CodeLens indicator」(這邊還在介面上還沒有翻譯…)。
開啟後,如果是有上 git 的專案的話,開啟檔案的時候、程式碼編輯器的下方會有顯示 git 的版本紀錄摘要(下面的「159 天前」那一個區塊)。
如果覺得太長、很礙事的話,也可以點選它左邊的「<」,這樣會收折則下面的樣子:
這個指標會不會
變更 C++ 成員函式簽章
在「快速動作與重購」的「變更簽章」的部分,現在有一個專用的介面:
現在上方還是可以輸入、修改函式的定義,不過下方會即時列出這個函式的參數列表,如果只是要修改順序的話,可以透過拖拉下方的參數來調整順序。
設定 C++ 命令列引數(Unreal Engine 專案)
可以直接在主視窗的工具列上設定要偵錯的專案的命令列引數(執行程式的參數),算是個人覺得相當實用的功能!
不過很可惜,目前僅有 Unreal Engine 專案可以使用,不過官方有說以後會給一般的 C++ 專案使用。如果之後有開放的話,要 debug 應該會更方便。
支援 C++23 多維度 subscript operator
之前在《C++23 把連續資料當成多維陣列存取的容器:mdspan》有介紹過 C++23 的 std::mdspan
了;而當時也有提到,MSVC 當時還不支援同樣是 C++23 的多維度 subscript operator([]),因此要存取時的語法寫起來會比較麻煩。
而這次更新 C++ 編譯器的部分則是終於加入了 [x,y]
這樣的語法,所以如果要使用 std::mdspan
的話,就可以用官方範例的寫法、不需要另外先封包成 std::array
了~
不過,雖然編譯器是有支援,但是 IntelliSense 的部分似乎還是沒有跟上?他還是會顯示「沒有運算子 “[]” 符合這些運算元」,不過基本上不影響、只是比要礙眼就是了。
對 Heresy 來說主要大概就是這樣吧?其他當然還有不少更動,像是現在微軟也允許在不同的 Visual Studio 實例中複製檔案,可以用複製貼上、也可以直接拖曳到另一個 Visual Studio 裡面。
此外,像是 Build Insights 等工具、其實也有做了一些改善,只是 Heresy 幾乎沒在用就是了。
而微軟在 GitHub Copilot 部分也有很多改進、應該也是微軟當下的重點了。只是沒另外付錢的 Heresy 玩不到而已。 XD
不知道以後有沒有可能像 Microsoft 365 一樣開放給訂閱戶一些使用額度?
不過另一方面,這類的 AI 工具目前好像也大多還不支援私有雲、所以以公司的策略可能也不能玩吧…
不過個人不前不太建議更新到這個版本。
主要的問題,是感覺 IntelliSense 在 Heresy 這邊的大型專案好像出問題了?
很多本來沒有顯示問題的地方、現在都顯示成有問題了…雖然基本上不影響建置,但是在程式開發上其實會造成一定程度的困擾,畢竟沒問題的程式都顯示有問題,要修改起來真的很麻煩啊!
再來,以前在編輯 .cpp 檔案的時候,可以透過 Ctrl + F7 進行單一檔案的編譯,但是現在似乎不能用了?現在似乎是需要將焦點停留在「方案總管」的檔案上才能透過快速鍵來建置檔案,這點也算是一個小麻煩。