Visual Studio 2022 正式版於今天發布。新版本帶有 go-live 許可證,可供生產使用。在 Visual Studio 2019 的基礎上,新版集成開發壞境提供了非常多的改進,包括對 64 位、.NET 6 和 C++ 20 的支持,為核心調試器提供更好的性能,並在實時共享會話中支持文本聊天。
發布活動:https://visualstudio.microsoft.com/zh-hans/launch/
下載地址:Download Visual Studio 2022
Visual Studio 2022 的主要功能:
64 位
devenv.exe 現在只有 64 位
Azure Cloud Services
現已支持 Azure Cloud Service (classic) 和 Azure Cloud Service (extended support) 項目
C++
● v143 構建工具現在可以通過 Visual Studio 安裝程序以及獨立的構建工具使用。
● 當在調試器下運行時,新的熱重新加載體驗現在可用於本地C++應用程序。它同時支持MSBuild和CMake項目。更多信息請看”熱重載”部分。
● 你現在可以在WSL2上本地構建和調試,而無需建立SSH連接。跨平台的CMake項目和基於MSBuild的Linux項目都被支持。
● Visual Studio現在支持CMakePresets.json中的buildPresets.target選項。這允許你在你的CMake項目中構建一個目標子集。
● 精簡了 CMake 項目中的項目菜單,並提供了”刪除緩存和重新配置”以及”查看緩存”的選項。
● 更新了 CMake 概述頁面以支持 CMakePresets.json。
● 實施了 /scanDependencies 標誌,用於輸出 CMake 項目的 C++20 模塊依賴關係,如 P1689r3 中所述。這是朝着支持用CMake構建基於模塊的項目邁出的一步,我們正在努力在以後的版本中完成這一支持。
● 現在你可以用LLDB從Visual Studio調試運行在遠程系統上的進程。
● 微軟把隨 Visual Studio 一起發布的 CMake 版本升級到了 3.21 版。有關可用內容的詳細信息,請參見CMake 3.21發布說明。
● 與 Visual Studio 一起提供的 LLVM 工具已經升級到了 LLVM 12。詳情請參見 LLVM 發布說明。
● MSVC 工具集現在默認在調試記錄中使用 SHA-256 源代碼散列。此前,該工具集默認使用MD5進行源代碼散列。
● 使用 C++ 進行遊戲開發的工作負載現在可以安裝最新的虛幻引擎,並支持Visual Studio 2022。
● 在為導入的模塊和頭單元的類型提供導航和語法高亮時,對C++智能感應進行了改進。
● 通過優化緩存頭的使用和符號數據庫的訪問,改進了C++智能感應的性能,提供了改進的加載時間以進入你的代碼。
● 適用於C++的IntelliSense Code Linter現在是默認開啟的,提供即時的as-you-type建議和常見代碼缺陷的修復建議。
● 在開關-fsanitize=fuzzer下支持libfuzzer。更多細節見文檔。
● 我們改進了代碼分析工具中的空指針解除引用檢測。
● 代碼分析現在強制要求必須檢查帶有_Check_return_或_Must_inspect_result_註釋的函數的返回值。
● 在代碼分析中添加了對gsl::not_null的支持。
● 在C++移動開發的工作量中更新到NDK r21 LTS。
● C++ AMP頭文件現在已被廢棄。在C++項目中包含
會產生構建錯誤。要消除這些錯誤,請定義_SILENCE_AMP_DEPRECATION_WARNINGS。請參閱 AMP棄用鏈接以了解更多細節。
調試和診斷
● 附加到進程對話框的改進
● 異常幫助器的改進
● 強制運行點擊
● 內存轉儲的診斷分析
● 微軟發布了一種新的斷點類型,叫做依賴性斷點,它允許你配置一個斷點,使其只在另一個斷點被首先擊中時才被啟用。
● 為Extrenal Sources節點添加了更多的更新,現在你可以在子節點”無源模塊”下看到模塊,並以Solution explorer本身的形式加載符號。
● 破解點溝槽的改進
● 臨時斷點
● 拖放斷點
● 解決方案資源管理器中的外部源節點
● 附加到流程對話框的改進
個性化設計
● 為垂直和水平標籤添加顏色標籤
● 增加了主題包,並與VS Code主題作者合作,推出了自定義主題集合
● 建立了主題轉換器,將VS Code主題轉換到Visual Studio 2022中使用。
● 增加了將Visual Studio主題與Windows主題同步的功能
● 增加了新的文檔管理功能,包括自定義標籤寬度,加粗活動文檔,以及docwell中額外的關閉按鈕。
編輯器
● 增加了子詞導航功能
● 自動保存現在可以作為一個預覽功能使用
● 多鍵複製/粘貼體驗
可擴展性
● 從 Microsoft.VisualStudio.Language.Client 程序集中刪除了API
● VSSDK包含幾個突破性的變化,Visual Studio 2019的擴展在2022年將無法使用。更多信息請參見VSSDK文檔。
● VS SDK參考程序集不再被安裝到VSSDKVisualStudioIntegrationCommonAssemblies文件夾中。如果您的構建依賴於這些程序集,請將您的項目遷移到使用NuGet包來代替。對於離線的情況。
● 保留一個org內的nuget feed,從那裡恢復nuget包。
● 檢查安裝文件。
● 增加了 ILanguageClient 的突破性變化修復
雲服務
● Azurite 將被用於Azure Storage的本地仿真,而不是舊的、不再積極開發的Azure Storage仿真器。
Git工具
● 對任何跨越不同存儲庫的解決方案(即在不同Git存儲庫中託管項目的解決方案)的預覽標誌下的多存儲庫支持
● 在創建git倉庫的過程中,現在完全支持發布到Azure DevOps。
● 狀態欄的增強,包括從空VS查看和打開倉庫的新功能,並顯示未拉動提交的數量
● Git Changes 窗口的溢出菜單現在可用於僅有本地倉庫的額外git操作
● 統一的 Diff 工具欄,包含添加/刪除的行數和可發現的配置選項
● 提交細節的改進,包括一個更靈敏和用戶友好的用戶界面
幫助菜單
● 在17.0版本中,我們重新設計了幫助菜單,包括入門材料和有用的提示/技巧。
● 通過添加諸如訪問開發者社區、發行說明、Visual Studio產品路線圖和我們的社交媒體頁面,提供了與我們開發團隊的更多合作。
熱重載體驗
● 熱重載現在可以通過Visual Studio調試器向.NET開發人員提供,對於許多.NET 6應用程序類型,不需要調試器。
● 在使用Visual Studio調試器時,熱重載現在可供C++開發人員使用。
IntelliCode
● 整行補全可以根據你當前的上下文預測你的下一段C#代碼,並在你的光標右邊以內聯建議的形式呈現。
● 整行補全現在與JetBrains ReSharper的最新版本兼容。請注意,不支持基於ReSharpers自定義補全列表項目選擇的行補全上下文的更新–如果需要,ReSharper用戶可以選擇使用Visual Studio本地IntelliSense來代替,如這裡的文檔所示
JavaScript/TypeScript
● 微軟已經發布了一個新的JavaScript/TypeScript項目類型,它可以用額外的工具構建獨立的JavaScript/TypeScript項目。你將能夠在Visual Studio中使用你電腦上安裝的框架版本創建Angular和React項目。
● JavaScript和TypeScript測試現在可以在Visual Studio Test Explorer中進行。
NPM GUI可用,所以你現在可以像下載Nuget包一樣下載NPM模塊了
.NET 6 SDK
● .NET 6 SDK已包含在Visual Studio 2022中。
.NET生產力
● 引入參數重構可以將一個新的參數從方法實現轉移到其調用者。
● 用於數據流分析的跟蹤值源
● 可以選擇在被重新分配的變量下劃線
● 在生成覆蓋物對話框中增加了搜索選項
● XML
標籤的快速信息現在可以保留空白和CDATA塊
● 查找所有引用窗口現在可以對多目標項目進行分組
● 重構以刪除Visual Basic中重複的類型
● 轉到實現將不再導航到具有抽象聲明的成員,這些成員也被重寫了。
● 從Solution Explorer中同步命名空間以匹配您的文件夾結構
● 從Solution Explorer中配置後台代碼分析
● 對於新的.NET項目,現在默認啟用了Nullable引用類型。
● C# 10.0文件範圍的命名空間重構
● 現在默認情況下,導航到反編譯的源碼是打開的。
● 重構為優先於類型檢查的空值檢查
● 當一個方法明確拋出異常時,XML註釋現在會自動生成一個
標籤 ● 繼承保證金現在是默認啟用的。
編程語言
● C#10
Razor (ASP.NET Core) 編輯器
● 減少了用戶界面的凍結,提高了解決方案啟動時的性能
● 在一些解決方案中,語義着色速度加快,達到2倍。
● 在Razor文件中支持F7(查看代碼)。
● Razor文件中的片段支持,將通過一個標籤完成片段會話,而不是按標籤-標籤。
● 當有嵌套的HTML和Razor組件時,在@code塊中有更好的格式化。
● 在Razor文件中支持熱重新加載
● 性能改進
● 格式化和縮進的改進
● 新的Razor編輯器顏色
● TagHelpers現在是彩色的,支持快速信息分類和完成工具提示
● Razor結構的角括號突出顯示和導航
● 評論現在具有自動完成、智能縮進、自動包含評論的延續和塊狀評論導航功能
遠程測試
● 非常早期的實驗性預覽,能夠在遠程環境中運行測試,如linux容器、WSL和通過SSH連接。
測試工具支持
● 在測試資源管理器中顯示
● 從17.0開始的測試平台的新版本將不能運行通用測試和有序測試。這些特定的功能只作為MSTestv1早期版本的一部分,不包括在MSTestv2中。我們看到這些功能的使用率非常低,而且有序測試現在被認為是與最佳測試實踐相違背的。
● 在17.0中,一些測試經驗將不可用,包括創建新的TestSettings文件和TestSettings編輯器。測試運行將仍然能夠使用TestSettings文件,然而TestSettings被RunSettings所取代,我們鼓勵用戶遷移改善性能和功能。閱讀更多。
● Web負載測試和Coded UI測試支持更新。編碼UI測試和[Web負載測試](基於雲的負載測試服務終結 | Azure DevOps博客(microsoft.com)在2019年正式廢棄。為了盡量減少對用戶的影響,在Visual Studio 2022中對這些功能的支持是最低的。我們強烈建議用戶取消Coded UI Test和Web Load Test。
UWP擴展SDK的工具箱人口
● UWP擴展SDK現在需要明確聲明他們希望出現在工具箱中的類型,在他們的SdkManifest.xml文件中列出它們。舊版本的Visual Studio的行為沒有改變;它們將忽略清單中的控件列表,而是動態地列舉SDK程序集中的控件類型。
受信任的地點
● 改進了"信任設置"功能,現在只要在IDE中打開不受信任的代碼(如文件、項目或文件夾),就會顯示警告。
● 信任檢查現在是在解決方案文件夾級別進行的。
● 用戶創建的項目會自動添加到信任列表中
● 用戶可以跳過對Visual Studio創建的臨時位置的信任檢查
更新、LTSC和部署
● 通過Visual Studio 2022,將有多個同時支持的服務基線在秋季和春季發布。更多細節請參考Visual Studio發布節奏文檔和Visual Studio 2022產品生命周期。
● Visual Studio 2022附帶的新安裝程序現在可以配置Visual Studio產品從哪裡獲得更新。這允許你從不同的LTSC中選擇更新,或者,如果你在一個受管理的企業環境中,你可以配置客戶端從一個布局中獲得其更新。
配置更新源的能力是Visual Studio安裝程序附帶的新功能,因此該行為也適用於Visual Studio的下級版本,如Visual Studio 2019。有關配置更新渠道的其他信息,請參考Update Visual Studio文檔。關於使其適用於網絡布局的其他信息,請參閱《Visual Studio管理員指南》。
● IT管理員現在可以在沒有安裝Visual Studio的情況下報告問題。
用戶界面
● 默認圖標已被更新和刷新。
網絡工具
● 發布摘要頁面現在有啟動/停止遠程調試和分析的操作,在"託管"部分的右上角的"..."菜單下。
● 連接的服務"頁面現在有一個動作來啟動存儲資源管理器
● .NET 6附帶的"ASP.NET Core Empty"模板正在使用新的"最小API"範式,我們已經開始為其添加支持。
● Azurite將被用於Azure Storage的本地仿真,而不是舊的、不再積極開發的Azure Storage仿真器。
● 你可以通過Visual Studio中的"連接服務"體驗,使用微軟身份認證平台為你的ASP.NET Core應用程序添加認證。
.NET框架的WPF XAML設計器
● 當前的WPF XAML Designer for .NET Framework被一個新的WPF XAML Designer for .NET Framework所取代,它基於用於WPF XAML Designer for .NET(.NET Core)的相同架構。
Visual Studio的體驗將看起來是一樣的,但第三方控件供應商需要支持新的可擴展性模型,因為以前基於.design.dll和Microsoft.Windows.Design.Extensibility的模型已經被廢棄。
如果你已經為.NET(.NET Core)創建了一個.designtools.dll擴展,同樣的擴展將適用於新的WPF XAML Designer for .NET Framework。關於如何遷移到新的可擴展性模型的進一步信息,請參考下面的遷移文檔。
XAML熱重載
● XAML Hot Reload的變化--對應用內的工具欄和設置的微小變化
XAML實時預覽
● XAML實時預覽現在可用於WPF、UWP、WinUI和Xamarin.Forms開發人員在Android模擬器或作為UWP桌面應用程序運行他們的應用程序。實時預覽可以捕獲正在運行的應用程序的用戶界面,並將其帶入Visual Studio中的一個停靠窗口。
這使得使用XAML Hot Reload來改變應用程序更容易,同時在Visual Studio內部看到這些變化,而不需要在運行中的應用程序和Visual Studio之間來回切換,同時進行實時XAML代碼修改。
欲了解更多信息,請點擊上面的鏈接。
XAML樣本數據
● 當在WPF應用程序中從工具箱中創建DataGrid、ListBox和ListView控件時,設計時示例數據現在將被默認添加。要禁用這種行為,請取消勾選"在元素創建時自動添加樣本數據",在工具->選項->XAML設計器下。
要了解更多關於樣本數據的信息,請訪問樣本數據文檔。
改進的XAML綁定體驗
● 微軟做了很多改進,使數據綁定變得快速和簡單,比如從屬性檢查器快速訪問數據綁定對話框,能夠從快速操作中設置綁定,能夠在數據綁定對話框中選擇要綁定的屬性。
欲了解更多信息,請點擊上面的鏈接。