共用方式為


2019Logo Visual Studio 2019 16.8 版的版本資訊



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


注意

這不是 Visual Studio 的最新版本。 若要下載最新版本,請參閱 Visual Studio 的網站。



Visual Studio 2019 16.8 版的新功能

支援時間範圍

此版本現在已不支援。 如需 Visual Studio 支援的詳細資訊,請檢閱 Visual Studio 2019 的支援原則

請參閱最新版的版本資訊,或造訪 Visual Studio 網站以下載最新支援的 Visual Studio 2019 版本。

Visual Studio 2019 16.8 版

Visual Studio 2019 封存版本資訊

Visual Studio 2019 部落格

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


請參閱 Visual Studio 2019 16.8 版中所有開發人員社群項目的完整清單

版本資訊圖示 Visual Studio 2019 16.8.7 版

2021 年 3 月 9 日發行

此 Visual Studio 2019 16.8.7 版本中修正的問題

資訊安全諮詢注意事項

CVE-2021-21300 Git for Visual Studio 遠端程式碼執行弱點

當 Visual Studio 複製惡意存放庫時,就會存在遠端程式碼執行弱點。

CVE-2021-26701 .NET Core 遠端程式碼執行弱點

由於文字編碼的執行方式,.NET 5 和 .NET Core 中存在遠端程式碼執行弱點。


版本資訊圖示 Visual Studio 2019 16.8.6 版

2021 年 2 月 22 日發行

此 Visual Studio 2019 16.8.6 版本中修正的問題


版本資訊圖示 Visual Studio 2019 16.8.5 版

2021 年 2 月 9 日發行

資訊安全諮詢注意事項

CVE-2021-1639 TypeScript 語言服務遠端程式碼執行弱點

當 Visual Studio 載入包含 JavaScript 或 TypeScript 程式碼檔案的惡意存放庫時,會存在遠端程式碼執行弱點。

CVE-2021-1721 .NET Core 拒絕服務弱點

在 X509 憑證鏈結建置期間建立 HTTPS Web 要求時,存在拒絕服務弱點。

CVE-2021-24112 .NET 5 和 .NET Core 遠端程式碼執行弱點

當圖形介面仍然參考中繼檔時處置中繼檔,會存在遠端程式碼執行弱點。 此弱點只存在於 MacOS 或 Linux 上執行的系統上。

此 Visual Studio 2019 16.8.5 版本中修正的問題

  • 已修正 x86 Microsoft.VCLibs Appx 安裝在 ExtensionSDK 下使用正確簽章更新的問題。
  • 已修正使用 C++ DesignTime 功能時的記憶體流失。
  • 已修正將現有資料庫匯入 SSDT 專案時未記住密碼時,會發生例外狀況的問題。
  • 已修正客戶第一次將 .NET Core 專案發佈至資料夾或其他主機目標時停用發佈按鈕的問題。
  • 已修正開發人員開啟發行設定檔檢視頁面時偶爾發生的停止回應。
  • 新增了 Xcode 12.4 支援。

開發人員社群的項目


版本資訊圖示 Visual Studio 2019 16.8.4 版

發行於 2021 年 1 月 12 日

資訊安全諮詢注意事項

CVE-2021-1651 / CVE-2021-1680 診斷中樞標準收集器服務權限弱點提高

當診斷中樞標準收集器未正確處理資料作業時,即會存在權限提升弱點。

CVE-2020-26870 Visual Studio 安裝程式遠端程式碼執行弱點

當 Visual Studio 安裝程式嘗試顯示惡意 Markdown 時,即會存在遠端程式碼執行弱點。

CVE-2021-1723 ASP.NET Core 與 Visual Studio 拒絕服務弱點

Kestrel 剖析 HTTP/2 要求的方式中有拒絕服務弱點。

此 Visual Studio 2019 16.8.4 版本中修正的問題

  • 修正了若先前已從舊版 Visual Studio 中 Visual Studio Marketplace 安裝 IntelliCode 時,可能無法安裝專門用於 C# 之 IntelliCode 元件的問題
  • 當 PackageReference 專案參考具有 PackageReference 相依性的 packages.config 專案時,現在會遵守可轉移的專案參考。
  • 新增了 Xcode 12.3 支援。
  • 修正了 x86_64 watchOS 7.0 以上版本的模擬器支援
  • 我們已修正誤判 (C33001 ~ C33005) 以使用從函式傳回的 VARIANT。
  • 修正在關閉專案或解決方案時,WinForms .NET Core 設計工具中的間歇性 VS 當機。
  • 已修正資料庫專案: 從方案總管將檔案拖曳至已開啟的檔案時,會從檔案系統中刪除檔案的問題!
  • 已修正按一下 [SQL 結構描述比較] 上的 [更新] 時,不會將變更儲存至 sqlproj 檔案
  • 已修正組建失敗且錯誤「找不到資料表/資料行」的錯誤 (bug)。
  • 修正 [Team Explorer -> 分支] 中的 [合併後提交] 核取方塊。
  • 已修正在檢查更新時,Visual Studio 可能會沒有回應數秒的錯誤。
  • DeploymentAppRecipe.exe 工具現在支援從任何目前目錄執行。 它現在也會在部署失敗時傳回非零傳回值,並將錯誤訊息列印至標準錯誤資料流。

開發人員社群的問題



版本資訊圖示 Visual Studio 2019 16.8.3 版

發行於 2020 年 12 月 8 日

資訊安全諮詢注意事項

CVE-2020-17156 Visual Studio 遠端程式碼執行弱點

當 Visual Studio 複製惡意存放庫時,就會存在遠端程式碼執行弱點。

此 Visual Studio 2019 16.8.3 版本中修正的問題

  • 已修正在父類別外部定義巢狀函式範本時發生內部編譯器錯誤的問題。
  • 修正了在非靜態資料成員的初始設定式中使用 'this' 時,引發不正確的錯誤 C2355。
  • 已修正使用 /analyze:ruleset 選項搭配 /analyze:rulesetdirectory 和/或 /analyze:projectdirectory 選項時自訂規則集的規則集載入錯誤。
  • 已修正使用 WinForms .NET Core 設計工具時,Visual Studio 中發生間歇性損毀的問題。
  • .NET 5.0.1 插入到 Visual Studio 16.8.3 版
  • 已修正某些 UI 內容啟用工具視窗可能造成 Visual Studio 損毀的問題。
  • 已修正沒有 Git 遠端追蹤分支時,從管理分支頁面推送的問題。
  • 已新增 Xcode 12.2 支援。

開發人員社群的問題



版本資訊圖示 Visual Studio 2019 16.8.2 版

於 2020 年 11 月 19 日發行

此 Visual Studio 2019 16.8.2 版本中修正的問題

  • 已修正迴圈中的最佳化 Bug。
  • 已修正實作保證複製省略 (C++17 功能) 的內部編譯器錯誤。
  • 已修正因大量使用匿名型別而導致組建效能衰退的問題。
  • 已解決在編輯 C# 程式碼時,會出現包含「指定的引數超出有效值範圍」訊息的金色列問題。
  • 已修正在建置具有 T4 範本的專案時,可能會造成 MissingMethodException 的問題。
  • 已修正 [新增專案] 對話方塊中的搜尋可能傳回零個結果的問題。

開發人員社群的問題



版本資訊圖示 Visual Studio 2019 16.8.1 版

2020 年 11 月 12 日發行

此 Visual Studio 2019 16.8.1 版本中修正的問題

  • 已修正在複製 Team Explorer 中存放庫時,會彈出「未正確載入 'SourceExplorerPackage' 套件。」 警告的高影響問題。 當使用者發生此問題時,會導致產品停止回應。

版本資訊圖示 Visual Studio 2019 16.8.0 版

2020 年 11 月 10 日發行

Visual Studio 2019 16.8 版發行版本的新功能摘要


F#

  • F# 5 現在與 .NET 5 一起發行
  • 透過 F# 工具版本 11.0.0 之 Visual Studio 工具的效能改進與修正
  • GitHub 上提供的完整版本資訊

C++

  • /std:c++latest 與 <coroutine> 標頭現在支援 C++20 協同程式
  • IntelliSense 現在支援 C++20 <concepts> 與 <ranges> 標頭,以及概念定義的重新命名與瀏覽。
  • STL 現在支援大部分的 C++20 範圍。
  • MSVC 現在支援 Conditionally trivial special member functions (有條件的 trivial 特殊成員函式)。
  • /std:c11 和 /std:c17 參數現在支援 C11 和 C17
  • 其他 STL 改善包括對 std::atomic_refstd::midpoint and std::lerpstd::execution::unseq 的完整支援,以及 std::reverse_copy 和更多項目的最佳化。
  • 已將 Visual Studio 隨附的 CMake 版本升級為 CMake 3.18 \(英文\)。
  • 程式碼分析工具現在支援 SARIF 2.1 標準:靜態分析記錄格式的業界標準。
  • 現在,遺失 Linux 專案的建置工具會在工具列中發出警告,並在錯誤清單中清楚描述遺失的工具。
  • 您現在可偵錯遠端 Linux 系統上的 Linux 核心傾印,或直接從 Visual Studio 偵錯 WSL。
  • 針對產生的 C++ Doxygen 註解,我們新增了其他註解樣式選項 (/*! and //!)。
  • 其他 vcpkg 公告
  • 未評估之上下文中的 lambdas 編譯器支援
  • 由多執行緒 pdb 建立改善的 /debug:full 連結效能。 數個大型應用程式與 AAA 遊戲的連結速度會快 2 到 4 倍。
  • Visual Studio 偵錯工具現在支援 char8_t。
  • 支援使用 clang-cl 的 ARM64 專案。
  • Intel AMX 內建函式支援。
  • 新增了新的連結選項 legacy_stdio_float_rounding.obj,以啟用列印浮點值的舊版行為,這在 Dev16.2 中已變更為正確四捨五入精確表示的浮點數。 如需詳細資訊,請參閱 printf、_printf_l、wprintf、_wprintf_l

偵錯工具

  • .NET Core Linux 核心傾印偵錯支援
  • .NET 和 .NET Core 自動分析
  • .NET 和 .NET Core 記憶體最忙碌路徑自動分析

實驗性 Razor 編輯器更新

  • Blazor 燈泡
  • C# 燈泡
  • 增強的 Razor 格式設定
  • 從 .razor 檔案重新命名標記中的 Razor 元件
  • 在 Blazor 元件標籤命名空間上移至定義
  • C# 暫留顏色標示
  • C# 完成工具提示顏色標示
  • Razor 的移至定義/實作,包括已關閉的檔案
  • 已關閉 Razor 檔案中的 [尋找所有參考]
  • 改進了 Razor 編輯效能與大型專案及解決方案的穩定性

含 SDK 樣式專案的 Fakes

  • 使用 SDK 樣式專案的新 Fakes 支援時,有些使用者會在產生填充碼時遇到下列錯誤

Git 生產力

  • 深入了解如何使用新的線上文件中的所有 Git 功能
  • 隨時透過 [Git 變更] 視窗、[檢視] 功能表與狀態列來開啟 [Git 存放庫] 視窗
  • 在 [Git 變更] 視窗中從多個遠端擷取、提取及推送
  • 在 [Git 存放庫] 視窗頂端檢視 Git 命令的成功與錯誤訊息
  • 從 Azure DevOps 工作項目建立新的分支
  • 從 Git 功能表的本機存放庫清單中開啟 Git 存放庫
  • 預設的原始程式碼控制提供者現在是 Git,而不是 TFVC
  • 按一下以在 [Git 存放庫] 視窗中於分支記錄之間切換
  • 在開啟存放庫後,在 [方案總管] 中從解決方案清單檢視並選取
  • 修改歷程記錄檢視,並透過 Git 存放庫視窗中的工具列搜尋認可
  • 從分支歷程記錄圖中的傳入與傳出認可區段擷取、提取及推送
  • 將分支推送到遠端後,系統會提示您建立提取要求
  • 在分支清單操作功能表的合併和重訂基底命令中檢視分支名稱
  • 透過方案總管和編輯器中的操作功能表來存取 Git 命令
  • 透過新的強制回應對話方塊 (含有將流程移至背景的選項) 觀察複製進度

IntelliCode

  • 在 in Visual Studio 文件中取得個人化 IntelliCode 完成
  • 使用程式碼基底讓您的 IntelliCode 完成保持在最新狀態,並在您的小組 CI 工作流程文件中共用

.NET 生產力

  • Roslyn 分析器現在包含在 .NET 5.0 SDK 中
  • 有一個重構功能,其引進新的 C# 9 not 模式比對語法 (當隱藏運算子存在時)
  • 內嵌方法重構,以協助取代單一陳述式主體內的靜態、執行個體與擴充方法的用法
  • 程式碼修正,可將 typeof 的執行個體轉換為 C# 中的 nameof,並將 GetType 轉換為 Visual Basic 中的 NameOf
  • C# 與 Visual Basic 支援內嵌參數名稱提示,其會在函式呼叫中的每個引數之前插入常值、轉換常值與物件具現化的裝飾
  • 會將所選取類別中的成員擷取至 C# 與 Visual Basic 中之新基底類別的重構
  • 程式碼清除有新的設定選項,可以在您的 EditorConfig 檔案中,對單一檔案或整個解決方案套用格式設定與檔案標頭喜好設定
  • 程式碼修正,可移除不應以傳址方式傳遞引數的 in 關鍵字
  • 引進新的 C#9 模式組合器與模式比對建議,例如將 == 轉換成在適用的情況下使用 is 的重構
  • 當您嘗試在非抽象的類別中寫入抽象方法時,程式碼修正可讓類別抽象化
  • 輸入第一個引號時,會自動顯示 DateTime 與 TimeSpan 字串常值中的 IntelliSense 完成
  • 程式碼修正以移除不必要的 pragma suppressions 與不必要的 SuppressMessageAttributes
  • RenameFind All References 了解全域 SuppressMessageAttributes 之目標字串內的符號參考
  • 在 Visual Basic 中,ByVal 淡出以表示其不需要搭配程式碼修正來移除不必要的 ByVal
  • 有多個執行階段的互動視窗支援,例如 .NET Framework 與 .NET Core。
  • 已新增新的 RegisterAdditionalFileAction API,可讓分析器作者為其他檔案建立分析器。

Visual Studio 2019 IDE

  • 使用帳戶管理體驗來新增您的 Github 帳戶
  • 在此版本中,舊版「檔案中尋找」體驗已淘汰,而所有使用者都將移至新的體驗。 編輯小組正與在開發人員社群中留下意見反應的使用者合作,他們在最新的「檔案中尋找」體驗中遇到了問題。
  • ClickOnce 發行提供者現在可供 .NET Core 3.1 與 .NET 5.0 Windows 傳統型應用程式使用。

在測試總管的 [測試詳細資料] 窗格中將文字換行

  • 現在,您可以在測試總管的 [測試詳細資料] 窗格中將文字換行。

XAML 工具 (WPF、UWP 與 Xamarin.Forms)

  • XAML 繫結失敗診斷改善
  • XAML 熱重新載入設定已移至 [偵錯] > [熱重新載入]
  • 從未參考的 NuGet 套件填入工具箱

JavaScript/TypeScript

  • JavaScript/TypeScript 偵錯工具現在支援同時對服務背景工作角色、Web 背景工作角色、iFrame 和您的網頁 JavaScript 進行偵錯! 此外,新的偵錯體驗加入了在瀏覽器中同時對後端節點伺服器應用程式與用戶端 JavaScript 進行的支援。 此功能仍為實驗性。 您可以在 [偵錯選項] 功能表中啟用新的偵錯體驗
  • 您現在可以使用程式碼動作快速鍵 (Crl + .) 來在任何重構可用的地方觸發重構。 您甚至不需要選取任何文字 - TypeScript 現在足夠聰明,可以查看您的游標位置以尋找最佳可用重構!
  • 您現在可以微調 TypeScript 會針對自動匯入完成搜尋哪些套件。 這可能可以在某些具有許多相依性的專案中改善效能。 如需詳細資訊,請參閱 TypeScript 4.0 (版本資訊)[https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html]
  • 我們在輸出窗格中新增了一則訊息,顯示我們要安裝哪些類型來支援 intellisense。 建議您將 tsconfig 新增至您的專案,以自訂要使用的類型。
  • 請注意,我們包含 TypeScript 4.0 編譯器與語言服務

資訊安全諮詢注意事項

CVE-2020-17100 Visual Studio 竄改弱點

當適用於 Visual Studio 的 Python 工具建立 [python27] 資料夾時,會存在竄改弱點。 攻擊者若成功探索此弱點,即可在權限提升的內容中執行處理序。

此版本中已解決的問題

  • 已修正在 Visual Studio 2019 16.7 中使用 Intel C++ 編譯器的 80 位元長雙精度發出編譯器錯誤,導致專案無法建置的問題。
  • 已修正 Live Unit Testing 在某些情況下拒絕啟動的問題。
  • .NET 5.0.RC2 已新增至 Visual Studio 2019 v16.8 Preview 4
  • 已修正偶爾 Git 作業會開始但永遠不會完成的錯誤 (Bug)。
  • 已在 Visual Studio Codespaces 建立與連接中新增額外的功能。
  • 修正了在關閉或離開 ASP.NET Core 解決方案時,導致 Visual Studio 2019 損毀或停止回應的 Bug。
  • 已修正在解除安裝並重新安裝 Visual Studio 2019 之後,無法載入 C++ 專案系統的問題。

Visual Studio 2019 16.8.0 版的新功能詳細資料

C++

  • /std:c++latest 與 <coroutine> 標頭現在支援 C++20 協同程式。 在 <實驗性/協同程式> 和 /await 切換下,可取得對舊版行為的支援。
  • IntelliSense 現在支援 C++20 <concepts> 與 <ranges> 標頭,以及概念定義的重新命名與瀏覽。 Preview 4 中預計會解決的已知問題
  • STL 現在支援大部分的 C++20 範圍。 您可在範圍 GitHub 問題中追蹤進度。
  • MSVC 現在支援 Conditionally trivial special member functions (有條件的 trivial 特殊成員函式)。
  • /std:c11 和 /std:c17 參數現在支援 C11 和 C17
  • 其他 STL 改善包括對 std::atomic_refstd::midpoint and std::lerpstd::execution::unseq 的完整支援,以及 std::reverse_copy 和更多項目的最佳化。 您可在變更記錄中找到所有更新。
  • 我們已將 Visual Studio 隨附的 CMake 版本升級為 CMake 3.18
  • 程式碼分析工具現在支援 SARIF 2.1 標準:靜態分析記錄格式的業界標準。 您可在官方規格中深入了解 SARIF 格式的相關資訊。
  • 現在,遺失 Linux 專案的建置工具會在工具列中發出警告,並在錯誤清單中清楚描述遺失的工具。
  • 您現在可偵錯遠端 Linux 系統上的 Linux 核心傾印,或直接從 Visual Studio 偵錯 WSL。
  • 針對產生的 C++ Doxygen 註解,我們新增了其他註解樣式選項 (/*! and //!)。
  • 其他 vcpkg 公告
  • 我們針對未評估的 lambda 新增了編譯器支援,這可讓您在 decltype 規範中使用 lambda。
  • Visual Studio 目前提供輸入時 linter 和修復。 使用 [工具]->[選項]->[文字編輯器]r->[C/C++]->[CodeStyle]->[Linter + 修復] 設定。
輸入時 linter 顯示在 Bool 上使用位元 &,而不是邏輯 && 的警告
輸入時 linter

偵錯工具

.NET Core Linux 核心傾印偵錯支援

在 Windows 上偵錯受控 Linux 核心傾印到目前為止一直是很棘手的情況,因為這通常表示要設定另一個完全鏡像生產的 Linux 環境,然後安裝一套用於分析的工具。 幸好有了 Visual Studio 2019 16.8 Preview 3,您只要將受控 Linux 核心傾印直接拖放到 IDE 即可立即開始偵錯。

.NET 自動分析

.NET 平台上的非同步 (async) 程式設計已有數年歷史,但始終不能盡如人意。 我們引進了受控記憶體傾印分析器,以利識別下列情節與反模式:

  • 非同步中的同步
  • 執行緒集區耗盡

.NET 和 .NET Core 記憶體最忙碌路徑自動分析

這可讓客戶使用記憶體診斷工具視窗中的火焰註釋,以直觀地檢視佔滿記憶體堆積的主要物件類型。

使用 SDK 樣式專案的 Fakes 會產生填充碼問題

使用 SDK 樣式專案的新 Fakes 支援時,有些使用者會在產生填充碼時遇到下列錯誤。

Cannot generate shim for System.DateTime: type is not supported because of internal limitations

在 16.8 Preview 3 中已發行針對此問題的修正程式。 如果您使用的是 16.7.* 版本,您可以使用下列因應措施:

  1. 將 <FakesUseV2Generation>False</FakesUseV2Generation> 新增至 csproj 檔案中的 PropertyGroup。
  2. 將 <Fakes Include="Fakes\*.fakes" /> 新增至 csproj 檔案中的 ItemGroup。
  3. 在 ProjectDir/Fakesassemblies 中將參考新增至產生的 Fakes 組件。

您也可以追蹤開發人員社群意見反應來取得其他更新。

實驗性 Razor 編輯器更新

新的實驗性 Razor 編輯器現在支援下列 Razor 編輯功能:

  • Blazor 燈泡:
    • 解壓縮至程式碼後置*:
    • 從標籤建立元件*
    • 為元件新增 @using 指示詞
    • 完整限定元件標籤名稱
  • C# 燈泡
    • 新增 @using 指示詞
    • 完整限定型別名稱
  • 增強的 Razor 格式設定
  • 從 .razor 檔案重新命名標記中的 Razor 元件
  • 在 Blazor 元件標籤名稱上移至定義
  • C# 暫留顏色標示
  • C# 完成工具提示顏色標示
  • 已關閉 Razor 檔案中的 [尋找所有參考]
  • 改進了 Razor 編輯效能與大型專案及解決方案的穩定性

* 僅適用於本機 Razor 案例,在 Codespaces 或 Live Share 中尚不支援。

若要啟用實驗性 Razor 編輯器,請移至 [工具]>[選項]>[環境]>[預覽功能],選取 [Enable experimental Razor editor] \(啟用實驗性 Razor 編輯器\),然後重新啟動 Visual Studio。

Visual Studio 2019 IDE

  • 使用熟悉的 Visual Studio 帳戶管理體驗來新增 GitHub 帳戶。 然後,版本控制、整合式終端機及其他功能就能提升帳號憑證,以滿足其 GitHub 驗證需求。
使用 GitHub 的內嵌參數名稱提示
在 Visual Studio 中新增 GitHub 帳戶
  • ClickOnce 發行提供者現在可供 .NET Core 3.1 與 .NET 5.0 Windows 傳統型應用程式使用。 若要開始使用,請以滑鼠右鍵按一下 [方案總管] 中的專案,或選取 [建置] > [發行] <[AppName]> 功能表。 您可以在 [資料夾類別] 底下找到 ClickOnce。
使用 GitHub 映像的內嵌參數名稱提示
Visual Studio 中的 ClickOnce 發行提供者

Git 生產力

  • 從 Azure DevOps 工作項目建立新的分支
從 Azure DevOps 工作項目建立新的分支
從工作項目建立新的分支
  • 從 Git 功能表的本機存放庫清單中開啟 Git 存放庫
本機存放庫清單
Git 功能表中的本機存放庫清單
  • 預設的原始檔控制提供者現在是 Git,而不是 TFVC,這可從 [工具] - [選項] - [原始檔控制] 變更

  • 按一下以在 [Git 存放庫] 視窗中於分支記錄之間切換

  • 在開啟存放庫後,在 [方案總管] 中從您存放庫中的解決方案清單檢視並選取

預覽功能切換開關,可在開啟存放庫時顯示檢視清單
預覽功能切換開關,可在開啟存放庫時顯示檢視清單
方案總管中的檢視清單
方案總管中的檢視清單

.NET 生產力

  • .NET 編譯器平台 (Roslyn) 分析器會檢查 C# 或 Visual Basic 程式碼以找出安全性、效能、設計和其他問題。 從 .NET 5.0 開始,這些分析器即隨附於 .NET SDK。 預設已針對以 .NET 5.0 或更新版本為目標的專案啟用分析器。 您可將 EnableNETAnalyzers 屬性設為 true 來啟用以舊版 .NET 版本為目標的專案上程式碼分析。 您可將 EnableNETAnalyzers 設為 false 以停用專案的程式碼分析。 您也可以使用 [專案屬性] 視窗來啟用/停用 .NET 分析器。 若要存取 [專案屬性] 視窗,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後選取 [屬性]。 接著,選取 [程式碼分析] 索引標籤,在此選取或清除啟用 .NET 分析器的核取方塊。
啟用 .NET 分析器的 [專案屬性] 視窗
啟用 .NET 分析器的 [專案屬性] 視窗
  • 現在有一個重構功能,其引進新的 C# 9 not 模式,可在隱藏的運算子出現時比對語法。 將游標放在隱藏項目運算子上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [使用模式比對]
重構 C# 9 not 模式比對語法的引入
重構 C# 9 not 模式比對語法的引入
  • 現在有一種重構的內嵌方法,其可協助以移除原方法宣告的選項來取代在單一陳述式主體內使用的靜態、執行個體和擴充方法。 請將游標放在使用的方法上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 然後選取下列其中一個選項:

選取 內嵌 <QualifiedMethodName> 以移除內嵌方法宣告:

移除宣告的內嵌方法重構
移除宣告的內嵌方法重構

選取 內嵌並保留 <QualifiedMethodName> 以保留原始方法宣告:

保留宣告的內嵌方法重構
保留宣告的內嵌方法重構
  • 從依照 EditorConfig 程式碼樣式設定的範本建立新 C# 或 Visual Basic 的檔案。 建立新檔案時,會自動套用下列程式碼樣式:檔案標頭、使用指示詞排序,以及將 using 指示詞放在命名空間內部/外部。

  • 現在 C# 與 Visual Basic 支援內嵌參數名稱提示,其會在函式呼叫中的每個引數之前插入常值、轉換常值與物件具現化的裝飾。 您必須先開啟此選項,其位在 [工具]>[選項]>[文字編輯器]>[C#] 或 [Basic]>[進階],然後選取 [Display inline parameter name hints (experimental)] \(顯示內嵌參數名稱提示 (實驗性)\)。 然後,內嵌參數名稱提示就會在 C# 或 Visual Basic 檔案中顯示。

內嵌參數名稱提示
內嵌參數名稱提示
  • 您現在可以使用新的擷取基底類別重構,將所選類別中的成員擷取至新的基底類別。 將游標放在類別名稱或反白顯示的成員上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [Pull member(s) up to new base class] \(將成員向上提取到新基底類別\)。 新的 [Extract Base Class] \(擷取基底類別\) 對話方塊隨即開啟,您可以在其中指定基底類別的名稱,以及要放置該類別的位置。 您可以選取要傳輸至新基底類別的成員,然後選取 [抽象化] 欄中的核取方塊,將成員抽象化。
擷取基底類別
擷取基底類別

一旦您選取 [確定],您將會看到新的基底類別與其成員一起加入。

針對 C#,選取 [將 typeof 轉換成 nameof]

將 typeof 轉換為 nameof
將 typeof 轉換為 nameof

針對 Visual Basic,選取 [將 GetType 轉換成 NameOf]

將 GetType 轉換成 NameOf
將 GetType 轉換成 NameOf
  • 程式碼清除 \(部分機器翻譯\) 有新的設定選項,可以在您的 EditorConfig \(部分機器翻譯\) 檔案中,對單一檔案或整個解決方案套用格式設定與檔案標頭喜好設定。
程式碼清除中的格式設定與檔案標頭支援
程式碼清除中的格式設定與檔案標頭支援
  • 現在有新的程式碼修正,可移除不應以傳址方式傳遞引數的 in 關鍵字。 將游標放在錯誤上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [移除 'in' 關鍵字]
移除 in 關鍵字程式碼修正
移除關鍵字程式碼修正中的 `in`
  • 現在有了引進全新 C#9 模式組合器的重構。 除了在適用的情況下建議模式比對將 == 轉換為使用 is 之外,此程式碼修正也會在比對多個不同的模式與否定時,建議使用 andornot 模式組合器。 將游標放在陳述式中。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [使用模式比對]
引進 C#9 模式組合器
引進 C#9 模式組合器
  • 現在,當您嘗試在非抽象的類別中寫入抽象方法時,程式碼修正可讓類別抽象化。 將游標放在方法錯誤上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [將類別設為「抽象」]
[將類別設為抽象]
[將類別設為抽象]
  • 在 16.7 版 Preview 1 中,我們於 DateTime 與 TimeSpan 字串常值中新增了 IntelliSense 完成。 在此版本中,當輸入第一個引號時,此完成清單會自動出現。 在過去,必須鍵入 (Ctrl+space) 才能檢視這份完成清單。 將游標放在 DateTime 或 TimeSpan 字串常值內,然後鍵入第一個雙引號。 您接著將會看到完成選項,以及每個字元所代表之意思的說明。 系統會同時提供日期時間格式和範例。
DateTime 和 TimeSpan 字串常值中的 IntelliSense 完成
DateTime 和 TimeSpan 字串常值中的 IntelliSense 完成
當您鍵入冒號時,這項改進也適用於插入字串
當您鍵入冒號時,這項改進也適用於插入字串
  • 現在有新的程式碼修正,可移除不必要的 pragma 隱藏項目,以及不必要的 SuppressMessageAttributes。 將游標放在 SuppressMessageAttribute 的pragma 警告上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [移除不必要的隱藏項目]
移除不必要的 Pragmas
移除不必要的 Pragmas
移除不必要的 SuppressMessageAttributes
移除不必要的 SuppressMessageAttributes
  • [重新命名] 和 [尋找所有參考] 現在了解全域 SuppressMessageAttribute 隱藏項目之目標字串內的符號參考。
重新命名 SuppressMessageAttribute
重新命名 SuppressMessageAttribute
尋找 SuppressMessageAttribute 的所有參考
尋找 SuppressMessageAttribute 的所有參考
  • Visual Basic 有多種傳遞參數的方式,ByValByRef,而長久以來 ByVal 則為選擇性。 我們現在淡出 ByVal 來表示其為非必要,並以程式碼修正來移除不必要的 ByVal。 將游標放在 ByVal 關鍵字上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 ['ByVal' 關鍵字為非必要,而且可以移除]
Visual Basic 移除 ByVal 重構
Visual Basic 移除 ByVal 重構
  • 現在有多個執行階段的互動式視窗支援,例如 .NET Framework 和 .NET Core。
.NET Core 中的互動式視窗支援
.NET Core 中的互動式視窗支援
  • 新的 RegisterAdditionalFileAction API,可讓分析器作者為其他檔案建立分析器。

在測試總管的 [測試詳細資料] 窗格中將文字換行

這個功能廣受眾人要求,可讓使用者將選取的文字換行或保留預設文字對齊方式。 當不使用文字對齊時,您可以透過換行更輕鬆讀取測試執行的反應狀況,而不需要水平捲軸。 您可以透過測試總管的設定功能表或 [摘要] 窗格的操作功能表啟用此功能。

從 [測試設定] 功能表包裝測試詳細資料
測試設定功能表
透過右鍵操作功能表,將測試詳細資料的文字換行
透過右鍵操作功能表,將測試詳細資料的文字換行

XAML 工具 (WPF、UWP 與 Xamarin.Forms)

XAML 繫結失敗診斷改善

處理 WPF、UWP、WinUI 與 Xamarin.Forms 的開發人員通常必須在其應用程式中偵測並解決 XAML 資料繫結失敗。 為了改善此案例中的診斷工具,我們已新增兩個新的體驗到 Visual Studio 2019 16.8 版或更新版本:

  • XAML 繫結失敗指標圖示:新的 XAML 繫結失敗指標圖示現在會出現在 WPF 與 UWP 專案的應用程式內工具列中,以及包含 Xamarin.Forms 之所有 XAML 專案中的即時視覺化樹狀結構中。 如果偵測到至少一個繫結失敗,此圖示將會顯示紅色指標。 按一下該圖示也會將您帶到新的 [XAML 繫結失敗] 視窗。
繫結失敗圖示 (應用程式內工具列)
繫結失敗圖示 (應用程式內工具列)
  • XAML 繫結失敗視窗:新的 [XAML 繫結失敗] 視窗現在已可供 WPF、UWP、WinUI 與 Xamarin.Forms 專案使用。 這個新的專用體驗會針對繫結失敗資訊提供豐富的使用者介面,這先前僅在輸出視窗中提供。 改進功能包括將失敗視為一組可排序、自訂且可以完全搜尋的資料行。 我們也將類似的錯誤分組在一起,以限制在資料繫結範本失敗的特定組合期間可能發生的雜訊,同時仍然讓所有原始未經處理的錯誤資訊都可供使用,並可透過右鍵功能表選項輕鬆地複製。 (注意:需要 Xamarin 4.5.0.266-pre3 版或更新版本)
  • 瀏覽至來源以進行繫結失敗: 與 WPF 小組合作,我們為那些以 .NET 5 (RC2 或更高版本) 上的 WPF 為目標的客戶啟用了瀏覽至繫結失敗來源的功能。。
XAML 繫結失敗視窗與 LVT 圖示
XAML 繫結失敗視窗與 LVT 圖示

XAML 熱重載

  • Xamarin.Forms「僅變更」XAML 熱重新載入現在支援 UWP:在此版本中,我們開始推出許多使用者所要求功能 \(英文\) 的支援,可在以 UWP 為目標的 Xamarin.Forms 專案中,支援新的僅變更 XAML 熱重新載入。 請注意,此功能仍在開發中,而編輯 XAML 現在會在執行中的應用程式中觸發更新。其他功能,例如應用程式內工具列 (元素選取等) 尚未完全實作,但將包含在未來的發行版本中。
  • XAML 熱重載設定已移至 「偵錯 > 熱重新載入: 在此版本中,我們已將 WPF、UWP 和 Xamarin.Forms 的 XAML 熱重新載入設定合併到 [偵錯 > 熱重新載入] 下方的統一設定畫面。 我們也第一次啟用在每個平台上停用或啟用 XAML 熱重新載入的功能,可讓您完全掌控此功能的可用時間。 (注意: 在此移轉期間將不會變更任何設定,因此您的所有現有選擇在此新位置都會繼續保持有效)
XAML 熱重新載入合併設定
XAML 熱重新載入合併設定

XAML 程式碼編輯器:

  • WinUI 3.0 IntelliSense 支援: 在此版本中,我們已針對使用新的 WinUI 3.0 Preview 3 或更新版本來建置應用程式的開發人員啟用更好的 IntelliSense 支援。 若要深入了解 WinUI 3.0,請參閱文件;若要提供意見反應,請瀏覽 Windows UI XAML GitHub 存放庫 \(英文\)。 注意: 建議在 16.9 Preview 1 上使用最新的 WinUI 3.0 預覽版,以取得更新的工具體驗。
  • 改善 MVVM 支援: 撰寫 XAML 文件時,您可設定 d:DataCoNtext,以為 XAML 文件取得精確的繫結 IntelliSense。 過去,以手動方式指定資料內容類型很麻煩,您必須離開 XAML 文件、尋找所需的檢視模型類型、將其命名空間和名稱複製貼入 d:DataCoNtext 宣告中。 我們在此版本中引進的新功能可供透過會建議可能檢視模型候選項目的燈泡,以快速宣告 d:DataCoNtext。
適用於 MVVM d:DataContext 的 XAML IntelliSense
適用於 MVVM d:DataContext 的 XAML IntelliSense

擴充性

  • 從未參考的 NuGet 套件填入工具箱: 在此版本中,我們新增了在使用未參考的 NuGet 套件控制項填入工具箱時,對 TargetFrameworkMoniker 特定 VisualStudioToolsManifest.xml 檔案的支援。 例如,您的套件可向 .NET Core 3.1 和 .NET 5.0 專案公開不同的控制項集合。

開發人員社群的問題



已知問題

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

意見反應與建議

我們很希望聽聽您的意見! 若有任何問題,請透過安裝程式或 Visual Studio IDE 本身右上角的回報問題選項來通知我們。 意見反應圖示 圖示位在右上角。 您可以在 Visual Studio 開發人員社群中提出產品建議或追蹤您的問題,也可以提出問題、尋找解答及提議新功能。 您也可以透過我們的即時聊天支援取得免費的安裝協助。


部落格

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


Visual Studio 2019 版本資訊歷程記錄

如需舊版 Visual Studio 2019 的相關詳細資訊,請參閱 Visual Studio 2019 版本資訊歷程記錄頁面。


頁首