共用方式為


2019Logo Visual Studio 2019 16.10 版的發行備註



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


注意

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



Visual Studio 2019 16.10 版的新功能

支援時間範圍

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

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

Visual Studio 2019 16.10 版

Visual Studio 2019 封存版本資訊

Visual Studio 2019 部落格

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


16.10.5 Visual Studio 2019 16.10.5 版

2021 年 8 月 10 日發行

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

此版本的 Visual Studio 2019 僅可從 Windows 軟體更新服務 (WSUS) 取得。

本版修正的前幾個主要問題

  • iOS 遠端模擬器現在會與已安裝 Xcode 12.4 或 12.5 的配對 Mac 裝置正常搭配運作。 當配對到安裝 Xcode 12.4 或更高版本的 Mac 裝置時,無法使用下列 Xcode 模擬器功能:
    • 模擬記憶體警告
    • 模擬位置

資訊安全諮詢注意事項

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

存在拒絕服務弱點,其中提供 WebSocket 端點的 .NET (核心) 伺服器應用程式在嘗試讀取單一 WebSocket 框架時可能會陷入無限循環。

CVE-2021-34485 .NET Core 資訊洩漏弱點

使用 Linux 和 macOS 上的全域讀取權限建立由工具所建立的損毀傾印和隨需傾印時,存在資訊洩漏弱點。

CVE-2021-34532 ASP.NET Core 資訊洩漏弱點

如果無法剖析 JWT 權杖,則存在資訊洩漏弱點。

16.10.4 Visual Studio 2019 16.10.4 版

2021 年 7 月 20 日發行

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

本版修正的前幾個主要問題

  • 移除在 memset 中不允許使用的暫存器。
  • 已修正涉及按位非運算子的複雜巢狀運算式的 codegen 錯誤 (bug)。
  • 已修正 VS 圖形分析器的著色器偵錯
  • 已修正在處理類別內範本特製化中的靜態資料成員時所發生的 IntelliSense 損毀問題。
  • 使用 /installer /passive 參數執行時,X64 VC Redist 不再移除執行階段檔案。
  • 已修正在 [Include 目錄] 前面加上 [Include 目錄] 時,Include 搜尋順序可能不正確的問題。
  • 我們已修正由其中一個檢查器延伸模組 (該延伸模組可尋找誤用 VARIANT 中的錯誤) 所引起的效能問題和誤判問題。
  • 我們已修正由其中一個檢查器延伸模組 (該延伸模組可尋找誤用列舉值作為索引的錯誤 (bug)) 所引起的效能問題。
  • 引進 Live Share 語言服務修正程式,以還原共同作業工作階段參與者的主要程式碼編輯功能 (程式代碼完成、語法醒目提示、錯誤等)
  • 在使用自動鎖定模式的情況下,並行分析器應該不會再產生錯誤的警告 C26110 (無法取得鎖定)。
  • C# 和 Visual Basic 編譯程式已修正涉及 InternalsVisibleTo 與其他組件層級屬性衝突的損毀事件。
  • 我們已修正客戶使用 Windows 應用程式封裝專案封裝其專案 (例如 WPF NetCore 應用程式和 Project Reunion 應用程式) 時遇到的問題:

找不到錯誤資產檔案 '...\obj\wappublish\win10-x86\project.assets.json'。 執行 NuGet 套件還原以產生此檔案。 App4 (封裝) C:\Program Files\dotnet\sdk\5.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets 242

此問題是因為封裝專案在錯誤的目錄 win10-$(configuration) 中尋找 project.assets.json 檔案,它應該在 win-$(configuration) 中尋找。

開發人員社群的問題


16.10.3 Visual Studio 2019 16.10.3 版

2021 年 6 月 29 日發行

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

本版修正的前幾個主要問題

  • 修正以下問題:從模組匯入之符號的 [移至定義],有時會移至模組檔案的開頭,而不是符號的定義。
  • 已修正因為文字輸入框的框線色彩亮度比例小於 3:1,視障開發人員很難識別畫面上的焦點的問題。
  • 已修正資料庫專案:從方案總管將檔案拖曳至已開啟的檔案時,會從檔案系統中刪除檔案。
  • 已修正在資料庫專案中使用合併陳述式會導致組建錯誤的問題。
  • 在報告安裝了哪些延伸模組時不再傳送磁碟上的路徑。
  • 修正嘗試關閉快速啟動視窗可能會導致 Visual Studio 損毀的問題。
  • 修正顯示工具視窗有時會使 VS 損毀的問題。
  • 修正當應用程式中載入不相關的 G++/GCC 產生的符號時,C++ [編輯並繼續] 在使用者程式碼中的問題。
  • 修正 iAd 架構中的私人選取器使用方式的問題。
  • 已修正 VS 中的毀損導致 XAML 設計工具發生錯誤
  • 已修正參考 .netcoreapp 專案的 Windows 應用程式封裝專案產生 .msixbundle 的問題。
  • 修正在 WAP 專案上執行快速最新檢查失敗,導致這些專案組建 (而不是略過),即使專案為最新狀態且不需要修改時,進一步導致 IDE 中的累加組建時間增加。

開發人員社群的問題


16.10.2 Visual Studio 2019 16.10.2 版

2021 年 6 月 15 日發行

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

本版修正的前幾個主要問題

  • 程式碼分析中的並行檢查變得更加聰明。 在具有複雜控制流程的情況下,它們更難被欺騙。
  • 此修正會透過略過外部標頭的分析並隱藏來自外部標頭的警告,以還原外部標頭的行為。
  • 已修正 .aspx/ascx 檔案,其中使用者可能會看到不完整的 IntelliSense 或遇到效能緩慢。
  • 已修正在處理大型專案時,Unity CodeLens 提供者的可擴縮性問題。
  • Azure 服務驗證選項頁面中已恢復翻譯的字串。
  • 已修正使用 Resharper 擴充功能時,發生間歇性視覺效果程式碼顯示問題。
  • 已修正某些工具視窗、編輯器和設計工具轉譯地太小而無法顯示任何內容的問題。
  • 修正不論是在執行應用程式或嘗試將應用程式發佈至 App Store 時,Xamarin iOS 缺少應用程式圖示問題。
  • 使用 AOT+LLVM 組建專案未失敗,但出現 XA3001 錯誤。
  • 升級至 Visual Studio 2019 16.10 版之後,在某些情況下,發佈 UWP 應用程式可能會失敗,並出現 [在映像檔中找不到指定的資源名稱] 錯誤訊息。 現在已修正此問題。
  • 已修正導致 Visual Studio 2019 在裝置設定變更時停止回應的問題。
  • 修正 MSBuild 中的三個問題:
    • 避免在 Azure DevOps 中組建時發生 MSB4017 錯誤。
    • $([MSBuild]::MakeRelative()) 再次在其輸入中保留後置斜線。
    • 具有後置 ** 模式的排除 glob 再次排除不含 . 的檔案 「字元」

開發人員社群的問題


16.10.1 Visual Studio 2019 16.10.1 版

2021 年 6 月 8 日發行

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

本版修正的前幾個主要問題

  • 已修正造成 IntelliSense 編譯器損毀的問題。
  • 已修正在方案中開啟 [測試總管] 時,可能會造成 Visual Studio 2019 執行個體關閉的問題。
  • 已修正開發人員從命令列組建部分方案時的失敗問題。
  • 已修正 .NET Core 應用程式的 ClickOnce 發佈失敗問題。
  • 修正呼叫堆疊視窗可能會損毀 Visual Studio 2019 的問題。
  • 修正組建 iOS 繫結專案時,發生 [找不到中繼資料檔案 '***\bin\Debug\NativeLibrary.dll'] 的組建錯誤。

資訊安全諮詢注意事項

CVE-2021-31957 ASP.NET 拒絕服務弱點

當 ASP.NET Core 不正確地處理用戶端中斷連線時,會存在拒絕服務弱點。

開發人員社群的問題


16.10.0 Visual Studio 2019 16.10.0 版

2021 年 5 月 25 日發行

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

C++

  • 所有 C++20 功能現在都可在 /std:c++latest 參數下取得。 儘管 Microsoft Visual C++ 對 C++20 標準 (目前由 ISO 發佈) 的實作已經完成,但是一些關鍵的 C++20 程式庫功能預計會由即將發佈的瑕疵報告 (ISO C++20 錯誤修正) 進行修改,這些瑕疵報告可能會以一種 ABI 不相容的方式對它們進行變更。 如需詳細資訊,請參閱 Microsoft/STL 問題 #1814
    • 16.10 中已新增 C++20 即時函式和 constinit 支援
    • 最後的 <chrono>片段:新的時鐘、閏秒、時區和剖析
    • 文字格式的 <format> 實作
  • 除了 x64 之外,x86 和 ARM64 現在也提供 /openmp:llvm
  • 現在可以使用自訂的編譯警告層級和程式碼分析設定,將 Include 目錄指定為外部目錄。
  • 已新增 /await:strict 參數,以在舊版語言模式中啟用 C++20 樣式協同程式。
  • std::coroutine_handle<T> 的偵錯工具視覺效果現在會顯示原始協同程式函式名稱和簽章,以及目前的暫止點。
  • 已新增 CMakePresets 的支援。
  • 在 Visual Studio 中新增遠端連線時,您現在必須接受或拒絕伺服器所提供的主機金鑰指紋。
  • 已將 /external 參數新增至 Microsoft Visual C++,以指定應該視為外部的標頭,以供警告之用。

Docker 工具改進

  • 能夠建立啟動設定檔,以設定要在 Compose 檔案中啟動哪些服務。
  • 標記映像的能力。
  • 已新增容器的 [磁碟區] 索引標籤。
  • 已新增容器的 [標籤] 索引標籤。
  • 已新增映像的 [標籤] 索引標籤。
  • 容器現在會依 Compose 專案分組。

編輯器

  • 如果使用者想要不那麼擁擠的體驗,可以透過在 Visual Studio 搜尋 (Ctrl+Q) 中搜尋「行間距」來修改行間距。 此選項位於 [文字編輯器\一般] 下。
  • 在 [在檔案中尋找] 和 [尋找所有參考] 都有可保留結果的控制項。 根據社群的意見反應,我們新增預設會將 [保留結果] 選項切換為開啟的選項。 您可以在 Visual Studio 搜尋 (Ctrl+Q) 中搜尋 [預設保留搜尋結果] 來找到此選項。 此選項位於 [環境\尋找和取代] 下。 請注意,使用者目前使用 [在檔案中尋找] 只能獲得 5 個結果,使用 [尋找所有參考] 則可以多獲得 5 個結果。
  • [在檔案中尋找] 中的新選項可讓使用者執行其他搜尋,並將這些結果附加至之前的搜尋。

編輯器擴充性

  • 管理 IntraTextAdornmentTags 的程式碼行為已變更。 有了這項變更,就像任何其他 ITagger 一樣,在基礎標籤變更時,您必須引發標記已變更事件。 否則,您的標籤可能永遠不會更新。

偵錯與診斷

  • 記憶體傾印的診斷分析現在包含受控 Linux 核心傾印。

Git 生產力

  • 透過深層連結跳到 Web 以建立新的提取要求,並查看 GitHub 上的提取要求或 Git 功能表中的 Azure DevOps。
  • 使用分支選擇器中的單一選取,簽出本機和遠端分支。
  • 透過操作功能表,從存放庫選擇器中移除項目。
  • 透過 [Git] > [設定],在開啟 Git 存放庫時,開啟方案的自動載入。
  • 透過 [Git] > [設定],切換按兩下以從 [Git 存放庫視窗] 簽出分支的行為。
  • 從 [Git 變更] 視窗溢位功能表,同步處理 (提取然後推送) 分支與多個遠端。
  • 從溢位功能表自訂可見的 [Git 變更] 視窗工具列動作 (擷取、提取、推送、同步處理)。
  • 從 [Git 變更] 視窗溢位功能表,在瀏覽器中開啟您的存放庫。
  • 從狀態列搜尋和簽出本機和遠端分支。
  • 從狀態列搜尋和切換本機 Git 存放庫。
  • 已修正 Git 功能表中的本機存放庫清單未在 Visual Studio 啟動時載入的問題。
  • 開啟存放庫時,將巢狀專案子存放庫新增至本機存放庫清單。
  • 透過 [Git] > [設定] 切換存放庫時,保持方案開啟。
  • 透過 [Git] > [設定] 開啟存放庫時,關閉開啟的資料夾。
  • 透過狀態列中的 [未推送的提交] 按鈕和 Git 功能表中的 [同步] 命令中,同步處理分支與遠端。
  • 即使沒有任何傳入認可,仍會從 [Git 存放庫] 視窗歷程記錄窗格擷取和提取。
  • 檢視 [認可詳細資料] 和 [Git 存放庫] 視窗中內嵌的檔案變更比較。
  • 開啟 Azure DevOps Git 存放庫時,自動重新連線或提示建立初始 Azure DevOps 連線。
  • 使用可見的分支名稱合併和重訂基底,取代混淆的來源/目標術語。
  • 改善 [方案總管] 中原始檔控制字符的效能和可靠性。
  • 即使在空白時,仍保留 [Git 存放庫] 視窗中的傳入/傳出區段。
  • [Git 變更] 視窗中將多個遠端的 [擷取/提取/推送] 下拉式清單合併至單一 [動作] 功能表。

.NET 生產力

  • 方法呼叫中的引數完成
  • EditorConfig UI
  • 以視覺化方式檢查和瀏覽繼承鏈結
  • 轉換、索引子和運算子的 IntelliSense 完成
  • 來源產生器的偵錯工具支援
  • Visual Basic 的程式碼清除支援
  • [編輯並繼續 (EnC)] 更新
  • 移除未使用的參考
  • 智慧分欄線
  • 簡化 LINQ 運算式重構
  • 列舉值的 IntelliSense 完成
  • IntelliSense 完成模式設定
  • 新行的程式碼樣式喜好設定
  • 尋找來源產生器的所有參考支援

Razor (ASP.NET Core) 預覽編輯器

  • IntelliSense 完成模式
  • 移至泛型元件的定義支援
  • 索引標籤和空格的新程式碼樣式設定
  • [工具選項] 中的 Razor 文字編輯器現在稱為 Razor (ASP.NET Core)

測試體驗協助工具改善

  • Console.Writeline 現在會顯示在 [測試總管] 中
  • [測試輸出] 現在可以保留標籤,因此甚至可以從記錄檔中瀏覽超連結和堆疊追蹤連結。
  • 當輸出超過 300 個字元,或有超過 10 個檔案附加至測試結果時,就會為單一測試結果建立記錄檔。
  • 記錄檔現在可以在預覽中開啟,因此更容易管理您的索引標籤。
  • 記錄檔和 [測試總管] 支援使用 Ctrl PgUp/PgDn 來瀏覽游標,以及使用 Shift+Ctrl PgUp/PgDn 進行選取。
  • 記錄檔編輯器現在使用 IVsTextView 介面,這表示現在能夠開啟非常大的文字檔。 這樣使用者就無需 Copy All 截斷記錄並可在單獨的編輯器 (例如記事本) 中開啟它們。 針對 MSTest,我們現在也包含可彙總所有輸出的單一記錄檔,而不是只針對每個資料列有個別的記錄檔。
  • 您現在可以使用 dotnet cli 在 Ubuntu 和 Alpine 上的命令列取得跨平台程式碼涵蓋範圍。 對於想要在以這些平台為目標之機器上取得程式碼涵蓋範圍的使用者,您現在可以新增您在 Windows 上通常會使用的相同程式碼涵蓋範圍集合命令。 如需 dotnet 測試的詳細資訊,請參閱文件。
  • 現在,[測試總管] 中的 [全部折疊] 按鈕旁會有一個 [全部展開] 按鈕。 可透過鍵盤快速鍵使用此命令 (Ctrl+A、Ctrl+ 向右鍵),但更多意見反應表示新增一個按鈕值得額外的 UI。 一如往常,感謝您透過 https://developercommunity.visualstudio.com/ 讓我們知道您的想法。
  • [測試總管] 顯示「過時」的方式也有一些稍微變更。「過時」是灰色或「淡出」測試結果,指出結果不是來自最新測試回合。 如果結果不是最近測試回合的一部分,它會顯示為過時。 之前,新的測試發現 (甚至重新探索的舊測試結果) 也會以純色圖示顯示。 這造成一些困惑,為何一些「未執行」測試顯示為淡出,而其他的則沒有。 此變更會降低過時的複雜性。
  • 使用持續性測試結果功能 (在 16.2 版中新增),即使已關閉並重新開啟 Visual Studio,您仍可以看到上次測試回合的測試結果。 這可協助使用者記住他們離開的位置,並提供更多內容,而不需要另一個測試回合。 我們也修改了保存結果的行為,因此它們一律會顯示過時。 這可以更清楚地表示它們不是來自目前 Visual Studio 工作階段期間所執行的測試回合。

Web 工具

  • 切換至適用於 Azure AD 佈建的 API V2
  • [Azure 應用程式組態即連線服務] 現在支援動態設定

Windows 應用程式封裝專案相依性樹狀結構

  • 將 [相依性樹狀結構] 新增至 WAP 專案

XAML 工具的改善

  • 已為 Xamarin.Forms 客戶改善 XAML IntelliSense 和 XAML 熱重新載入
  • 引進 XAML 範例資料,用於在 WPF 中選取 ItemsControls
  • 已新增燈泡,以快速存取經常編輯的屬性
  • 已在 XAML 編輯器中新增新的燈泡,以協助建立檢視模型

Service Fabric 工具

  • 在 Service Fabric 應用程式中引進 StartupServices.xml

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

Docker 工具

容器工具視窗

在此版本中,我們新增了 [容器] 工具視窗,讓您更輕鬆地檢視和與容器和映像互動。 只要瀏覽至 [檢視 > 其他視窗 > 容器] 即可試用新功能。

  • 容器現在會依 Compose 專案分組。 這可讓您輕鬆地判斷哪些容器代表您的應用程式。 此外,我們也在 [容器] 中新增了 [標籤] 索引標籤,讓您可以輕鬆地查看您在開發期間所使用的標籤。

撰寫群組選項和容器標籤索引標籤

  • 我們也已新增映像的 [標籤] 索引標籤。

映像 [標籤] 索引標籤

  • 新的 [磁碟區] 索引標籤可讓您查看執行中容器的磁碟區,甚至開啟 Visual Studio 中的檔案。

容器 [磁碟區] 索引標籤

  • 我們現在支援從 [容器] 工具視窗標記映像的功能。 在 [映像] 中,以滑鼠右鍵按下映像,然後選取 [標籤]

標記映像

組成
  • Visual Studio 中的 Docker Compose 工具現在可讓您執行 Compose 檔案中定義的任何服務組合。 開啟 [偵錯] 下拉式清單,或以滑鼠右鍵按一下您的 docker-compose 專案,然後選取 [管理 Docker Compose 啟動設定] 以開始使用。

管理 Docker Compose 啟動設定

Git 生產力

  • 為了讓您在 Visual Studio 中更容易建立提取要求,我們將具有深層連結快速鍵的功能表項目新增至網頁,讓您建立 PR 或檢視存放庫的 PR 清單。 功能表會根據您的存放庫位於 GitHub 或 Azure DevOps 上而動態顯示。

從 Git 功能表建立 PR 並檢視網頁上的 PR 清單

  • 狀態列和 [Git 變更] 視窗中的分支選擇器現在會在您單一選取分支時簽出本機或遠端分支。 您可以在操作功能表中找到其他動作。

按一下滑鼠左鍵以簽出分支,然後以滑鼠右鍵按一下以取得其他動作

  • 狀態列中的新存放庫選擇器在按一下滑鼠右鍵時會顯示操作功能表,可讓您從清單中移除項目。

透過操作功能表,從存放庫選擇器清單中移除項目

  • 使用存放庫選擇器或 Git 功能表本機存放庫清單時,開啟存放庫將不再自動載入方案。 相反地,您會在可從中選取的清單中看到可用的資料夾檢視和方案。 您可以切換核取方塊,透過 [Git] > [設定] 變更此行為。

  • 您可以按兩下分支名稱,選擇從 [Git 存放庫] 視窗簽出分支。 如果您想要變更此行為,請切換 [Git] > [設定] 中的核取方塊。

切換自動 SLN 載入和分支簽出的設定。

  • 您現在可以從 [Git 變更] 視窗執行更多動作。 工具列圖示是可自訂的,您可以選擇要顯示的動作。 您可以從溢位功能表同步處理多個遠端。 您可以在瀏覽器開啟存放庫的遠端網頁。

[Git 變更] 溢位功能表,其中包含 [同步]、[在瀏覽器中開啟] 和 [工具列動作] 的標註。

  • 搜尋本機和遠端分支,並從狀態列分支選擇器執行一般分支動作。

狀態列中的分支選擇器。

  • 從狀態列存放庫選擇器搜尋和切換本機 Git 存放庫。

狀態列中的存放庫選擇器。

  • 已修正 Git 功能表中的本機存放庫清單未在 Visual Studio 啟動時載入的問題
  • 我們已在 [Git] > [設定] 中新增兩個新選項,以管理您開啟和切換存放庫的方式。 切換至另一個存放庫時,您現在可以讓目前的方案保持開啟

用於讓解決方案保持開啟的設定。

  • 您也可以選擇在開啟存放庫時,不要載入存放庫根資料夾。

用於開啟資料夾的設定

  • 透過狀態列中的 [未推送的提交] 按鈕和 Git 功能表中的 [同步] 命令,同步處理 (提取然後推送) 分支與遠端。

狀態列中的 [同步] 按鈕。

  • 即使沒有任何傳入認可,仍會從 [Git 存放庫] 視窗歷程記錄窗格擷取和提取。 從狀態列或鍵盤快速鍵 Ctrl+0+Y 存取這些區段。

[Git 存放庫] 視窗中的傳入區段,其中包含 [擷取] 和 [提取] 按鈕的標註。

  • 在 [Git 存放庫] 視窗中選取 [認可],以檢視其詳細資料和檔案變更的比較,而不需要瀏覽至其他視窗。 選取兩個認可,然後按一下滑鼠右鍵,以在同一個視窗中進行比較。 將詳細資料彈出至自己的視窗,取得全螢幕可見度,以深入探討變更。

[Git 存放庫] 視窗中的內嵌認可詳細資料和檔案比較。

  • 檢視檔案中的刪除和插入數目,並變更比較的配置。

已彈出的 [認可] 視窗,其中包含工具列中檔案變更和版面配置檢視按鈕數目的標註

  • 開啟 Azure DevOps Git 存放庫時,自動重新連線或提示建立初始 Azure DevOps 連線。 這可讓您存取已開啟存放庫的工作項目和組建。

[Git 變更] 視窗中的資訊列提示您連線到目前存放庫的 Azure DevOps。">

  • 解決重訂基底或合併衝突時,合併編輯器和操作功能表會顯示目前和傳入分支的分支名稱。 這會修正混淆的來源和目標術語

解決衝突時的操作功能表會顯示分支名稱。

重訂基底和合併編輯器會在標題中顯示分支名稱。

.NET 生產力

  • 我們已新增 [移除未使用的參考] 命令,讓您清除不使用的專案參考和 NuGet 封裝。 此選項預設為關閉,因此您必須在 [工具]>[選項]>[文字編輯器]>[C#]>[進階] 中啟用此選項,然後選取 [在方案總管 (實驗性) 中顯示「移除未使用的參考」命令]。 啟用此選項之後,[移除未使用的參考] 命令會出現在 [方案總管] 中,專案名稱或相依性節點的右鍵功能表中:

[移除未使用的參考] 命令

選取 [移除未使用的參考] 將會開啟一個對話方塊,您可以在其中檢視即將移除的所有參考,並有選項可讓您保留您想要保留的參考:

[移除未使用的參考] 對話方塊

  • 我們新增了一個名為 [智慧分欄線] 的新命令,會在使用 Shift+Enter 做為認可字元時,自動插入一組大括弧,並將插入點放在這些大括弧內。 [智慧分欄線] 適用於需要大括號以及屬性、事件、欄位和物件建立運算式的所有型別宣告。 下列範例顯示類別和欄位上使用的 [智慧分欄線]。 如果欄位結尾沒有分號,輸入 Shift+Enter 會藉由新增一組大括號,將欄位轉換成屬性。 您可以再次按 Shift+Enter 以復原認可,這也會在欄位結尾自動新增分號:

智慧分欄線

  • 現在有可以簡化 LINQ 運算式的重構,這將刪除對 .Where() 方法的 Enumerable 的不必要呼叫,進而協助改進效能和可讀性。 將游標放置在 LINQ 運算式。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [簡化 LINQ 運算式]

簡化 LINQ 運算式

  • 現在,當型別已知時,即使沒有輸入 Enum 名稱,也會對 Enum 值進行 IntelliSense 完成。

列舉值的 IntelliSense 完成

  • 我們已新增 IntelliSense 完成模式設定,讓您能夠設定預設完成選項。 此新設定可在 [工具]>[選項]>[文字編輯器]>[進階]>[預設 IntelliSense 完成模式] 找到,您可以從以下選項中進行選擇:[上次使用],它將保留您上次按下 Ctrl+Alt+空格鍵使用的設定、[僅索引標籤],僅在索引標籤上完成,以及 [自動],這是目前的預設行為,將在標點符號和特殊字元上完成。

IntelliSense 完成模式設定

  • 我們已新增新行的程式碼樣式喜好設定。 您可以使用 EditorConfig 檔案或在 [工具]>[選項]>[文字編輯器]>[C#]>[程式碼樣式]>[新行喜好設定 (實驗性)]內設定這些喜好設定。

新行的程式碼樣式選項

例如,您可以設定程式碼樣式喜好設定來報告診斷,並提供程式碼修正,以移除額外的空白行:

程式碼修正會移除額外的空白行

  • 現在支援 [來源產生器] 的 [尋找所有參考],可讓您在來源產生的文件中尋找參考。

  • 現在有一個完成選項,可在撰寫方法呼叫時自動插入引數。 此功能預設為關閉,因此您必須在 [工具] > [選項] > [文字編輯器] > [C#] > [IntelliSense] 中啟用此功能,然後選取 Tab 兩次以插入引數 (實驗性)。 開始撰寫方法呼叫,然後按 Tab 鍵兩次 (tab+tab)。 請注意,方法呼叫會根據方法的預設值包含引數。 然後,您可以按向上鍵和向下鍵,使用參數資訊來循環瀏覽您想要插入的引數清單。 您也可以開始輸入引數來顯示 IntelliSense 完成清單,並輸入分號來認可引數,並將分號新增至方法呼叫的結尾。

方法呼叫引數完成

  • 我們已建立 EditorConfig 的 UI。 從您的方案開啟任何 C# 或 Visual Basic EditorConfig 檔案。 請注意,新的 UI 將會開啟,同時顯示 C# 和 Visual Basic 的程式碼樣式和程式碼品質設定選項。

EditorConfig UI

  • 現在有一個視覺表示法可供瀏覽和檢查繼承鏈結。 此選項預設為關閉,因此您必須在 [工具] > [選項] > [文字編輯器] > [C#] > [進階] 中開啟此選項,然後選取 [顯示繼承邊界]。 啟用 [繼承邊界] 會將新圖示新增至代表程式碼實作和覆寫的邊界。 按一下 [繼承邊界] 圖示會顯示您可以選取以瀏覽的繼承選項。

繼承邊界圖示

  • .現有有一個適用於轉換、索引子和運算子的 IntelliSense 完成。

轉換、索引子和運算子的 IntelliSense 完成

  • 現在提供 [來源產生器] 的偵錯工具支援。 您必須先從 Visual Studio 安裝程式安裝 .NET Compiler Platform SDK 元件。 接著,您必須將 <IsRoslynComponent>true</IsRoslynComponent> 屬性新增至您的專案檔。 接下來,在 [專案屬性偵錯] 頁面中啟用 [Roslyn 元件] 偵錯工具選項,然後選取適當的目標專案。 接下來,在產生器專案上按 F5,這會啟動 CSC.exe/VBC.exe,以組建目標專案,讓您偵錯產生器程式碼。

來源產生器偵錯工具

來源產生器偵錯工具目標專案

在此版本中,我們也在 Visual Studio 中新增了下列 [編輯並繼續 (EnC)] 偵錯體驗的增強功能:

  • 現在可以在部分類別內的程式碼中套用變更。
  • 您現在可以在 [來源產生] 的檔案內套用變更。
  • 現在可以新增和/或變更 using 指示詞。
  • 可靠性和記憶體耗用量降低的改善。

所有三項變更都可在 EnC 目前支援的位置使用,並且同時使用 C# 和 Visual Basic 原始程式檔。

偵錯工具與診斷

  • 我們已開發數個分析器,以協助攔截受控記憶體傾印中的常見問題。 此分析現在可以在受控 Linux 核心傾印上執行。

自動分析記憶體傾印

感謝您

最後但並非最不重要的一點是,非常感謝本月為 .NET Productivity (又名 Roslyn) 做出貢獻的以下人員Roslyn):

Razor (ASP.NET Core) 預覽編輯器

新的預覽 Razor 編輯器現在支援下列 Razor 編輯功能:

  • IntelliSense 完成現在會篩選 HTML 元件、TagHelper 元素和 C# 屬性:

Razor IntelliSense 篩選

  • C# 覆寫的 IntelliSense 完成。
  • 移至泛型元件的定義支援。
  • 索引標籤與空格的新程式碼樣式設定選項。 輸入、格式設定及建立新的 Razor 檔案時,將會遵守這些程式碼樣式。 您可以在 [工具] > [選項] > [文字編輯器] > [Razor (ASP.NET Core)] > [索引標籤] 中設定索引標籤和空格。
  • [工具選項] 中的 Razor 文字編輯器已從 [ASP.NET Core Razor 語言服務] 重新命名為 [Razor (ASP.NET Core)]

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

測試體驗協助工具改善

  • Console.Writeline 現在會顯示在 [測試總管] 中! 長輸出會在 [測試詳細資料摘要] 窗格中顯示為可摺疊區段。 特定長度的輸出會顯示前幾行然後截斷,並提供選項以在不同的視窗中開啟測試記錄檔。 如果有超過 20 個框架,堆疊追蹤會截斷,然後只會顯示第一個和最後 10 個框架。 截斷設計的一個重要部分也著重於在測試回合具有大型輸出時降低 VS 凍結。 具有大型輸出的測試將不再封鎖 UI 執行緒。

測試輸出包含 Console.Writeline

  • [測試輸出] 現在可以保留標籤,因此甚至可以從記錄檔中瀏覽超連結和堆疊追蹤連結。 這些連結現在也適用於鍵盤。

測試輸出會保留超連結和堆疊追蹤

測試記錄也會保留超連結和堆疊追蹤

  • 當輸出超過 300 個字元,或有超過 10 個檔案附加至測試結果時,就會為單一測試結果建立記錄檔。 記錄檔現在可以在預覽中開啟,因此更容易管理您的索引標籤。 記錄檔和 [測試總管] 支援使用 Ctrl PgUp/PgDn 來瀏覽游標,以及使用 Shift+Ctrl PgUp/PgDn 進行選取。

使用鍵盤快速鍵可以更輕鬆地選取測試記錄

  • 記錄檔編輯器現在使用 IVsTextView 介面,這表示現在能夠開啟非常大的文字檔。 這樣使用者就無需 Copy All 截斷記錄並可在單獨的編輯器 (例如記事本) 中開啟它們。 針對 MSTest,我們現在也包含可彙總所有輸出的單一記錄檔,而不是只針對每個資料列有個別的記錄檔。

測試工具

  • 您現在可以使用 dotnet cli 在 Ubuntu 和 Alpine 上的命令列取得跨平台程式碼涵蓋範圍。 對於想要在以這些平台為目標之機器上取得程式碼涵蓋範圍的使用者,您現在可以新增您在 Windows 上通常會使用的相同程式碼涵蓋範圍集合命令。 如需 dotnet 測試的詳細資訊,請參閱文件。
  • 現在,[測試總管] 中的 [全部折疊] 按鈕旁會有一個 [全部展開] 按鈕。 可透過鍵盤快速鍵使用此命令 (Ctrl+A、Ctrl+ 向右鍵),但更多意見反應表示新增一個按鈕值得額外的 UI。 一如往常,感謝您透過 https://developercommunity.visualstudio.com/ 讓我們知道您的想法。
  • [測試總管] 顯示「過時」的方式也有一些稍微變更。「過時」是灰色或「淡出」測試結果,指出結果不是來自最新測試回合。 如果結果不是最近測試回合的一部分,它會顯示為過時。 之前,新的測試發現 (甚至重新探索的舊測試結果) 也會以純色圖示顯示。 這造成一些困惑,為何一些「未執行」測試顯示為淡出,而其他的則沒有。 此變更會降低過時的複雜性。
  • 使用持續性測試結果功能 (在 16.2 版中新增),即使已關閉並重新開啟 Visual Studio,您仍可以看到上次測試回合的測試結果。 這可協助使用者記住他們離開的位置,並提供更多內容,而不需要另一個測試回合。 我們也修改了保存結果的行為,因此它們一律會顯示過時。 這可以更清楚地表示它們不是來自目前 Visual Studio 工作階段期間所執行的測試回合。

最後一個 Visual Studio 工作階段的持續性測試結果會以淡化的顏色來顯示

Web 工具

動態設定允許使用中介軟體自動重新整理設定資源。 [應用程式組態即連線服務] 現在可以自動將動態設定整合到您的應用程式中。 若要使用此連線服務,請按一下 [已連線的服務],然後將 [Azure 應用程式組態] 新增為 [服務相依性]

Windows 應用程式封裝專案相依性樹狀結構

  • 繼去年在 Windows 應用程式封裝專案 (WAP) 中啟用 NuGet 封裝參考的工作之後,我們在 WAP 的 [方案總管] 體驗中啟用了新的 UI。 舊體驗未顯示這些封裝參考,或可讓您透過 UI 新增 NuGet 封裝。

Windows 應用程式封裝專案舊版使用者介面。

  • 在新體驗中,在 CPS 和 .NET 專案系統的協助下,我們啟用了 [相依性樹狀結構],以繼續透過 [應用程式] 子樹狀結構顯示專案參考,但也提供 [封裝] 子樹狀結構,讓您同時管理 NuGet 封裝。

Windows 應用程式封裝專案新版使用者介面。

XAML 工具改善 (WPF 與 Xamarin.Forms)

Xamarin.Forms

在此版本中,我們為 Xamarin.Forms 客戶的 XAML IntelliSense 和 XAML 熱重新載入進行了兩項小型改善。 熱重新載入 [僅限變更] 將不再對以下項目回報誤報:

  • VisualStateManager 中的 Setter 參考屬性而不指定型別,例如 <Setter Property="BackgroundColor" Value="Red">
  • 合併的 ResourceDictionaries 未包裝至 <ResourceDictionary.MergedDictionaries> 元素

範例:

    <Application>
    <Application.Resources>
        <ResourceDictionary Source='Colors.xaml'/>
        <Style TargetType='Label'> ... <Style>
    </Application.Resources>
    </Application>

XAML 範例資料

在此版本中,我們引進了將一般範例資料新增至 ItemsControls 的新方法,進一步強化了 XAML 設計工具的設計時間資料功能。 此功能僅適用於 WPF 中的 ListBox、ListView 和 DataGrid。

  • 您可以在 ListBox、ListView 或 DataGrid 上設定 d:ItemSource='{d:SampleData}' 來啟用範例資料
  • 這只會在設計工具中填入一組符合 DataTemplates 和繫節路徑的 5 個項目
  • 您可以變更使用 ItemCount 屬性產生的項目數,例如:d:ItemSource='{d:SampleData ItemCount=3}'

ListBox 顯示範例資料。

XAML 設計工具快速動作

  • [XAML 設計工具] 中所選控制項角落附近的新燈泡可用來快速存取該控制項的常用編輯屬性。

  • 支援的控制項包括:

    • UWP:框線、按鈕、畫布、核取方塊、下拉式方塊、方格、HyperlinkButton、影像、ListBox、ListView、NavigationView、選項按鈕、滑桿、StackPanel、TextBlock
    • WPF:框線、按鈕、畫布、核取方塊、下拉式方塊、方格、影像、標籤、ListBox、ListView、StackPanel、TextBlock、TextBox
  • 這項功能適用於 UWP、WPF .NET Core 和 WPF .NET Framework (在選項對話方塊中啟用的 [適用於 .NET Framework 的新 WPF XAML 設計工具] 預覽功能)。

  • XAML 設計工具快速動作也有擴充性模型。 如需建立您自己的動作的詳細資訊,請參閱 XAML 設計工具擴充性 GitHub

按鈕上的 XAML 設計工具快速動作

適用於 XAML 的 MVVM 工具

在此版本中,我們已在 XAML 編輯器中引進燈泡來建立檢視模型。 當我們偵測到專案中正在使用 MVVM 架構時,這個燈泡會顯示在 XAML 文件的根元素上。 對話方塊允許自訂產生的檢視模型命名空間、資料夾和繼承的基底檢視模型。

建立檢視模型燈泡體驗

燈泡也會將產生的檢視模型設定為 XAML 文件的 x:DataType(Xamarin.Forms) 或 d:DataContext(all other platforms),讓使用者進一步利用 XAML 編輯器燈泡,在檢視模型中產生繫節的屬性和命令。

Service Fabric 工具

這項功能會在 Service Fabric 應用程式設計中引進 StartupServices.xml 檔案。 此檔案裝載 ApplicationManifest.xml 的 DefaultServices 區段。 透過此實作,DefaultServices 和服務定義相關參數會從現有的 ApplicationManifest.xml 移至名為 StartupServices.xml 的新檔案。 此檔案會用於 Visual Studio 中的每個功能 (組建/重建/F5/Ctrl+F5/發佈)。

本版修正的前幾個主要問題

  • 已修正 C# 開發人員叫用 Edit.SmartBreakline 命令會移除 Property 存取子中所有內容的問題。
  • 已修正開發人員在更新 codestyle 設定時,可能會在所有 Visual Studio 執行個體中套用變更,而不是只套用在所需資料夾內的問題。
  • 每當開啟原生或合併專案時,就會顯示 [套用程式碼變更] 圖示。 只有在開發人員開始偵錯之後,才會啟用它。
  • 修正 AudioUnitPropertyIDType 的中斷性變更
  • 已修正使用 UWP 單元測試架構的開發人員無法在遠端裝置上執行測試的問題。

開發人員社群的問題

開發人員社群有此發行版本所有發行項目的完整清單。

以下是 16.10 發行版本的部分投票數最高的問題:


已知問題

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

意見反應與建議

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


部落格

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


Visual Studio 2019 版本資訊歷程記錄

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


頁首