2022LogoVisual Studio 2022 17.0 版版本資訊


提示

觀看 Visual Studio 2022 啟動活動的錄製 內容,以瞭解新功能、聆聽秘訣 & ,以及下載免費的數位群集。

開發人員社群 | Visual Studio 2022 藍圖 | 系統需求 | 相容性 | 可散發程式碼 | 發行歷程記錄 | 授權條款 | 部落格 | 最新版Visual Studio Docs 的新功能 |


Visual Studio 2022 17.0 版

支援時間範圍

Visual Studio 2022 17.0 版的企業和專業使用者已 設定為接收 17.0 LTSC 通道上的更新 受到支援,並會在 2023 年 7 月收到安全性弱點的修正。 如需 Visual Studio 支援基準的詳細資訊,請檢閱 Visual Studio 2022 的支援原則

按一下下列其中一個按鈕, 從 17.0 LTSC 通道下載最安全的 Visual Studio 2022 17.0版。 您可以在Visual Studio 訂閱網站上找到額外的 17.0 LTSC 產品。

下載企業按鈕下載專業按鈕

請造訪 Visual Studio 網站,以存取最新版 Visual Studio 2022 產品的連結。 如需安裝和更新 Visual Studio 2022 的指示,請參閱 將 Visual Studio 2022 更新為最新版本Visual Studio 系統管理員指南包含如何在整個組織中部署 Visual Studio 的指引。

只有最新維護版本的 Visual Studio 最新維護版本,才能在目前通道上支援Visual Studio Community版本。 您可以從 visualstudio.microsoft.com/downloads 或 my.visualstudio.com 安裝最新版的 Visual Studio Community

Visual Studio 2022 17.0 版版本

Visual Studio 2022 部落格

Visual Studio 2022 部落格 是 Visual Studio 工程小組的官方產品深入解析來源。 您可以在下列文章中找到 Visual Studio 2022 版本的深入資訊:


17.0.14 Visual Studio 2022 17.0.14 版

發行于 2022 年 9 月 13 日

此版本 17.0.14 中已解決的問題

安全性諮詢

CVE-2022-38013 .NET 拒絕服務弱點在 ASP.NET Core 3.1 和 .NET 6.0 中存在拒絕服務弱點,其中惡意用戶端可能會導致堆疊溢位,當攻擊者傳送在模型系結期間剖析的自訂承載時,可能會導致拒絕服務攻擊。


17.0.13 Visual Studio 2022 17.0.13 版

發行于 2022 年 8 月 9 日

此版本 17.0.13 中已解決的問題

  • 解決 17.1.4 更新後的 Git 錯誤 - Visual Studio 意見反應提供選項,可透過 Visual Studio 將 Git 存放庫標示為安全。
  • 更新 MinGit 至 2.37.1.1 版以解決 CVE - CVE-2022-29187 (mitre.org) ,這會向使用者公開流覽至他們擁有的存放庫,但其他使用者可寫入的弱點,以執行惡意程式碼。
  • 更新 Git for Windows 至 v2.37.1.1 定址 CVE-2022-31012。

資訊安全諮詢注意事項


17.0.12 Visual Studio 2022 17.0.12 版

發行于 2022 年 7 月 12 日

此版本 17.0.12 中已解決的問題

  • 已更新 LibraryManager 以容納 cdnjs API 的變更
  • 修正了開啟檔或輸入時當機時,文字編輯器會是空白的錯誤。

資訊安全諮詢注意事項


17.0.11 Visual Studio 2022 17.0.11 版

發行于 2022 年 6 月 14 日

此版本 17.0.11 中已解決的問題

  • 已將並存 Dev 16.11 C++ 工具組更新為 14.29.30145.00 版。 最新版的 Dev 16.11 C++ 工具組包含重要的 Bug 修正,包括修正所有剩餘的 C++20 瑕疵報告。 如需詳細資訊,請參閱 16.11.14 版本資訊

開發人員社群的問題

資訊安全諮詢注意事項


17.0.10 Visual Studio 2022 17.0.10 版

發行于 2022 年 5 月 10 日

此版本 17.0.10 中已解決的問題

  • 已將 Visual Studio 使用的 Git for Windows 版本和可安裝的選用元件更新為 2.36.0.1
  • 已修正 Git 整合的問題,其中,如果提取/同步處理已發散的分支,則輸出視窗不會顯示如何解決的當地語系化提示。
  • 修正了在 Visual Studio 中開啟 Git 存放庫時,輸出視窗會顯示「發生一或多個錯誤」的問題,而不是失敗發生的原因,以及如何加以解決。
  • 已更新 Daytona 中的 webview2 基準

開發人員社群的問題

資訊安全諮詢注意事項

[CVE-2022-29117 .NET 拒絕服務弱點 .NET 拒絕服務弱點 存在於 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中,其中惡意用戶端可以操作 Cookie 並造成拒絕服務。

CVE-2022-23267 .NET Core 拒絕服務弱點.NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在弱點,其中惡意用戶端可能會透過 HttpClient 過度的記憶體配置造成拒絕服務。

CVE-2022-29145 .NET 拒絕服務弱點.NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在弱點,其中惡意用戶端在剖析 HTML 表單時可能會導致拒絕服務。

CVE-2022-24513權限提高弱點當 Microsoft Visual Studio 更新程式服務不正確地剖析本機設定資料時,可能會有許可權提升弱點。


17.0.9 Visual Studio 2022 17.0.9 版

發行于 2022 年 4 月 19 日

此版本 17.0.9 中已解決的問題

  • 已修正從 17.0.8 回歸vctip.exe
  • 修正了防止使用 Address Sanitizer (ASAN) 載入Windows 11的某些應用程式的錯誤。
  • 已修正另一個 ASAN 問題,其中具有堆積爭用的多執行緒應用程式可能會遇到死結、誤用「通配指標釋放」報告,或在進程結束期間發生死結。
  • 已修正「無法在離線電腦上安裝任何擴充功能 (vsix) 」的問題。

17.0.8 Visual Studio 2022 17.0.8 版

發行于 2022 年 4 月 12 日

此版本 17.0.8 中已解決的問題

開發人員社群的問題

資訊安全諮詢注意事項

CVE-2022-24765權限提高弱點適用于 Windows 的 Git 中可能提高許可權弱點,其中 Git 作業可能會在 Git 目錄的存放庫外執行。 Windows 版 Git 現在已更新為 2.35.2.1 版。

CVE-2022-24767 DLL 攔截弱點在 System 使用者帳戶下執行卸載程式時,Windows 安裝程式的 Git 中存在潛在的 DLL 攔截弱點。 Windows 版 Git 現在已更新為 2.35.2.1 版。

CVE-2022-24513權限提高弱點當 Microsoft Visual Studio 更新程式服務不正確地剖析本機設定資料時,可能會有許可權提升弱點。


17.0.7 Visual Studio 2022 17.0.7 版

發行于 2022 年 3 月 8 日

此版本 17.0.7 中已解決的問題

  • 改善高重新整理速率監視器的效能。
  • 已修正社群 SKU 使用者的 Visual Studio 啟動期間停止回應。

開發人員社群的問題

開發人員社群有17.0 中提供的完整修正清單

資訊安全諮詢注意事項

CVE-2020-8927弱點遠端程式碼執行弱點存在於 .NET 5.0 和 .NET Core 3.1 中,其中緩衝區溢位存在於 1.0.8 之前的 Brotli 程式庫版本中。

CVE-2022-24464弱點剖析特定 HTTP 表單要求類型時,.NET 6.0、.NET 5.0 和 .NET CORE 3.1 中存在拒絕服務弱點。

CVE-2022-24512弱點.NET 6.0、.NET 5.0 和 .NET Core 3.1 中有遠端程式碼執行弱點,其中堆疊緩衝區溢位發生在 .NET Double Parse 常式中。

CVE-2021-3711 OpenSSL 緩衝區溢位弱點OpenSSL 中有潛在的緩衝區溢位弱點,這是由適用于 Windows 的 Git 所取用。 Windows 版 Git 現在已更新為 2.35.1.2 版,可解決此問題。


17.0.6 Visual Studio 2022 17.0.6 版

發行于 2022 年 2 月 8 日

此版本 17.0.6 中已解決的問題

  • 已更新 Visual Studio 安裝程式以正確記錄通道中繼資料。
  • 在安裝或更新Visual Studio 安裝程式中發行的佈告欄。
  • 已將 LTSC 通道 到期日的相關資訊新增至 [ 更新設定 ] 對話方塊。
  • 新增了以程式設計方式變更 更新來源位置 的功能,與實際執行更新無關。 這可讓 IT 系統管理員 以程式設計方式變更更新通道
  • 已更新 GitHub 新增帳戶體驗,以改善其成功率。

資訊安全諮詢注意事項

CVE-2022-21986弱點當 Kestrel 網頁伺服器處理特定 HTTP/2 和 HTTP/3 要求時,.NET 5.0 和 .NET 6.0 中存在拒絕服務弱點


17.0.5 Visual Studio 2022 17.0.5 版

發行于 2022 年 1 月 13 日

此版本 17.0.5 中已解決的問題

  • 解決 VSInstr 在檢測具有變動性中繼資料的二進位檔時,不會結束導致檢測程式碼剖析失敗的偶爾實例。
  • 已修正產生 PDB 和二進位檔時,link.exe偶爾損毀或停止回應的問題。
  • 修正 C++ Concurrency::p arallel_for_each 因整數溢位而損毀呼叫進程的錯誤。
  • 已修正 ATL CString 比較 C++20 和 C++最新語言模式中的 Bug。
  • 修正在使用大量 pogo 探查時,在 arm64 和 arm64ec 上執行 PGIed 二進位檔時當機。
  • 修正了優化非常大型函式可能會產生不正確的程式碼的問題。

17.0.4 Visual Studio 2022 17.0.4 版

發行于 2021 年 12 月 16 日

此版本 17.0.4 中已解決的問題

  • 新增 Xcode 13.2 支援。

17.0.3 Visual Studio 2022 17.0.3 版

發行于 2021 年 12 月 14 日

此版本 17.0.3 中已解決的問題

雙向文字控制字元轉譯

為了防止可能惡意入侵,允許程式碼被錯誤取代,Visual Studio 編輯器將不再允許雙向文字控制字元操作編輯介面上的字元順序。 新的選項會導致這些雙向文字控制字元以預留位置顯示。 雙向文字控制項字元仍會出現在程式碼中,因為此行為只會影響程式碼編輯器中呈現的內容。

VS,以雙向文字控制項字元取代為預留位置

這項功能是在 [工具\選項] 中控制。 在 [文字編輯器\一般] 頁面下,預設會核取 [顯示雙向文字控制項字元] 的選項。 核取時,所有雙向文字控制字元都會轉譯為預留位置。 取消核取選項會還原為先前未轉譯這些字元的行為。

如果 Unicode 字元屬於下列任一範圍,則會將其視為雙向文字控制字元:U+061c、U+200e-U+200f、U+202a-U+202e、U+2066-U+2069。

  • 已修正Web Form設計工具中的當機
  • 修正了 !important 的 CSS 完成會在 HTML 或 Razor 檔案中的錯誤位置插入文字的問題。
  • 已修正 Xamarin.Forms XAML 熱重新載入與共享類似相依性的程式庫衝突的回歸,例如 SignalR。 Xamarin.Forms XAML 熱重新載入現在應該能夠互通,不論應用程式中載入的內容為何。
  • 修正了專案概觀頁面、診斷工具或效能分析工具視窗有時會空白的問題。
  • 修正了 razor 檔案編輯中,游標有時會跳到不同位置中輸入的問題。

開發人員社群的問題

開發人員社群有17.0 中提供的完整修正清單

安全性諮詢通知

CVE-2021-43877 .NET 弱點提高許可權弱點存在於 ANCM 中,當 .NET core、.NET 5 和 .NET 6 應用程式裝載于 IIS 內時,可能會允許提高許可權。

CVE-2021-42574 雙向文字弱點 雙向文字控制字元可用來讓程式碼在編輯器中轉譯,與磁片上所包含的字元不同。


17.0.2 Visual Studio 2022 17.0.2 版

發行于 2021 年 11 月 30 日

此版本 17.0.2 中已解決的問題

  • 修正具有 memmove 類似 memmove 的類似 memmove 作業的無訊息錯誤程式碼gen 與重迭資料
  • 已在 輸出視窗中 新增使用 C++ 模組或標頭單位時出現的傳訊。 這包括使用模組或標頭單位搭配 IntelliSense 的已知問題。
  • 修正 CMake 概觀頁面和 CMakeSettings 編輯器停滯在「正在等候 IntelliSense 完成初始化...」的問題
  • 修正了與資料成員初始化運算式類別階層相關的樣板化解構函式可能太早具現化的問題,可能會導致使用未定義型別或其他錯誤的診斷不正確。
  • 已將 Python 3.9.7 新增至 Python 工作負載。 已移除 Python 3.7.8,因為安全性弱點。
  • 修正了 [尋找下一個 (F3]) 和 [尋找下一個選取的下一個] (Ctrl+F3) 有時會跳到檔案中的第一個出現專案,而不是下一個出現專案的問題。
  • 解決版本控制使用者介面中的日期未遵守客戶的作業系統地區設定的問題。
  • Windows 11 解決客戶將Windows 終端機設定為預設值,且偵錯工具無法停止偵錯主控台應用程式並防止未來啟動的問題。

開發人員社群的問題

開發人員社群有17.0 中提供的完整修正清單


17.0.1 Visual Studio 2022 17.0.1 版

發行于 2021 年 11 月 16 日

此版本 17.0.1 中已解決的問題

  • 已修正使用批次組建時的損毀。
  • 已修正啟動已啟用 XAML 熱重新載入的 Xamarin.Forms 專案時當機。

開發人員社群的問題

開發人員社群有17.0 中提供的完整修正清單

17.0.0 Visual Studio 2022 17.0.0 版

發行于 2021 年 11 月 8 日

此 Visual Studio 2022 17.0.0 版的新功能摘要

64 位

  • devenv.exe現在是僅限 64 位

Azure 雲端服務

  • 新的 Azure 雲端服務 (傳統) 專案不受支援,因為新客戶在 Azure 中已被取代。 建議取代 Azure 雲端服務 (延伸支援) 專案。
  • 您可以開啟現有的 Azure 雲端服務 (傳統) 專案,並受到完全支援。

C++

  • v143 建置工具現在可透過 Visual Studio 安裝程式和 獨立建置工具取得。
  • 在偵錯工具下執行時,原生 C++ 應用程式現在可以使用新的熱重新載入體驗。 它同時支援 MSBuild 和 CMake 專案。 如需詳細資訊,請參閱下面的熱重新載入一節
  • 您現在可以在 WSL2 上原生建置和偵錯,而不需建立 SSH 連線。 支援跨平臺 CMake 專案和 MSBuild 型 Linux 專案。
  • Visual Studio 現在支援 buildPresets.targets CMakePresets.json 中的 選項。 這可讓您在 CMake 專案中建置目標子集。
  • CMake 專案中的 [專案] 功能表已簡化,並公開 [刪除快取和重新設定] 和 [檢視快取] 的選項。
  • CMake 概觀頁面已更新以支援 CMakePresets.json。
  • /scanDependencies 作旗標來輸出 CMake 專案的 C++20 模組相依性,如 P1689r4中所述。 這是使用 CMake 建置模組型專案的一個步驟,我們正努力在稍後版本中完成此支援。
  • 您現在可以使用 LLDB 從 Visual Studio 對遠端系統上執行的進程進行偵錯。
  • 我們已將 Visual Studio 隨附的 CMake 版本升級為 3.21 版。 如需可用專案的詳細資訊,請參閱 CMake 3.21 版本資訊
  • 隨附于 Visual Studio 的 LLVM 工具已升級為 LLVM 12。 如需詳細資訊,請參閱 LLVM 版本資訊
  • MSVC 工具組現在預設為 偵錯記錄中的SHA-256 來源雜湊。 先前,工具組預設會使用 MD5 進行來源雜湊。
  • 使用 C++ 進行的遊戲開發工作負載現在會安裝最新的 Unreal Engine,並支援 Visual Studio 2022。
  • 針對匯入的模組和標頭單位的類型提供導覽和語法醒目提示時,已改善 C++ IntelliSense。
  • 藉由優化快取標頭使用量和符號資料庫存取,改善 C++ IntelliSense 效能,提供改善的載入時間以進入程式碼。
  • 目前預設會開啟適用于 C++ 的 IntelliSense Code Linter,並提供立即的現成類型建議,並修正常見程式碼瑕疵的建議。
  • 在 參數 -fsanitize=fuzzer 下支援 libfuzzer。 如需詳細資訊 ,請參閱檔
  • 我們已改善程式碼分析工具中的 Null 指標取值偵測。
  • 程式碼分析現在會強制傳回已標注 _Check_return__Must_inspect_result_ 必須檢查之函式的值。
  • 已將 的支援新增 gsl::not_null 至程式碼分析。
  • 已更新為 C++ 行動開發工作負載中的 NDK r21 LTS。
  • C++ AMP標頭現在已被取代。 在 C++ 專案中加入 < amp.h > 會產生建置錯誤。 若要讓錯誤無聲,請定義 _SILENCE_AMP_DEPRECATION_WARNINGS 。 如需詳細資訊,請參閱 我們的 AMP 取代連結

偵 & 錯診斷

  • 附加至進程對話方塊改善
  • 例外狀況協助程式改善
  • 強制執行以按一下
  • 記憶體傾印診斷分析
  • 我們已發行稱為「相依中斷點」的新中斷點類型,這可讓您只有在第一次叫用另一個中斷點時,才能夠啟用中斷點。
  • 我們已將更多更新新增至 Extight Sources 節點 ,您現在可以在子節點 [沒有來源的模組] 底下看到模組,並載入符號表單方案總管本身。
  • 中斷點通路改善
  • 暫時中斷點
  • 拖放中斷點
  • 方案總管中的外部來源節點
  • 附加至進程對話方塊改善

個人化

  • 已新增垂直和水準索引標籤的色彩索引標籤
  • 已新增主題套件並搭配 VS Code 主題作者使用,以啟動 自訂主題的集合
  • 建置 的主題轉換器 ,可轉換 VS Code 主題以在 Visual Studio 2022 中運作
  • 已新增將 Visual Studio 主題與 Windows 主題同步處理的功能
  • 新增了新的檔管理功能,包括自訂索引標籤寬度、粗體使用中檔,以及 docwell 中的其他關閉按鈕。

編輯器

  • 已新增子字詞導覽
  • 自動儲存現在可作為預覽功能
  • 多重插入號複製/貼上體驗

擴充性

  • 已從 Microsoft.VisualStudio.Language.Client 元件中移除 API
  • VS SDK 包含數項重大變更,Visual Studio 2019 擴充功能無法在 2022 年運作。 如需詳細資訊,請參閱 VSSDK 檔
  • VS SDK 參考元件不再安裝至 VSSDK\VisualStudioIntegration\Common\Assemblies 資料夾。 如果您的組建依賴這些元件,請移轉您的專案以改用 NuGet 套件。 針對離線案例:
    1. 保留要從中還原 nuget 套件的組織內 Nuget 摘要。
    2. 簽入二進位檔。
  • 已新增 ILanguageClient 重大變更修正

雲端服務

  • Azurite 將用於 Azure 儲存體的本機模擬,而不是舊版且不再主動開發的 Azure 儲存體模擬器。

Git 工具

說明功能表

  • 在 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專案。
  • Visual Studio 測試總管現已提供 JavaScript 和 TypeScript 測試
  • NPM GUI 可用,因此您現在可以以下載 Nuget 套件的方式下載 NPM 模組

.NET 6 SDK

  • .NET 6 SDK 包含在 Visual Studio 2022 中

.NET 生產力

  • 引進參數重構可以將新的參數從方法實作移至其呼叫端。
  • 追蹤資料流程分析的值來源
  • 重新指派之變數底線的選項
  • 在 [產生覆寫] 對話方塊中新增搜尋選項
  • XML < 程式碼 > 標記的快速資訊現在會保留空白字元和 CDATA 區塊
  • [尋找所有參考] 視窗現在會將多目標專案分組
  • 重構以移除 Visual Basic 中的重複類型
  • 移至 [實作] 不會再流覽至同時覆寫抽象宣告的成員。
  • 同步命名空間,以符合方案總管的資料夾結構
  • 從 方案總管 設定背景程式碼分析
  • 新的 .NET 專案預設會啟用可為 Null 的參考型別
  • C# 10.0 檔案範圍命名空間重構
  • 流覽至已反編譯的來源現在預設為開啟
  • 重構以偏好 Null 檢查而非類型檢查
  • 當方法明確擲回例外狀況時,XML 批註現在會自動產生 <exception> 標記
  • 繼承邊界現在預設為啟用

程式語言

  • C#10

Razor (ASP.NET Core) 編輯器

  • 降低 UI 凍結並改善解決方案啟動時的效能
  • 某些解決方案中最多 2 倍的語意著色速度
  • F7 (檢視 Razor 檔案中的程式碼) 支援
  • razor 檔案中的程式碼片段支援,這會使用單一索引標籤完成程式碼片段會話,而不是按 Tab-tab
  • 當有巢狀 HTML 和 Razor 元件時,區塊中的 @code 格式更佳
  • Razor 檔案中的熱重新載入支援
  • 效能改善
  • 格式化和縮排增強功能
  • 新的 Razor 編輯器色彩
  • TagHelper 現在已著色,並具有快速資訊分類支援和完成工具提示
  • Razor 建構的角度大括弧醒目提示和流覽
  • 批註現在具有自動完成、智慧縮排、自動包含批註接續,以及封鎖批註流覽

遠端測試

  • 在 Linux 容器、WSL 和透過 SSH 連線等遠端環境上執行測試的非常早期實驗預覽。

測試控管支援

  • 在測試總管中顯示
  • 從 17.0 開始的新版本測試平臺將無法執行泛型測試和已排序的測試。 這些特定功能只會隨附于舊版 MSTestv1 中,且不包含在 MSTestv2 中。 我們看到這些功能的使用量非常低,且已排序的測試現在被視為與最佳測試做法相反。
  • 17.0 中將無法使用某些測試體驗,包括建立新的 TestSettings 檔案和 TestSettings 編輯器。 測試回合仍然可以使用 TestSettings 檔案,不過 TestSettings 已取代為 RunSettings,我們鼓勵使用者移轉改善的效能和功能。 閱讀其他資訊
  • Web 負載測試和自動程式化 UI 測試支援更新。 自動程式化 UI 測試和 [Web 負載測試] (雲端式負載測試服務生命週期結束|Azure DevOps 部落格 (microsoft.com) 已在 2019 年正式淘汰。 若要將對使用者的影響降到最低,Visual Studio 2022 中支援這些功能的最低支援。 我們強烈建議使用者移出自動程式化 UI 測試和 Web 負載測試。

UWP 擴充功能 SDK 的工具箱母體擴展

  • 現在需要 UWP 擴充功能 SDK,才能明確地宣告想要出現在 [工具箱] 中的類型,方法是將它們列在 SdkManifest.xml檔案中。 舊版 Visual Studio 的行為保持不變;它們會忽略資訊清單中的控制項清單,並改為動態列舉 SDK 元件中的控制項類型。

信任的位置

  • 我們已重新設定「信任設定」功能,現在每當未受信任的程式碼 (例如檔案、專案或資料夾) 即將在 IDE 內開啟時,就會顯示警告。
  • 信任檢查現在已在解決方案資料夾層級完成
  • 使用者建立的專案會自動新增至信任的清單
  • 使用者可以略過 Visual Studio 所建立之暫存位置的信任檢查

更新、LTSC 的 和部署

  • 使用 Visual Studio 2022 時,將會有多個同時支援的維護基準,這些基準將在秋季和彈簧中發行。 如需詳細資訊,請參閱 Visual Studio 發行 Rhythm 檔和Visual Studio 2022 產品生命週期
  • Visual Studio 2022 隨附的新安裝程式現在能夠設定 Visual Studio 產品應該從何處取得其更新。 這可讓您從不同的 LTSC 中選擇更新,或者,如果您是在受控企業環境中,您可以設定用戶端從版面配置取得其更新。 設定更新來源的能力是Visual Studio 安裝程式隨附的新功能,因此行為也適用于舊版 Visual Studio,例如 Visual Studio 2019。 如需設定更新通道的其他資訊,請參閱 更新 Visual Studio 檔。 如需讓網路設定運作的其他資訊,請參閱 Visual Studio 系統管理員指南
  • IT 系統管理員現在可以在 未安裝 Visual Studio 的情況下回報問題。

使用者介面

  • 預設圖示已更新並重新整理。

Web 工具

  • [發佈摘要] 頁面現在有動作,可在 '...' 底下啟動/停止遠端偵錯和分析[主控] 區段右上角的功能表
  • [已連線的服務] 頁面現在有動作可啟動儲存體總管
  • .NET 6 隨附的「ASP.NET Core空白」範本是使用我們開始新增支援的新「最小 API」範例
  • Azurite 將用於 Azure 儲存體的本機模擬,而不是舊版且不再主動開發的 Azure 儲存體模擬器。
  • 您可以透過 Visual Studio 中的已聯機服務體驗,使用Microsoft 身分識別平臺將驗證新增至 ASP.NET Core應用程式。

適用于 .NET Framework 的 WPF XAML 設計工具

  • 目前適用于 .NET Framework 的 WPF XAML 設計工具會以適用于 .NET Framework 的新 WPF XAML 設計工具取代,根據適用于 .NET 的 WPF XAML 設計工具所使用的相同架構 (.NET Core) 。 Visual Studio 體驗看起來會相同,但協力廠商控制項廠商必須支援新的擴充性模型,因為先前的模型是以 .design.dllMicrosoft.Windows.Design.Extensibility 為基礎而已被取代。 如果您已為 .NET (.NET Core) 建立 .designtools.dll 擴充功能,則相同的延伸模組適用于新的 WPF XAML Designer for .NET Framework。 如需如何移轉至新擴充性模型的進一步資訊,請參閱下面的 移轉檔

XAML 熱重載

  • XAML 熱重新載入變更 - 應用程式內工具列和設定的次要變更

XAML Live Preview

  • XAML Live Preview 現在可供 WPF、UWP、WinUI 和 Xamarin.Forms 開發人員在 Android 模擬器或 UWP 傳統型應用程式中執行其應用程式。 Live Preview 會擷取執行中的應用程式使用者介面,並將它帶入 Visual Studio 內的停駐視窗。 這可讓您更輕鬆地使用 XAML 熱重新載入變更應用程式,同時在 Visual Studio 本身內看到這些變更,而不需要在執行中的應用程式和 Visual Studio 之間來回定位,同時進行即時 XAML 程式碼變更。

如需詳細資訊,請按一下上述連結。

XAML 範例資料

  • 在 WPF 應用程式中的工具箱中建立 DataGrid、ListBox 和 ListView 控制項時,現在預設會新增Design-Time範例資料。 若要停用此行為,請在 [工具 - 選項 - >> XAML 設計工具] 底下取消核取 [自動在專案建立時新增範例資料]。
  • 若要深入瞭解範例資料,請流覽 範例資料檔案

改善的 XAML 系結體驗

  • 我們已進行許多改善,讓資料系結變得快速且簡單,例如從屬性偵測器快速存取 [資料系結] 對話方塊、能夠從 [快速動作] 設定系結、選擇屬性以系結至 [資料系結] 對話方塊內的能力。

如需詳細資訊,請按一下上述連結。

已知問題

使用 .NET 的行動裝置程式開發

Python 工具

C++ IntelliSense

此 Visual Studio 2022 17.0.0 版的新功能詳細資料

偵 & 錯診斷

  • 附加至進程對話方塊改善
  • 透過視窗底部的切換來檢視新的父/子進程清單檢視
    • 應該保存檢視的選取範圍。
    • 鍵盤中的左鍵壓縮會巡覽至父/子檢視中的父進程。
    • 所有資料行都應該可以排序,就像原始檢視一樣。
  • 這兩個檢視中都提供 [新增命令列] 資料行。
  • 應用程式集區名稱會顯示在 w3wp 進程的 「標題資料行」中

![附加至進程] (media/17.0/17.0_P2_attach_to _process_3.png)

  • 已在 catch 區塊中新增例外狀況協助程式。 當 Managed 步驟造成擲回例外狀況時,這會以相關的例外狀況資訊顯示例外狀況協助程式,而步驟會在 catch 區塊中完成。
  • 新的 [繼續] 按鈕:顯示 「攔截」例外狀況的例外狀況協助程式。

例外狀況處理常式更新

  • 我們新增了 [強制執行] 選項,按一下以執行偵錯工具,直到到達選取的資料指標位置,同時忽略兩者之間的所有中斷點為止。
  • 您可以從所需的程式程式碼上按一下滑鼠右鍵功能表的 [強制執行至按一下] 來執行此動作。

強制執行至資料指標

  • 當應用程式處於偵錯模式時,您也可以按一下滑鼠停留在 SHIFT 鍵時,出現在程式程式碼旁的綠色圖像來執行「強制執行按一下」。

強制執行至資料指標字元

  • 記憶體傾印診斷分析
    • 我們已改善分析器引擎,以在 ASP.NET Core記憶體傾印中尋找更多同步處理問題。
    • 藉由依 CPU 時間檢閱前 5 個執行緒,找出程式碼哪些部分耗用最多 CPU 資源。
    • 檢閱整個 Managed 堆積,以取得層代 0、1、2 和大型物件堆積中的記憶體壓力徵兆。
    • 如果您有損毀傾印,您可以隨意找出造成應用程式損毀的第二個機率例外狀況和執行緒。
    • 難以形成診斷假設? 當損毀或停止回應的確切原因不明時,您可以使用例外狀況分析器快速尋找並檢閱堆積上的所有例外狀況。
    • 在這些時候,當記憶體分析很重要時,我們已改善 Finalizer 佇列分析器的啟發學習法。 我們現在著重于您的程式碼,並排除 .NET Framework 所管理的物件。

相依中斷點

這是新的中斷點,讓使用者只有在第一次叫用另一個中斷點時,才能設定要啟用的中斷點。 偵錯時,只有在達到必要條件中斷點時,Visual Studio 偵錯工具才會暫停相依中斷點上的應用程式。 您可以從 [設定] 視窗啟用 [僅啟用時啟用] 核取方塊,並從您想要設定相依中斷點的下拉式清單中選取必要中斷點,將任何中斷點轉換成相依中斷點。

相依中斷點

中斷點通路改善

我們新增了新的中斷點圖像,以指出使用者可以設定中斷點的位置。

中斷點字元

以滑鼠右鍵按一下該中斷點圖像會提供具有選項的新操作功能表;可讓您快速建立進階中斷點, (條件式中斷點、追蹤點和暫時中斷點) 較少的點選。

中斷點操作功能表

暫時中斷點

這是新的中斷點,可讓使用者只中斷程式碼一次。 偵錯時,Visual Studio 偵錯工具只會在此中斷點暫停應用程式執行時間一次,並在叫用它之後立即移除它。 您可以從設定視窗啟用 [移除中斷點一次]核取方塊,將任何中斷點轉換成暫時中斷點。 或者,您可以使用中斷點通路中的新滑鼠右鍵操作功能表來設定此中斷點。

暫時中斷點

拖放中斷點

我們已新增中斷點的拖放手勢。 您現在可以保存中斷點,並在所需的程式程式碼上釋放,將中斷點從某個位置移至另一個位置。 只要動作/條件變數位於內容中,它就適用于我們的進階中斷點。

拖放中斷點

方案總管中的外部來源節點

我們已在 [方案總管] 中新增新的 [外部來源] 節點。 這目前只會在偵錯時出現,而且會顯示包含來源伺服器或Source Link資訊之符號的 Managed 模組來源。 偵錯時,任何載入的 Managed 符號檔 (.pdb) ,其來源伺服器資訊會出現在此節點底下。 您可以流覽任何其他方案總管資料夾之類的檔案,或按兩下專案,從來源伺服器下載檔案,然後在 VS 編輯器中開啟它。 方案總管中的外部來源節點

附加至處理對話方塊改善

我們已在 [附加至進程] 對話方塊中新增新的 [自動重新整理] 核取方塊,當檢查自動重新整理進程清單時,會使用可用的進程。 從 [附加至進程] 對話方塊新增 [從桌面選取任何視窗] 選項,讓使用者從桌面挑選任何執行中的視窗,並附加至其相關聯的進程以進行偵錯。

附加至處理對話方塊改善

記憶體傾印診斷分析

當發生 Stack Overflow 例外狀況時,尋找根呼叫框架可能很困難且耗時。 我們最新的分析器會提供方便的呼叫堆疊檢視,並移除重新初始化和雜訊畫面,以加快問題分析的速度。

個人化

將 VS Code 主題轉換為 Visual Studio 主題

我們已建立主題轉換器工具,可將 VS Code 主題轉換成在 Visual Studio 中運作。 請在這裡試試看。

新增 Visual Studio 主題套件

預設 VS Code 主題現在可做為 Visual Studio 主題套件使用。 請在這裡查看主題套件。

將主題同步處理至 Windows OS

我們新增了將 Visual Studio 主題同步處理至 Windows 主題的功能,讓主題可以根據可用的環境光線量進行調整。 若要啟用此功能,請流覽至 [工具 > 主題 > 使用系統設定]。

色彩索引標籤

若要啟用色彩索引標籤,請流覽至 [工具 > 選項 >& ] 索引標籤視窗,然後啟用 [色彩化索引標籤]。

色彩索引標籤

編輯 器

子字詞導覽

Ctrl+Alt+向左鍵Ctrl+Alt+向右鍵 現在會依子字詞流覽。 例如,字串 「HelloWorld」 會將 「Hello」 和 「World」 識別為子字詞。 在[工具 > 選項 > 文字編輯器 > ]中啟用子字詞導覽會導致文字相關命令 (例如 TransposeWord) 與子字詞互動。

自動儲存

[工具 > 選項 > 環境 > 預覽功能] 下,現在可以使用自動儲存。 如果啟用,當 Visual Studio 應用程式失去焦點 (例如另一個視窗取得焦點) 時,所有已變更的檔都會盡可能儲存到磁片。 如果無法儲存任何檔案,則在使用者明確儲存檔案之前,它會保持變更狀態,直到使用者使用 [另存新檔] 或 [另存新檔] 明確地儲存它 (為止...命令) 。

多重插入號複製\貼上體驗

我們已改善多重插入號複製和貼上體驗。 先前,將多行貼到多個插入號會導致每個插入號複製整個剪貼簿。 現在,將多行貼到相同數目的插入號會將每一行插入個別插入號。 若要使用多插入號,請按 Alt+Shift+滑鼠鍵Alt+Shift+。 並使用 Ctrl+Shift+箭頭 鍵展開選取專案。 接下來,按 Ctrl+C 以複製多個選取專案中的文字。 使用 Alt+Shift+滑鼠按一下 ,針對您想要貼到所需位置的每一行建立多個插入號。 最後,按 Ctrl+V 將每一行貼到自己的插入號。

多插入號複製並貼上

此外,您可以使用 Alt+Shift+向上鍵或向下鍵Alt+Shift+滑鼠拖曳 來選取多個插入號。 先前,這些手勢已建立方塊選取專案。 現在,方塊選取專案會轉換成多個插入號。 這個方法比必須按一下精確位置以插入個別插入號更輕鬆且更快。 如果您想要在展開多重插入號選取時繼續使用方塊選取專案與 Alt+Shift+方向鍵Alt+Shift+滑鼠拖曳 ,請移至 [ 工具 > 選項 > 文字編輯器 > 進階 ],然後選取 [ 使用方塊選取專案]。

多插入號方塊選取選項

擴展

當語言用戶端無法初始化時,Microsoft.VisualStudio.LanguageServer.Client 引進了自訂通知的新方式。

工作狀態中心現在會追蹤初始化工作 (TSC) 。 如果初始化工作失敗,使用者可能會前往 TSC 取得發生錯誤的詳細資訊。 語言用戶端現在能夠自訂向使用者顯示的訊息,提供失敗所代表內容的資訊,以及修正此問題的可能動作。 為了這樣做,我們會在 ILanguageClient 介面中引進一組新的 API。 這些新的 API 會在 ILanguageClient 介面中造成重大變更,因此語言延伸模組必須參考新的套件,才能在 Visual Studio 2022 中運作。

以下是新的 API:

  1. ShowNotificationOnInitializeFailed 屬性 - 布林值屬性,決定語言伺服器是否要顯示泡泡,通知使用者失敗,如下所示:

工作狀態中心中的 ShowNotificationOnInitializeFailed

建議只有在失敗大幅影響他們目前正在處理之專案的使用者體驗時,才將此屬性設定為 true。

  1. OnServerInitializedFailedAsync 方法 - 當語言用戶端初始化失敗時,將會叫用這個方法。 我們將提供 LanguageClientInitializationInfoBase 物件,其中包含失敗發生方式的相關資訊,讓語言用戶端可以自行通知使用者失敗,或提供具有失敗內容的自訂訊息。 如果提供訊息,則會顯示在 Visual Studio 的 [輸出] 視窗中。

輸出視窗中的語言用戶端初始化錯誤

JavaScript/TypeScript

現在支援新的 JavaScript/TypeScript 專案類型,可讓您在 Visual Studio 中建立獨立Angular、React和 Vue 專案。 專案將會使用您在本機電腦上安裝的架構 cli 工具來建立。 這也表示範本版本是以您在本機電腦上擁有的 cli 版本為基礎。

在這些新專案中,您將能夠執行單元測試,並將其與 ASP.NET Core API 專案整合。 您可以在這裡找到檔

  • 我們已發行新的 JavaScript/TypeScript 專案類型,此類型會建置具有其他工具的獨立 JavaScript/TypeScript 專案。 在這裡深入瞭解
  • NPM GUI 可用,因此您現在可以以在新的 JavaScript/TypeScript 專案中下載 Nuget 套件的方式下載 NPM 模組

NPMGUI NPM GUI2

適用于 .NET & 的熱重新載入體驗C++ 開發人員

我們今年稍早宣佈 .NET 熱重新載入,這是一個將熱重新載入專案帶入盡可能多的 .NET 開發人員。 我們開始使用 Visual Studio 2019 中提供的第一個預覽旅程,並承諾在 Visual Studio 2022 中提供完整體驗的更多內容。 今天,我們很高興分享我們在 Visual Studio 2022 GA 版本中已完成的詳細資料。

對於任何不熟悉熱重新載入的人,以下是快速簡介。 Visual Studio 中的熱重新載入體驗適用于受控 .NET 和原生 C++ 應用程式。 無論您正在處理的應用程式類型為何,我們的目標是熱重新載入盡可能在編輯之間儲存許多應用程式重新開機,藉由減少等待應用程式重建、重新開機、重新巡覽至應用程式本身的先前位置等,讓您更有生產力。

我們可以讓您編輯應用程式程式碼檔案,並立即將這些程式碼變更套用至執行中的應用程式,也稱為「熱重新載入」。 套用這些變更之後,只要在應用程式本身 (或透過某種計時器來重新執行程式碼,即可) 並立即查看變更,不需要透過中斷點暫停應用程式!

如果您想要查看這項功能的一些即時示範,您可以查看下列其中一個影片:

在 Visual Studio 中熱重新載入使用者體驗

Visual Studio 2022 中 .NET 和 C++ 開發人員的熱重新載入體驗也進行了重大改善。 工具列現在具有 「熱重新載入」按鈕的目標實作,並具有改良的外觀和更多功能。

您會注意到的第一件事是具有新圖示的新下拉式按鈕。 此命令會從「套用程式碼變更」重新命名, (從早期預覽) 重新命名為 「熱重新載入」。

Visual Studio 2022 中的 熱重新載入使用者體驗

展開按鈕會顯示快速存取功能,例如重新開機執行中的應用程式 () 、加入宣告切換來儲存時熱重新載入,以及快速存取新的設定面板。

以下是每個新功能的詳細資料:

  • 輕鬆重新開機應用程式: 不論您是否使用偵錯工具啟動應用程式,或啟動應用程式而不需偵錯工具 (NEW for .NET 6 應用程式!) ,您現在都可以透過重建來套用不簡單的編輯,即可輕鬆地重新開機執行中的應用程式。
  • 熱重新載入 [儲存]:在舊版預覽版本中,您只能套用熱重新載入儲存 ASP.NET 專案中的變更,您必須明確按一下 [熱重新載入] 按鈕。 在最終版本中,現在可以使用任何專案類型的儲存金鑰來熱重新載入。 此選項是加入宣告,但啟用後,除非關閉此選項,否則它會套用至所有未來的 Visual Studio 會話。
  • 輕鬆設定存取:我們已新增熱重新載入選項面板,讓您在啟用/停用熱重新載入時有更多控制權。 您可以在 Visual Studio 的 [選項 > .NET/ C++ 熱重新載入] 或按一下 [設定] 來透過 [熱重新載入] 按鈕下拉式功能表來連線到這些設定。

我們也新增了改良的無命令編輯對話方塊,可在不使用偵錯工具的情況下執行 .NET 應用程式時使用。

Visual Studio 2022 中熱重新載入的新 Rude 編輯對話方塊

這個新的對話方塊有多個改善,例如:

  • Visual Studio 會話寬加入宣告選項,以在每次熱重新載入不如編輯時重建和套用變更。 檢查之後,這會套用至所有未來的不完全編輯,直到 Visual Studio 重新開機為止
  • 重建並套用程式碼變更命令,可使用單鍵完成,而不是多個手動步驟
  • 輕鬆存取設定

如果不想像先前一樣採取任何自動化動作,對話方塊也可讓您繼續編輯。

有一個已知的限制,當使用偵錯工具時,GA 版本中將無法使用這個新的對話方塊,但在未來的更新中將會完成此案例中可供使用的工作。

支援 C++ 應用程式

使用 Visual Studio 2022 並使用偵錯工具啟動您的應用程式時,現在可以使用 [熱重新載入] 按鈕,在偵錯工具下執行時熱重新載入原生 C++ 應用程式 () 。 熱重新載入也支援使用 CMake 和 OpenFolder 專案建置的應用程式。

此體驗由原生編輯和繼續提供支援,如需支援的編輯,請參閱我們的

支援的 .NET 應用程式架構案例 &

由於我們在 2021 年 5 月宣佈熱重新載入,.NET 開發人員的常見問題是「熱重新載入使用我的 .NET 應用程式架構/版本組合嗎?」。 我們已在大部分情況下進行重大進展,讓答案成為 YES,以下是重點。

  • 使用 Visual Studio 2022 並使用偵錯工具啟動您的應用程式時,基本熱重新載入體驗適用于大部分類型的 .NET 應用程式和架構版本,包括適用于 C# 和 VB.NET) 的 .NET Framework、.NET Core 和 .NET 5+ (。 支援的應用程式類型包括 Web (程式碼後置變更) 、桌面、行動裝置、雲端和其他專案類型。 此處的金鑰規則是如果您使用偵錯工具,假設有熱重新載入可供您使用,並試試看!
  • 使用 Visual Studio 2022 但未使用偵錯工具時, (例如使用 CTRL-F5 來啟動應用程式) 熱重新載入現在仍可使用,即使以大部分類型 .NET 6 應用程式為目標,也不會有偵錯工具。 這表示不是以 .NET 6 (.NET 5 或更新版本為目標的應用程式,) 不支援「無偵錯工具」案例,而且必須使用偵錯工具來取得熱重新載入支援。
  • 搭配 .NET 6 應用程式使用 Visual Studio 2022 時,支援大部分的案例類型。 這不限於上述新的「無偵錯工具」功能。 它也包含其他新功能,例如支援熱重載 Blazor 專案,以及在任何 ASP.NET Core應用程式和 CSS 熱重新載入中編輯 Razor 檔案。 同時使用以 .NET 6 為目標的 Visual Studio 2022 和應用程式,將最終為您提供最強大的熱重新載入體驗,我們希望您能試試看。

以下我們將展開上述摘要,並深入探討更多詳細資料。

使用偵錯工具時,Visual Studio 2022 搭配 .NET 應用程式

使用 Visual Studio 2022 並使用偵錯工具啟動應用程式時,熱重新載入適用于大部分的應用程式架構,包括主控台、Windows Forms (WinForms) 、WPF、UWP、WinUI 3* 和大部分類型的 ASP.NET Web 專案, (程式碼後置編輯) 包括 ASP.NET MVC、Web API,甚至是舊版Web Form專案。 此清單也是範例。 真正的答案是您擁有 .NET 且正在使用 Visual Studio 受控偵錯工具的任何位置,您應該取得基本熱重新載入支援。

這表示即使是Azure Functions之類的專案,在此案例中也會很適合。 我們鼓勵您嘗試您的組合,並在發現任何問題時讓我們知道。

*根據預設,WinUI 3 會使用不支援熱重新載入的混合模式偵錯。 您可以在專案設定中修改此功能,方法是啟用 Managed 偵錯工具,讓熱重新載入正常運作。

搭配 .NET 應用程式使用 Visual Studio 2022 時,但未使用偵錯工具

熱重新載入現在可在以大部分 .NET 6 應用程式類型為目標時使用,包括主控台、WPF、Windows Forms (WinForms) 、ASP.NET Core MVC、Web API 和 Blazor 等專案類型。 我們知道有些開發人員有良好的理由或喜好設定,不需要偵錯工具啟動其應用程式,我們希望這項額外功能對啟動時間沒有影響。

這項功能專屬於 .NET 6+ ,且這些應用程式不是以 .NET 6 為目標 (.NET 5 或更新版本,) 不支援「無偵錯工具」案例,而且必須使用偵錯工具來存取熱重新載入功能。

也請注意,我們第一個版本中的「無偵錯工具」案例不支援所有專案類型。 具體而言:

  • 在沒有偵錯工具的情況下,不支援熱重新載入 UWP 應用程式,這是設計方式,而且目前沒有改善此計畫。
  • 以 iOS & Android 為目標的 Xamarin.Forms 應用程式不支援 .NET 熱重新載入 (,不論您是否使用或不使用偵錯工具啟動應用程式) ,但會繼續支援 XAML 熱重新載入
  • 未來 .NET MAUI 應用程式不支援任何偵錯工具案例,但會透過偵錯工具支援 .NET 熱重新載入

搭配 .NET 6 應用程式使用 Visual Studio 2022 時,支援大部分的案例類型

能夠同時使用 Visual Studio 2022 和處理以 .NET 6 為目標之應用程式的開發人員,將會獲得最完美且具備熱重新載入體驗的優點。

支援的重點:

  • Blazor 應用程式 (Server 和 WebAssembly*)
  • Blazor 和一般 ASP.NET Core網站的 Razor 檔案編輯
  • CSS 熱重新載入
  • 在沒有偵錯工具的情況下執行應用程式時,能夠取得熱重新載入支援 (,如上所述)

以 .NET 6 為目標的開發人員未來 Visual Studio 2022 更新和 .NET 功能範圍和主要版本將繼續獲得更多改善。 我們剛開始使用!

*在 Visual Studio 2022 GA 版本中 熱重新載入,尚未啟用 Blazor WebAssembly 支援 Blazor WebAssembly。 您仍然可以取得熱重新載入如果您透過 Visual Studio 啟動應用程式,而不需偵錯工具,而且我們正努力在未來的 Visual Studio 更新中解決此問題。

支援的 ASP.NET Core案例

許多 ASP.NET 案例現在廣泛支援基本熱重新載入體驗。 最廣泛的可用功能是變更大部分 Web 應用程式類型之程式碼後置和其他 .NET 類別檔案的能力。 此功能可在使用 Visual Studio 偵錯工具時運作,而且目前位於先前可用的 [編輯後繼續] 位置。

對於以 .NET 6 為目標的 ASP.NET Core開發人員,有其他功能不適用於較低版本的 .NET,這包括改善,例如:

  • CSHTML: 編輯 Razor CSHTML 檔案現在支援許多類型的編輯。
  • 瀏覽器重新整理: 編輯 razor 檔案現在會在偵錯時自動重新整理網頁瀏覽器中的變更。 這先前只有在不使用偵錯工具的情況下啟動應用程式時才可使用。
  • CSS 熱重新載入:現在可以在應用程式執行時變更 CSS 檔案,並在您輸入時立即將變更套用至執行中的應用程式。
  • 無偵錯工具:現在,當您使用 Visual Studio 啟動 Web 應用程式時,您將會取得熱重新載入支援,而不需要偵錯工具 (CTRL-F5) 。

注意:使用 Blazor Wasm 應用程式並使用 Visual Studio 2022 (17.0) 時,熱重新載入 razor 頁面只能在啟動沒有偵錯工具的應用程式時運作。 我們將在未來的更新中新增偵錯工具支援。

支援的 .NET 編輯

.NET 熱重新載入體驗是由 [編輯後繼續] 機制所提供,我們已改善以支援其他類型的編輯,超過先前版本中原本可能的內容。 改善項目包括:

  • 新增、更新或刪除自訂屬性
  • 新增或更新記錄結構
  • 新增或更新#line指示詞
  • 編輯 Switch 運算式
  • 使用 #line 指示詞編輯檔案,包括指示詞本身的變更
  • 編輯最上層語句
  • 編輯使用任何新的 C# 10 功能的程式碼,例如全域 using 指示詞、檔案範圍命名空間、改善的 Lambda 和無參數結構建構函式
  • 重新命名 Lambda 參數
  • 重新命名現有方法的參數

上述改進功能適用于熱重新載入和 [編輯與繼續] 體驗。

其他更新

  • 熱重新載入和編輯和繼續多個進程:現在可以在附加至多個進程時可靠地使用熱重新載入和編輯和繼續體驗。 先前尚未完全支援這項功能,而且一律無法正常運作,現在已修正此功能。
  • 已更新錯誤/警告訊息:我們已更新許多錯誤/警告訊息,以在訊息同時套用至 EnC 和熱重新載入時更清楚。 我們這麼做的方式是讓訊息更一般,以便在熱重新載入作業期間不會使用編輯和繼續術語
  • .NET 應用程式的更快速單元測試:熱重新載入技術現在可作為實驗性功能,以在以 .NET 6 為目標時加速單元測試。 如需詳細資訊,請參閱這些版本資訊的測試一節

不支援的 .NET 案例

即使在最終版本中,您仍應該注意一些不支援的案例:

  • Xamarin.Forms 應用程式在 iOS 和 Android 案例中不支援 .NET 熱重新載入。 以 UWP 應用程式為目標時,您將會收到一些熱重新載入。 這是設計方式,我們不預期會進一步改善。 (附注:XAML 熱重新載入將繼續在最新的 SDK) 上提供及支援 Xamarin.Forms 客戶
  • 此版本中不支援 .NET MAUI 應用程式,如需使用 .NET MAUI 和 熱重新載入,請參閱 Visual Studio 2022 Update 1 Preview 1 版本資訊以取得詳細資料。
  • 使用 F# 建置的應用程式或以.NET Native為目標的應用程式不支援熱重新載入。

.NET 生產力

同步命名空間重構現在可在 (以滑鼠右鍵按一下) 方案總管中專案或資料夾的功能表,讓您輕鬆地同步命名空間以符合資料夾結構。

從方案總管同步命名空間

背景程式碼分析組態現在可在方案總管 (以滑鼠右鍵按一下) 功能表。 以滑鼠右鍵按一下方案總管中的解決方案節點,然後選取[分析和程式碼清除]。 接下來,選取 [設定分析範圍 ] 以設定背景程式碼分析的範圍。

  • 現在有一個重構,引進了參數,它會藉由新增參數,將運算式從方法實作移至其呼叫端。 將游標放在包含運算式的行上,或反白顯示運算式。 按 ctrl+.) (以觸發 [快速動作和重構 ] 功能表。 針對所有出現的 {0}選取[導入參數 {0}] 或 [導入參數]。 這兩個選項都會有三個飛出視窗選項, (1) 在所有呼叫月臺插入更新的運算式, (2) 擷取並建立新的方法,以傳回運算式並在呼叫月臺上新增引數,或 (3) 建立包含運算式的方法多載,並在原始方法上呼叫。

從 [快速動作] 功能表引進參數

  • 有一個名為追蹤值來源的新命令可讓您執行資料流程分析,以判斷特定值在指定點傳遞的方式,以及可能傳遞的位置。 以滑鼠右鍵按一下任何指定的成員,然後從右鍵功能表中選取 [追蹤值來源]。

在右鍵功能表中追蹤值來源

  • [值追蹤] 視窗隨即開啟,可讓您分析結果:

追蹤值來源視窗

  • 我們已新增選項,以加底線重新指派的變數。 預設會關閉此功能,因此您必須在 [工具 > 選項文字編輯器 > ] C# 或 [基本 > 進階] 中啟用它,然後選取 [底線重新 > 指派的變數]。

編輯器中的底線重新指派變數

  • 我們在 [產生覆寫] 對話方塊中新增了搜尋選項,可讓您快速搜尋並選取要覆寫的成員。

在 [產生覆寫] 對話方塊中搜尋

  • XML < 程式碼 > 標記的快速資訊現在會保留空白字元和 CDATA 區塊。 將游標停留在 元素上。 快速諮詢接著會在程式碼上方顯示來自 XML 註解的支援樣式。

XML 的快速資訊會保留空白字元

  • [尋找所有參考] 視窗現在會將多重目標專案分組,以協助減少視覺雜訊。

尋找所有參考群組多重目標專案

  • 現在有一個重構,可移除 Visual Basic 中的重複類型。
  • 移至 [實作] 不會再流覽至同時覆寫抽象宣告的成員。

C# 語言工具

在 C# 8.0 中,我們引進 了可為 Null 的參考型 別,可讓您宣告是否預期 null。 若要使用可為 Null 的參考型別,您必須將 <Nullable> enable </Nullable> 元素新增至專案檔,或將 #nullable enable pragma 新增至專案中的每個原始程式檔。 為了協助簡化此程式,我們現在會自動包含 <Nullable> 新 .NET 專案的啟用 </Nullable>

在 C# 10.0 中,我們引進 了檔案範圍命名空間 ,讓您選擇不要在命名空間內巢狀類別定義。 我們現在有重構,可將命名空間轉換成檔案範圍的命名空間。 若要使用檔案範圍命名空間,您必須先將 <LangVersion> 預覽 </LangVersion> 專案新增至專案檔。 接下來,將游標放在命名空間上。 按下 (Ctrl++. ),以觸發 [快速動作與重構] 功能表。 選取 [轉換為檔案範圍命名空間]。

檔案範圍的命名空間重構

現在有一個重構,可偏好在套用至實值型別時優先 is not nullis object 使用。 若要使用此新的重構,請將游標放在類型檢查上。 按下 (Ctrl++. ),以觸發 [快速動作與重構] 功能表。 選取 [偏好 Null 檢查而非類型檢查]。

流覽至已反編譯的來源

根據預設,流覽至 [現在開啟的反編譯來源],可讓您流覽至程式庫類型的宣告。 當您在原始程式碼中的程式庫符號和反編譯的來源上叫用 [移至定義] 時,流覽至 [反編譯的來源]。

編輯器增強功能

XML 批註現在會自動在標記內 <summary> 產生 <exception> 標記,讓您在方法明確擲回例外狀況時加入描述。

在 Visual Studio 2019 中,我們發行 了繼承邊界 ,將圖示新增至代表程式碼實作和覆寫的邊界。 按一下繼承邊界圖示會顯示您可以選取以巡覽至的繼承選項。 在此版本中,預設會啟用繼承邊界。 若要停用繼承邊界,請移至[工具>選項>] 文字編輯器>C#或 [基本>進階],然後取消選取 [啟用繼承邊界]。

繼承邊界

程式設計語言

C# 10

  • 記錄結構 (record struct Point(int X, int Y);var newPoint = point with { X = 100 };) 的結構和 with 運算式。
  • 全域 using 指示詞: global using 指示詞可避免跨程式中的許多檔案重複相同的 using 指示詞。
  • 改善明確指派:明確指派和可為 Null 性分析更能處理常見的模式,例如 dictionary?.TryGetValue(key, out value) == true
  • 常數插補字串:由常陣列成的插補字串本身為常數。
  • 擴充屬性模式:屬性模式允許存取巢狀成員 (if (e is MethodCallExpression { Method.Name: "MethodName" })) 。
  • 密封記錄 ToString:記錄可以繼承具有密封 的 ToString 基底記錄。
  • 累加來源產生器:藉由細分來源產生管線和快取中繼結果,改善大型專案中的來源產生體驗。
  • 混合解構:解構指派和解構宣告可以混合在一 (existingLocal, var declaredLocal) = expression 起 () 。
  • 方法層級 AsyncMethodBuilder:用來編譯方法的 async AsyncMethodBuilder 可以在本機覆寫。
  • #line span 指示詞:允許來源產生器,例如 Razor 的細部線條對應控制,以及 #line 指定目的地範圍 (#line (startLine, startChar) - (endLine, endChar) charOffset "fileName") 的指示詞。
  • Lambda 改善:Lambda允許屬性和傳回類型;Lambda 和方法群組具有自然委派類型 () var f = short () => 1;
  • 插補字串處理常式:插補字串處理常式類型允許在指派和調用中有效格式化插補字串。
  • 檔案範圍命名空間:具有單一命名空間的檔案不需要額外的大括弧或縮排 () namespace X.Y.Z;
  • 無參數結構建構函式:支援結構類型的無參數建構函式和實例欄位初始化運算式。
  • CallerArgumentExpression:此屬性允許擷取傳遞至方法作為字串的運算式。

如需更多詳細資料,請參閱 C# 語言功能狀態 \(英文\) 和重大變更 \(英文\)。

Razor (ASP.NET Core) 編輯器

  • Razor 檔案現在熱重新載入支援。

在 Razor 檔案中重載支援

  • 我們已大幅改善 Razor 編輯器的效能。

  • 我們已增強格式設定和縮排,使其更可靠且更快速。

  • 我們新增了新的 Razor 色彩! 您可以在 [工具 > 選項 > ] 環境 > 字型和色彩中自訂這些色彩。

  • TagHelpers 現在會以色彩標示,並在快速資訊和 IntelliSense 完成工具提示中支援分類。

TagHelpers 分類支援

  • 我們已增強 Razor 建構的角度分支醒目提示和流覽。

  • 批註現在具有自動完成、智慧縮排、自動包含批註接續,以及封鎖批註流覽。

遠端測試早期實驗性預覽

我們有 非常 早期實驗性預覽,可讓您在 Linux 容器、WSL 和透過 SSH 連線等遠端環境上執行測試! 雖然這是非常有價值的功能,但我們會要求您的耐心,因為這項功能仍處於非常早期實驗狀態,因為我們收集意見反應。 您通常不會遇到平常得到的平滑度,因為您可能會想像如何從 Visual Studio 溝通和管理連線的環境有許多角落案例。 以下是使用此實驗版本的遠端測試的一些需求:

  • 您必須在目標環境中安裝必要的相依性。 這表示如果您想要以 .NET 3.1 為目標的測試在 Linux 容器中執行,您必須確定容器已安裝透過 Dockerfile 安裝的 .NET 3.1。 我們一天喜歡建立安裝體驗,以順暢地取得任何測試相依性,但現在我們會將環境的大量布建保留到使用者的規格。
  • 規劃透過 [輸出測試 > ] 窗格監視遠端環境的線上狀態。 例如,如果容器已停止,訊息會出現在 [輸出測試 > ] 窗格中。 我們可能不會偵測到所有案例,因此請計畫檢查您的輸出是否遺失連線。 特別是如果 [輸出] 窗格未設定為 [測試],您可能不會立即看到訊息。 當連線遺失時,我們仍會試驗最佳的通知模型,因此非常歡迎意見反應! 如果連線似乎遺失,您可以使用 [測試總管] 中的 [遠端測試環境] 下拉式清單,將連線設定回本機環境,然後再次選取遠端環境以重新初始化連線。
  • 實驗性預覽目前僅限於 .NET 測試。 我們瞭解 支援 C++ 遠端測試體驗的興趣 ,我們希望最終也提供。

如何試用遠端測試?

  • 官方檔會在實驗期間之後送達。 現在,以下是開始測試它所需的專案。
  • 環境是在解決方案的根目錄中使用 testenvironments.json 來指定。 json 檔案結構遵循下列架構:
{
    "version": "1", // value must be 1
    "environments": [
        { "name": "<unique name>", ... },
        ...
    ]
}
  • 本機容器連線
    • 若要連線到在本機執行的容器,您必須在本機電腦上擁有 Docker Desktop 。 選擇性 地啟用 WSL2 整合 以提升效能。
    • 針對 Dockerfile,您可以在解決方案的根目錄中指定 testEnvironments.json 環境:
          {
          "name": "<name>",
          "localRoot": "<path to local environment>", // optional
          "type": "docker",
          "dockerImage": "<docker image tag>",
          }
      
      例如:
      {
      "version": "1",
      "environments": [
          {
          "name": "linux dotnet-core-sdk-3.1",
          "type": "docker",
          "dockerImage": "testenv"
          }
      ]
      }
      
    • 以下是 Dockerfile 的範例,用於執行以 .NET 3.1 為目標的測試。
      FROM mcr.microsoft.com/dotnet/core/sdk:3.1
      
    • 使用下列命令來建置您的容器, (結尾包含 「.」) : docker build -t <docker image name> -f <path to Dockerfile> .
  • 本機 WSL2 連線
    • 您必須在本機電腦上 啟用 WSL2 整合
    • 您可以遵循此架構,在解決方案的根目錄中指定 testEnvironments.json 環境:
      {
      "version": "1",
      "environments": [
          {
          "name": "WSL-Ubuntu",
          "type": "wsl",
          "wslDistribution": "Ubuntu"
          }
      ]
      }
      
  • SSH 連線
    • 移至 [跨 >> 平臺 > 選項] 連線管理員以新增或移除 SSH 連線。 選取 [新增] 可讓您輸入主機名稱、埠,以及您需要的任何認證。
    • 您可以使用下列專案,在解決方案的根目錄中指定 testEnvironments.json 環境:
      {
      "version": "1",
      "environments": [
          {
          "name": "ssh-remote",
          "type": "ssh",
          "remoteUri": "ssh://user@hostname:22"
          }
      ]
      }
      
  • 使用中環境是透過測試總管工具列中的下拉式清單選取。 目前一次只能有一個測試環境。

測試總管中的遠端測試環境下拉式清單

  • 選取環境之後,就會在新的環境中探索並執行測試。

在遠端環境中探索並執行測試

  • 您現在可以在遠端環境中執行並偵錯測試!

    在測試總管中檢視來自遠端環境的測試結果

  • 測試總管可能會提示您安裝一些遺漏的環境必要條件,並嘗試安裝它們,但最後,我們會將遠端環境的大量布建保留到使用者的規格。

在測試總管 [實驗性]中熱重新載入:現在可以使用幕後熱重新載入技術來嘗試加速測試體驗的新實驗性功能。 這表示,在您第一次測試執行時仍需要完整組建之後,您可以接著進行次要變更、執行測試,以及所有更新都會反映,而不需要再次執行完整組建。 若要開始使用並深入瞭解,請參閱下列詳細資料:

Visual Studio 中測試總管的熱重載可讓您執行測試,而不需要在次要編輯之間建置

  • 此體驗僅適用于以 .NET 6 為目標的專案,您必須移至 [工具 > 選項 > 測試] 來加入宣告

Visual Studio 的螢幕擷取畫面,其中顯示 [工具 > 選項 > 測試] 中的 [啟用熱重載] 選項。

  • 啟用此選項時,即使編輯器中有未儲存的變更,您的測試也會更新。 我們不會建置,因此 bin 資料夾中磁片上的二進位檔已過時。 這表示您可能會在 Visual Studio 中看到磁片上的內容與測試結果之間的差異。 若要解決這些情況,請在簽入之前先確定您已使用 ctrl+Shift+B) (完整組建。 任何明確組建都會以一般完整組建測試結果取代熱重載測試結果。

  • 某些類型的編輯無法啟動熱重載,在這些情況下,預設會回到執行完整組建的舊行為。 另請注意,只有 Visual Studio 中的變更正在進行追蹤,編輯器中的不透明案例,例如變更目標可能會預設回需要完整組建。

  • 某些大型變更 (例如重新命名 1000 個以上的方法名稱,) 可能需要比直接重新建置更久的時間。 在這些情況下,系統會在輸出中列印訊息,提示使用者執行完整重建,而不是等待熱重載。

  • 測試總管中的熱重載尚未提供堆疊追蹤。 如果您需要使用堆疊追蹤,建議您執行完整的組建。

測試控管

  • 在 [測試總管] 中顯示 (Ctrl+E,S) :在 [測試總管] 中顯示,可讓您從游標位於測試方法的編輯器中跳到測試總管中的測試方法。 這可能會提醒您有一個類似的功能,稱為[與使用中檔同步處理],讓目前在方案總管中醒目提示的檔。 這是開發人員社群的其中一個最上層投票專案,因此感謝您投票並協助我們排定此功能的優先順序! [在測試總管中顯示] 也可從編輯器的右鍵功能表、CodeLens 測試字元,以及在方案總管中按一下滑鼠右鍵。

    在 [測試總管] 中從滑鼠右鍵功能表 [從 CodeLens 顯示于測試總管] 中

  • Web 負載測試和自動程式化 UI 測試支援更新:Visual Studio 2022 中提供 Web 負載測試錄製器。 自動程式化 UI 測試錄製器不會包含在 Visual Studio 2022 中。 您仍然可以在 Visual Studio 2022 中撰寫程式碼來執行自動程式化 UI 測試,並建立新的測試,但錄製器依賴無法移植的 32 位相依性。 您仍然可以並存安裝 Visual Studio 2019,以使用自動程式化 UI 錄製器。 提醒您,Web 負載測試和自動程式化 UI 測試在 2019 年已被取代,我們打算在將對使用者的影響降到最低時將其從產品中移除。 強烈建議使用者對 Web UI 測試感興趣,以採用新的跨平臺和開放原始碼 Web 測試架構Playwright。 除了支援所有主要瀏覽器,以及更妥善處理非同步程式碼之外,Playwright 也有內建的測試錄製功能。

信任的位置

  • 在「信任設定」修訂過程中,我們移除了 [Web 標記] 檢查,並新增了在嘗試開啟程式碼 (例如檔案、專案或資料夾時所顯示的警告對話方塊,例如檔案、專案或資料夾,) 先前未受信任
  • 程式碼現在可以在目前資料夾或父資料夾位置信任
  • 使用者建立的專案會自動新增至使用者的信任位置清單
  • 您可以略過 Visual Studio 功能所建立之暫存位置的信任檢查

在 IDE 內開啟內容 (例如方案、專案、檔案或資料夾) 之前,我們會確認資料夾位置是否先前受信任。

如果偵測到不受信任的程式碼,我們會顯示警告對話方塊,提醒您安全性含意,並要求您在正常 IDE 作業之前信任程式碼。

注意:雖然此功能目前預設為關閉,但可以透過 [選項 > 信任設定 > ] 啟用,在開啟內容之前重新進行信任決策

外部來源節點更新

[方案總管] 中的 [外部來源] 節點現在也有 C++ 支援。 此外,我們新增了新的子節點,讓您尚未載入具有符號的所有模組。

方案總管中的外部來源節點支援 C++

您也可以使用滑鼠右鍵操作功能表直接從方案總管載入符號,讓模組可以出現在外部來源節點中。 外部來源節點的檔案現在也會依字母順序排序。

外部來源功能表

更新和重新整理的圖示

  • 在重新整理 Visual Studio 2022 使用者介面的目標中,您會根據一致性、可讀性和熟悉性,在整個 IDE 中找到新重新整理和更新的圖示。

具有深色和淺色背景的新圖示範例

XAML 熱重新載入

我們已更新 XAML 熱重新載入設定和應用程式內工具列,以提供與 XAML 熱重新載入而非 .NET 熱重新載入相關的設定和應用程式體驗。

已更新 XAML 應用程式中的應用程式內工具列

我們也簡化了設定窗格,以更妥善地組織通用選項。

更新的 XAML 設定選項面板

XAML Live Preview

XAML Live Preview 現在可供 WPF、UWP、WinUI 和 Xamarin.Forms 開發人員在 Android 模擬器或 UWP 傳統型應用程式中執行其應用程式。 Live Preview 會擷取執行中的應用程式使用者介面,並將它帶入 Visual Studio 內的停駐視窗。 這可讓您更輕鬆地使用 XAML 熱重新載入變更應用程式,同時在 Visual Studio 本身內看到這些變更,而不需要在執行中的應用程式和 Visual Studio 之間來回定位,同時進行即時 XAML 程式碼變更。

XAML 傳統型應用程式 UI 的即時預覽

開始進行之前:

  • 使用偵錯工具啟動支援的應用程式
  • 輸入「XAML Live Preview」或使用應用程式內工具列「在 XAML 即時預覽中顯示」按鈕,以開啟 XAML 即時預覽版,透過快速搜尋來開啟 XAML 即時預覽

一旦開始體驗,即可使用下列功能:

  • 捲動和縮放: 您可以移動流覽和縮放擷取應用程式 UI 的視窗,這可讓您使其符合顯示完整應用程式的需求,或只顯示您嘗試編輯的部分。 移動流覽和捲動適用于觸控板 (兩指捲動) 、滑鼠滾輪或 CTRL + 按一下以拖曳內容。
  • 統治者: 您可以新增一或多個水準/垂直尺規,以重迭執行中的應用程式。 接著,您可以使用滑鼠或鍵盤將這幾行移至位置。 使用鍵盤移動尺規時,使用方向鍵進行精確定位,並使用 Ctrl + 方向鍵快速定位。 您也可以選取尺規, (按一下) 並按下刪除鍵來刪除尺規。
  • 元素選取 & 資訊提示: 使用元素選取時,您可以使用您可能用來從即時視覺化樹狀結構或應用程式內工具列使用的相同功能來選取您想要編輯的 XAML 元素。 選取之後,您也可以啟用新的「資訊提示」功能,以取得所選元素的其他資訊,例如字型、色彩、邊界/邊框間距資訊等等。 使用專案選取時,請考慮啟用 [預覽選取的專案] - 透過 [即時視覺化樹狀結構] 工具列按鈕或 > [偵錯選項 > ] 熱重新載入設定 - 移至來源 XAML。
  • Windows 切換: 您可以控制擷取哪些應用程式視窗。

改善的 XAML 系結體驗

  • 改善屬性偵測器中的資料系結圖示。 現在,您可以按一下屬性旁的「圓柱」圖示來快速存取資料系結對話方塊,您可以按一下 'x「 圖示來清除系結。

屬性偵測器中的系結圖示

  • 已在 [快速動作] 中新增 [系結] 索引標籤,讓您只要從 XAML 設計工具按一下幾下即可建立系結。

快速動作中的 [系結] 索引標籤

  • 已將 [目標屬性] 下拉式方塊新增至 [資料系結] 對話方塊,以選取 Go 上的屬性。

已使用目標屬性下拉式方塊更新資料系結對話方塊

來自 開發人員社群 的前幾個投票問題

請參閱此版本中的完整開發人員社群修正清單


已知問題

遵循下列連結,查看 Visual Studio 2022 中所有已開啟的問題和可用的因應措施。


意見反應與建議

我們很希望聽聽您的意見! 您可以使用安裝程式或 Visual Studio IDE 右上角的 [傳送意見反應] 圖示,或從[說明 > 傳送意見反應] 中回報問題或建議功能意見反應圖示。 您可以使用Visual Studio 開發人員社群來追蹤您的問題,您可以在其中新增批註或尋找解決方案。 您也可以透過我們的即時聊天支援取得免費的安裝協助。


部落格

善用「開發人員工具部落格」網站中的見解與建議,讓您能夠隨時取得所有新版本的最新資訊,以及涵蓋各類功能的深入探討文章。


頁首