2022LogoVisual Studio 2022 17.0 版的版本資訊


提示

觀看 Visual Studio 2022 啟動活動的錄製內容以了解新功能、聆聽提示和技巧,以及下載免費的數位 Swag。

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


Visual Studio 2022 17.0 版

Visual Studio 2022 17.0 版的支援於 2023 年 7 月結束,這表示此版本不會再有安全性更新。 使用 Visual Studio 2022 17.0 LTSC 通道的企業和專業訂閱者應採用最新的目前通道或 LTSC 版本。

閱讀 Visual Studio 2022 版本和支援日期。

了解 Visual Studio 產品生命週期和服務。

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

Visual Studio 2022 17.0 版

Visual Studio 2022 部落格

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


17.0.23 Visual Studio 2022 17.0.23 版

2023 年 7 月 11 日發行

17.0.23 版中已解決的問題

  • Microsoft 知道 SMTP 位址插入可能發生在 SmtpClient 類別中的弱點。 這對應於 CVE-2022-26893 (不是已發佈的 CVE,因為弱點是評估為中型)。

已解決安全性諮詢


17.0.22 Visual Studio 2022 17.0.22 版

2023 年 6 月 13 日發行

17.0.22 版中已解決的問題

  • Microsoft 知道 SMTP 位址插入可能發生在 SmtpClient 類別中的弱點。 這對應於 CVE-2022-26893 (不是已發佈的 CVE,因為弱點是評估為中型)。

已解決安全性諮詢


17.0.21 Visual Studio 2022 17.0.21 版

2023 年 4 月 11 日發行

17.0.21 版中已解決的問題

  • 修正了當不正確輸入傳送至核心模式驅動程式的 PGO 定型期間所使用的驅動程式時所發生的當機。
  • 已修正在 IIS Express 中更新遙測資料時可能造成當機的問題。
  • Microsoft 知道 SMTP 位址插入可能發生在 SmtpClient 類別中的弱點。 這對應於 CVE-2022-26893 (不是已發佈的 CVE,因為弱點是評估為中型)。

開發人員社群

已解決安全性諮詢


17.0.20 Visual Studio 2022 17.0.20 版

2023 年 3 月 14 日發行

17.0.20 版中已解決的問題

  • Microsoft 知道 SMTP 位址插入可能發生在 SmtpClient 類別中的弱點。 這對應於 CVE-2022-26893 (不是已發佈的 CVE,因為弱點是評估為中型)。
  • Git 2.39 已將 credential.helper 的值從「manager-core」重新命名為「manager」。 如需相關資訊,請參閱 https://aka.ms/gcm/rename
  • 將 mingit 和 Git for Windows 套件更新至 v2.39.2,其可解決 CVE-2023-22490

已解決安全性諮詢


17.0.19 Visual Studio 2022 17.0.19 版

2023 年 2 月 14 日發行

17.0.19 版中已解決的問題

  • 已將 CPython 解譯器更新為 3.9.13 版。
  • 將 mingit 和 Git for Windows 套件更新至 v2.39.1.1,其可解決 CVE-2022-41903

已解決安全性諮詢

17.0.18 Visual Studio 2022 17.0.18 版

2023 年 1 月 10 日發行

已解決安全性諮詢

  • CVE-2023-21538 .NET 拒絕服務弱點 .NET 6.0 中存在拒絕服務弱點,惡意用戶端可能會導致堆疊溢位,當攻擊者將不正確要求傳送至公開的端點時,可能會導致拒絕服務攻擊。

17.0.17 Visual Studio 2022 17.0.17 版

2022 年 12 月 13 日

已解決安全性諮詢

  • CVE-2022-41089 遠端程式碼執行 .NET Core 3.1、.NET 6.0 和 .NET 7.0 中有遠端程式碼執行弱點,惡意執行者可能會因為剖析惡意製作的 xps 檔案而執行任意程式碼。

17.0.16 Visual Studio 2022 17.0.16 版

2022 年 11 月 8 日發行

17.0.16 版中已解決的問題

已解決安全性諮詢


17.0.15 Visual Studio 2022 17.0.15 版

2022 年 10 月 11 日發行

17.0.15 版中已解決的問題

  • 系統管理員可以從配置更新離線用戶端電腦上的 VS 安裝程式,而不需更新 VS。

已解決安全性諮詢

  • CVE-2022-41032 .NET 權限弱點提高 .NET 7.0.0-rc.1、.NET 6.0、.NET Core 3.1 和 NuGet 用戶端 (NuGet.exe、NuGet.Commands、NuGet.CommandLine、NuGet.Protocol) 中存在惡意執行者可能會導致使用者執行任意程式碼。

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++ 工具組包含重要的錯誤修正,包括修正所有剩餘的 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 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 問題,其中具有堆積爭用的多執行緒應用程式可能會遇到死結、錯誤的「野生指標釋放」報告,或在程序結束期間發生死結。
  • 已修正「無法在離線電腦上安裝 Visual Studio 的任何擴充功能 (vsix)」的問題。

17.0.8 Visual Studio 2022 17.0.8 版

2022 年 4 月 12 日發行

17.0.8 版中已解決的問題

開發人員社群的問題

已解決安全性諮詢

CVE-2022-24765 權限弱點提高 Git for Windows 中可能會有權限弱點提高,其中 Git 作業在搜尋 Git 目錄時,可能會在存放庫外執行。 Git for Windows 現在已更新為 2.35.2.1 版。

CVE-2022-24767 DLL 劫持弱點在 SYSTEM 使用者帳戶下執行解除安裝程式時,Git for Windows 安裝程式中會有潛在的 DLL 劫持弱點。 Git for Windows 現在已更新為 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 版中已解決的問題

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

開發人員社群的問題

開發人員社群有一個在 17.0 版中可用的修正程式完整清單

已解決安全性諮詢

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

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 緩衝區溢位弱點 Git for Windows 所取用的 OpenSSL 中會有潛在的緩衝區溢位弱點。 Git for Windows 現在已更新為 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 Web 服務器處理特定 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::parallel_for_each 因整數溢位而當機呼叫程序的錯誤。
  • 已修正 ATL CString 比較 C++20 和 C++ 最新語言模式中的錯誤 (bug)。
  • 已修正在使用大量 pogo 探查時,arm64 和 arm64ec 上執行 PGI 二進位檔時發生當機。
  • 已修正最佳化非常大型函式可能會產生不正確程式碼的問題。

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 with bidirectional text control characters replaced with placeholders

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

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

  • 已修正 Web Forms 設計工具中的當機問題
  • 已修正 !important 的 CSS 完成會在 HTML 或 Razor 檔案中的錯誤位置插入文字的問題。
  • 已修正與共用類似相依性的程式庫 (例如 SignalR) 發生衝突的 Xamarin.Forms XAML 熱重新載入回歸。 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 作業的無訊息錯誤 codegen
  • 已新增傳訊至輸出視窗中,其會在使用 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 月 08 日發行

Visual Studio 2022 17.0.0 版發行版本的新功能摘要

64 位元

  • devenv.exe 現在只有 64 位元

Azure 雲端服務

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

C++

  • v143 建置工具現在可透過 Visual Studio 安裝程式以及獨立建置工具取得。
  • 在偵錯工具下執行時,新的熱重新載入體驗現在可供原生 C++ 應用程式使用。 其同時支援 MSBuild 和 CMake 專案。 如需詳細資訊,請參閱下列熱重新載入一節。
  • 您現在可以在 WSL2 上以原生方式建置及偵錯,而不需要建立 SSH 連線。 支援跨平台 CMake 專案和 MSBuild 型 Linux 專案。
  • Visual Studio 現在支援 CMakePresets.json 中的 buildPresets.targets 選項。 這可讓您在 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 效能,進而改善載入程式碼的載入時間。
  • IntelliSense Code Linter for C++ 現在預設為開啟,提供立即隨用即用的建議,並修正常見程式碼瑕疵的建議。
  • 在參數 -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 淘汰連結

偵錯與診斷

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

個人化

  • 已新增垂直和水準索引標籤的色彩索引標籤
  • 已新增主題套件,並與 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 套件的 In-org nuget 摘要。
    2. 簽入二進位檔。
  • 已新增 ILanguageClient 中斷性變更修正

雲端服務

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

Git 工具

  • 跨不同存放庫的任何解決方案預覽旗標底下的多重存放庫支援 (亦即在不同 Git 存放庫中裝載專案的解決方案)
  • 在建立 Git 存放庫體驗中,現在完全支援發佈至 Azure DevOps
  • 狀態列增強功能,包括從空白 VS 檢視及開啟存放庫的新功能,以及顯示未取消認可計數
  • [Git 變更] 視窗上的溢位功能表現在僅適用於具有其他 Git 作業的本機存放庫
  • 整合差異工具列,其中包含新增/刪除的行數和可探索的組態選項
  • 認可詳細資料增強功能,包括回應更快速且方便使用者使用的 UI

[說明] 功能表

  • 在 17.0 期間,我們已使用開始使用資料和實用的秘訣/訣竅來重新建立說明功能表。
  • 新增開發人員社群、版本資訊、Visual Studio 產品藍圖,以及我們的社交媒體頁面等內容,為我們的開發小組提供更多共同作業。

熱重新載入體驗

  • 熱重新載入現在可透過 Visual Studio 偵錯工具提供給 .NET 開發人員,且沒有許多 .NET 6 應用程式類型的偵錯工具
  • C++ 開發人員在使用 Visual Studio 偵錯工具時,現在可以使用熱重新載入

如需詳細資料,請參閱上述連結

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 倍
  • Razor 檔案中的 F7 (檢視程式碼) 支援
  • razor 檔案中的程式碼片段支援,這會使用單一索引標籤完成程式碼片段工作階段,而不是按 Tab-tab
  • 當有巢狀 HTML 和 Razor 元件時,@code 區塊中更好的格式設定
  • Razor 檔案中的熱重新載入支援
  • 效能改善
  • 格式化和縮排增強功能
  • 新的 Razor 編輯器色彩
  • TagHelpers 現在已著色,並具有快速資訊分類支援和完成工具提示
  • 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 發行節奏文件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 核心空白」範本是使用我們已開始新增支援的新型「基本 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 擴充功能,則相同的擴充功能適用於 .NET Framework 的新 WPF XAML 設計工具。 如需如何移轉至新擴充性模型的進一步資訊,請參閱下面的移轉文件

XAML 熱重載

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

XAML Live 預覽

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

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

XAML 範例資料

  • 從 WPF 應用程式中的工具箱建立 DataGrid、ListBox 和 ListView 控制項時,現在預設會新增設計階段範例資料。 若要停用此行為,請在 [工具] -> [選項] -> [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 區塊中新增例外狀況協助程式。 當受控步驟導致擲回例外狀況時,這會以相關的例外狀況資訊顯示例外狀況協助程式,而步驟會在 catch 區塊中完成。
  • 新的 [繼續] 按鈕:顯示「攔截」例外狀況的例外狀況協助程式。

Exception Handler Updates

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

Force Run to Cursor

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

Force Run to Cursor Glyph

  • 記憶體傾印診斷分析
    • 我們已改善分析器引擎,以在 ASP.NET Core 記憶體傾印中尋找更多非同步中的同步問題。
    • 您可依 CPU 時間檢閱前 5 個執行緒,找出您程式碼中的哪些部分耗用最多 CPU 資源。
    • 檢閱整個受控堆積,以取得層代 0、1、2 和大型物件堆積中的記憶體壓力跡象。
    • 如果您有損毀傾印,可以快速找出導致應用程式損毀的第二機會例外狀況和執行緒。
    • 難以得出診斷假設? 當損毀或停止回應的確切原因尚不清楚時,您可以使用例外狀況分析器來快速尋找並檢閱堆積上的所有例外狀況。
    • 對於記憶體分析很重要的時刻,我們已改善完成項佇列分析器的啟發學習法。 我們現在著重於您的程式碼,並排除 .NET Framework 所管理的物件。

相依中斷點

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

Dependent Breakpoint

中斷點 Gutter 改善

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

Breakpoint Glyph

以滑鼠右鍵按一下該中斷點字符會提供具有選項的新操作功能表;只需較少的點擊次數,即可快速建立進階中斷點 (條件式中斷點、追蹤點和暫存中斷點)。

Breakpoint Context Menu

暫時中斷點

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

Temporary Breakpoint

拖放中斷點

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

Drag and Drop Breakpoint

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

我們在 [方案總管] 中新增了新的 [外部來源] 節點。 這目前只會在偵錯時出現,且會顯示受控模組的來源並載入符號,當中包含來源伺服器或來源連結資訊。 偵錯時,具有來源伺服器資訊的任何已載入受控符號檔 (.pdb) 都會出現在這個節點底下。 您可以瀏覽任何其他方案總管資料夾之類的檔案,或按兩下項目,從來源伺服器下載檔案,並在 VS 編輯器中開啟檔案。 External Sources node in Solution explorer

附加至處理序對話方塊改善

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

Attach to process Dialog Improvements

記憶體傾印診斷分析

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

個人化

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

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

新的 Visual Studio 主題套件

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

將主題同步處理至 Windows OS

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

色彩索引標籤

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

Color tabs

編輯器

詞根瀏覽

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

自動儲存

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

多插入號複製\貼上體驗

我們已改善多個插入號複製及貼上體驗。 先前,將多行貼入多個插入號中會導致在每個插入號處都複製整個剪貼板的內容。 現在,將多行貼入相同數目的插入號會將每行插入到個別的插入號中。 若要使用多個插入號,請按 Alt+Shift+滑鼠按一下Alt+Shift+. 並使用 Ctrl+Shift+箭頭 鍵來展開選取範圍。 接下來,按 Ctrl+C 以複製多個選取項目中的文字。 使用 Alt+Shift+滑鼠按一下,為要貼上所需位置的每行建立多個插入號。 最後,按 Ctrl+V,將每行貼在自己的插入號上。

Multi-caret copy and paste

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

Multi-caret box selection option

擴充性

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

初始化工作現在會由工作狀態中心 (TSC) 追蹤。 如果初始化工作失敗,使用者可前往 TSC 取得錯誤的詳細資訊。 語言用戶端現在能夠自訂向使用者顯示的訊息,說明此失敗對他們所代表的意義,以及修正此問題可能採取的動作。 為了這麼做,我們會在 ILanguageClient 介面中引進一組新的 API。 這些新的 API 會導致 ILanguageClient 介面的中斷性變更,因此語言延伸模組需要參考新的套件,才能在 Visual Studio 2022 中運作。

以下是新的 API:

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

ShowNotificationOnInitializeFailed in the Task Status Center

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

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

Language client initialization error in the Output Window

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 模組

NPM GUINPM 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++ 開發人員的熱重新載入體驗也經歷了重大改善。 工具列現在具有「熱重新載入」按鈕的目標實作,且外觀已改善、功能更多。

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

Hot Reload User Experience in Visual Studio 2022

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

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

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

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

New Rude Edit dialog for Hot Reload in Visual Studio 2022

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

  • Visual Studio 工作階段寬範圍的加入宣告選項,可在每個熱重新載入粗略編輯上重建及套用變更。 檢查之後,這會套用至所有未來的粗略編輯,直到 Visual Studio 重新啟動為止
  • 重建並套用您的程式碼變更命令,可使用單一點擊而不是多個手動步驟來完成
  • 輕鬆存取設定

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

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

C++ 應用程式的支援

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

此體驗由原生編輯後繼續提供技術支援,如需了解支援的編輯,請參閱我們的文件

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

自從我們在 2021 年 5 月宣佈熱重新載入之後,.NET 開發人員所提出的一個很常見的問題就是「熱重新載入是否會與我的 .NET 應用程式架構/版本組合搭配運作?」。 在大部分情況下,我們已經盡最大的努力讓答案是肯定的,以下是重點摘要。

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

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

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

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

這表示即使是 Azure Functions 之類的專案,在此案例中也能運作正常。 我們鼓勵您嘗試組合,並讓我們知道您是否發現任何問題。

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

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

當以大部分類型的 .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 應用程式 (伺服器和 WebAssembly*)
  • Blazor 和一般 ASP.NET Core 網站的 Razor 檔案編輯
  • CSS 熱重新載入
  • 在沒有偵錯工具的情況下執行應用程式時,能夠取得熱重新載入支援 (如以上詳述)

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

*在尚未啟用使用 Visual Studio 偵錯工具時,在 Visual Studio 2022 GA 版本中支援 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 在沒有偵錯工具 (CTRL-F5) 的情況下啟動 Web 應用程式時,將得到熱重新載入支援。

注意:當您運作 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 應用程式為目標時,您將會收到一些熱重新載入。 這是依設計的結果,我們並不預期可進一步改善。 (注意:最新 SDK 上的 Xamarin.Forms 客戶將繼續提供 XAML 熱重新載入並受到支援)
  • 此版本不支援 .NET MAUI 應用程式,若要使用 .NET MAUI 和熱重新載入,請參閱 Visual Studio 2022 Update 1 Preview 1 版本資訊,以取得詳細資料。
  • 使用 F# 建置的應用程式或以 .NET Native 為目標的應用程式不支援熱重新載入。

.NET 生產力

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

Sync namespaces from Solution Explorer

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

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

Introduce parameter from Quick Actions menu

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

Track value source in right click menu

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

Track Value Source Window

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

Underline reassigned variables in Editor

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

Search in Generate Overrides Dialog

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

Quick Info for XML preserves whitespace

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

Find All Reference Groups Multi-Targeted Projects

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

C# 語言工具

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

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

File-scoped namespace refactoring

現在有一個重構功能,當套用至值類型時,會優先使用 is not null 而不是 is object。 若要使用此新的重構功能,請將游標放在要進行類型檢查的位置上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [建議使用 null 檢查而非類型檢查]

瀏覽至反向組譯的原始碼

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

編輯器增強功能

XML 註解現在會在 <summary> 標記內自動產生 <exception> 標記,讓您可在方法明確引發例外狀況時新增描述。

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

Inheritance Margin

程式語言

C# 10

  • 在結構上記錄結構with 運算式 (record struct Point(int X, int Y);var newPoint = point with { X = 100 };)。
  • 全域 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 (startLine, startChar) - (endLine, endChar) charOffset "fileName") 的 #line 指示詞。
  • Lambda 改善:Lambda 允許屬性和傳回類型;Lambda 和方法群組具有自然委派類型 (var f = short () => 1;)。
  • 差補字串處理常式:差補字串處理常式類型允許在指派和叫用中有效格式化差補字串。
  • 檔案範圍命名空間:具有單一命名空間的檔案不需要額外的大括弧或縮排 (namespace X.Y.Z;)。
  • 無參數結構建構函式:支援結構類型的無參數建構函式和執行個體欄位初始設定式。
  • CallerArgumentExpression:這個屬性允許擷取傳遞至方法做為字串的運算式。

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

Razor (ASP.NET Core) 編輯器

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

Reload Support in Razor Files

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

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

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

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

TagHelpers Classification Support

  • 我們已增強 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"
          }
      ]
      }
      
    • 以下是執行以 .NET 3.1 為目標測試的 Dockerfile 範例。
      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"
          }
      ]
      }
      
  • 作用中的環境是透過 Test Explorer 工具列中的下拉式清單來選取。 目前,一次只能啟用一個測試環境。

Remote testing environment drop down in Test Explorer

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

Tests are discovered and executed in remote environments

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

    View test results from remote environment in the test explorer

  • 測試總管可能會提示您安裝一些遺漏的環境必要條件,並嘗試加以安裝,但最終,我們會將大部分的遠端環境佈建留給使用者的規格。

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

Hot reload for the Test Explorer in Visual Studio enables you to run tests without requiring a build between minor edits

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

Screenshot of Visual Studio showing enable hot reload option in Tools > Options > Test.

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

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

  • 某些大型變更 (例如重新命名 1000+ 方法名稱) 可能需要更長的時間才能進行熱重新載入,而不只是重新建置。 在這些情況下,會在輸出中列印訊息,提示使用者執行完整重建,而不是等待熱重新載入。

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

測試工具

  • 在測試總管中顯示 (Ctrl+E,S):在 [測試總管] 中顯示,可讓您從游標在編輯器測試方法中的位置跳至測試在測試總管中的位置。 這可能會提醒您使用稱為「與使用中文件同步處理」的類似功能,保留您目前在 [方案總管] 中醒目提示運作的文件。 這是開發人員社群中投票數最高的項目之一,因此感謝各位投票並協助我們優先處理這項功能! 您也可從編輯器的右鍵功能表、CodeLens 測試字符,以及在 [方案總管] 中按一下滑鼠右鍵使用 [在測試總管中顯示]。

    Show in Test Explorer from right-click menuShow in Test Explorer from CodeLens

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

信任的位置

  • 做為「信任設定」改造的一部分,我們已移除「網頁標記」檢查,並在嘗試開啟程式碼 (例如檔案、專案或資料夾) 時,新增了警告對話方塊,並且會在嘗試開啟先前尚未受到信任的程式碼 (例如檔案、專案或資料夾) 時顯示該對話方塊
  • 程式碼現在可在目前資料夾或父資料夾位置上受到信任
  • 使用者建立的專案會自動新增至使用者信任的位置清單
  • 您可以略過 Visual Studio 功能所建立暫存位置的信任檢查

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

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

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

外部來源節點更新

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

External Sources node in Solution explorer supports C++

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

External Sources menu

已更新和重新整理的圖示

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

Examples of new icons with dark and light backgrounds

XAML 熱重新載入

我們已更新 XAML 熱重新載入設定和應用程式內工具列,讓您清楚了解設定和應用程式內體驗是與 XAML 熱重新載入有關,而不是與 .NET 熱重新載入有關。

Updated in-app toolbar in XAML apps

我們也已簡化設定窗格,更妥善地將通用選項組織在一起。

Updated XAML Settings options panel

XAML Live 預覽

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

Live Preview of XAML Desktop Apps UI

開始進行之前:

  • 使用偵錯工具啟動支援的應用程式
  • 透過輸入 [XAML Live 預覽] 進行快速搜尋,或使用應用程式內工具列的 [以 XAML Live 預覽顯示] 按鈕,以開啟 XAML Live 預覽

一旦體驗啟動後,即可使用下列功能:

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

已改善 XAML 繫結體驗

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

Binding icons in Property Inspector

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

Binding tab in Quick Actions

  • 已將 [目標屬性] 下拉式方塊新增至 [資料繫結] 對話方塊,以隨時隨地選取屬性。

Updated Data Binding Dialog with Target Property combo box

開發人員社群的熱門投票問題

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


已知問題

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

意見反應與建議

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


部落格

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


頁首