盤點Visual Studio 2022 17.4 給C++開發(fā)者帶來的新東西
?我們很高興地宣布,Visual Studio 2022 17.4版本正式可用。這篇文章,我將盤點一下那些對C++開發(fā)者相關的一些新功能。
Arm64
在17.3版本中,Visual Studio已經(jīng)添加了對Arm64的原生支持。在之后的版本中,我們繼續(xù)添加了對更多開發(fā)場景的支持,在最新的17.4版本中,Arm64原生工具鏈可以在生產(chǎn)環(huán)境中使用了。
在工作負載中,”Desktop development with C++”和”Game development with C++”已默認開啟對Arm64的原生開發(fā)支持。
MSVC
在新版本中,我們花了很大一部分精力來改進編譯器的診斷信息輸出。諸如Concepts和Ranges等新的C++功能為更具表現(xiàn)力的代碼和定義更好的 API 提供了機會。但是,為了充分利用它們,需要對工具進行更好的診斷,以便可以查明和解決代碼約束失敗問題。有關所有詳細信息,請參閱 Xiang Fan 的博客文章,但下面是改進的快速示例,顯示了有關重載解析失敗的更完整信息,以及有關給定約束失敗原因的信息:
17.3版本中的錯誤提示
17.4版本中的錯誤提示
作為這項工作的一部分,我們還添加了實驗性支持,用于將編譯器診斷輸出為 SARIF。這可以通過實驗標志 /experimental:log。
除了改進的診斷之外,我們還擴展了編譯器的命名返回值優(yōu)化 (NRVO) 功能。有關詳細信息,請參閱Bran Hagger的博客文章。主要改進是為涉及異常處理或循環(huán)的情況啟用 NRVO。例如,在 17.3 中,返回結果時的結果的復制/移動不會被省略,但現(xiàn)在將被省略。
CMake 和 跨平臺開發(fā)
容器是打包運行應用程序的所有內容的好方法。通過 Dockerfile,可以捕獲所有先決條件,以便在部署和運行容器的任何位置都有一致的運行時環(huán)境。開發(fā)容器擴展了此概念,以捕獲在容器中開發(fā)和構建應用程序所需的一切?,F(xiàn)在可以將開發(fā)容器用于 Visual Studio 中的C++項目。
使用連接管理器連接到遠程系統(tǒng)現(xiàn)在支持 SSH 代理跳轉,它用于通過另一個 SSH 主機訪問 SSH 主機(例如,訪問防火墻后面的主機)。
測試資源管理器用于公開 CTest 測試的內部前綴,使列表更難閱讀和導航。我們對此進行了改進,將它們全部分組到一個標題下。以下是之前和之后:
其他工具
我們對某些工作負載中 Visual Studio 附帶的其他工具也進行了一些更新。
如果你在 Arm64 計算機上使用 Visual Studio,你可以通過 Visual Studio 安裝程序中的 CMake 組件獲得 CMake 和 Ninja 的 Arm64 版本。
我們已將 CMake 版本更新到版本 3.24.1。此版本附帶了許多新功能,包括用于刪除 CMake 緩存的 –fresh CLI 標志、if 表達式中的路徑比較以及 CMakePresets.json 版本 5。我們將在 Visual Studio 2022 的 17.5 版本中添加對 CMakePresets.json 版本 5 的支持,但 17.4 增加了對版本 4 的支持。請參閱 CMake 發(fā)行說明,了解所有新的好東西。
我們還將發(fā)布的 LLVM 版本更新到版本 15.0.1。有關可用內容,請參閱 LLVM 和 Clang 發(fā)行說明。
生產(chǎn)力
使用 “Create Declaration/Definition” 功能時,過去是新代碼會在一個小窗口中打開,讓你“窺視”。這現(xiàn)在是可配置的:可以選擇掃視(默認)、打開文檔或不導航。該設置位于“選項”>“文本編輯器”>“C/C++ > 高級>重構”下。
我們修復了 IntelliSense 和 MSBuild 之間預編譯標頭的一致性差距。過去,當通過 /Yu 使用 PCH 并通過 /FI 強制包含時,IntelliSense 始終會先處理它,然后再通過 /FI 包含任何其他標頭。這與生成行為不匹配,因此通過此更改,/FI 標頭將按指定的順序進行處理。
IDE性能
我們還在繼續(xù)改進 IDE 的性能。在此版本中,我們改進了打開新解決方案時的索引性能。大型項目可以從 17.3 提高 20-35%。
代碼安全
我們使用“關鍵事件”信息豐富了一些代碼分析警告,這些信息描述了分析結果是如何得出的。我們改進并擴展了此功能,將此信息添加到更多分析中,并為你提供在 Visual Studio 中可視化它的新方法。
例如,安裝 SARIF 查看器擴展后,關鍵事件信息現(xiàn)在將用于直接注釋源。
C++標準化
我們將繼續(xù)跟蹤C++標準化的最新發(fā)展。你可以在 吉特哈布 上的 Changelog 中看到最新和即將推出的 STL 功能,但以下是我最感興趣的一些功能:> P0881R7> P1328R1 constexpr type_info::operator==()> P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right> P2441R2 views::join_with> P2302R4 ranges::contains, ranges::contains_subrange
標準化工作也擴展到 IntelliSense,它現(xiàn)在支持 C23 屬性,我們將繼續(xù)改進對 C++20 模塊的支持。
vcpkg
vcpkg 現(xiàn)在已經(jīng) 6 歲了,擁有超過 2000 個開源庫!
我們將繼續(xù)向vcpkg本身和Visual Studio添加新功能,以改善集成。例如,vcpkg 工件是一項功能,允許你描述構建應用程序所需的工具和環(huán)境?,F(xiàn)在,我們添加了對 Visual Studio 對 CMake 項目的 vcpkg 工件的支持,因此,如果你的項目包含 vcpkg 清單,則環(huán)境將在項目打開時自動激活。你可以在 Visual Studio 博客文章中了解有關此內容的詳細信息。
游戲開發(fā)
我們正在努力將虛幻引擎集成到Visual Studio中。從17.4開始,你現(xiàn)在可以直接在IDE中查看哪些虛幻引擎藍圖引用、使用和繼承C++類。要啟用此功能,請確保在VS安裝程序中啟用了“IDE對虛幻引擎的支持”組件,并從虛幻商城下載Visual Studio集成工具。
請留意 17.5 中的更多新功能,請告訴我們你對藍圖集成的看法!
總結
這次的更新,為廣大C++開發(fā)者帶來了很多新的特性,有機會的話,可以嘗嘗鮮。先立一個Flag:明天有空一定嘗嘗鮮。
最后
Microsoft Visual C++團隊的博客是我非常喜歡的博客之一,里面有很多關于Visual C++的知識和最新開發(fā)進展。大浪淘沙,如果你對Visual C++這門古老的技術還是那么感興趣,則可以經(jīng)常去他們那(或者我這)逛逛。本文來自:《What’s New for C++ Developers in Visual Studio 2022 17.4》