注意
不再支援此版本的 Visual Studio 2019。 支援的最新版本是 16.11。 更新您的安裝或升級至 最新版本的 Visual Studio, 以維持支援。
如需 Visual Studio 2019 所有版本資訊的清單,請參閱 版本歷程記錄頁面。
這很重要
這不是 Visual Studio 的最新版本。 若要下載最新版本,請流覽 https://visualstudio.microsoft.com/downloads/ 並參閱 Visual Studio 2022 版本資訊。
Visual Studio 2019 16.10 版
- 2021 年 7 月 20 日 — Visual Studio 2019 16.10.4 版
- 2021 年 6 月 29 日 — Visual Studio 2019 16.10.3 版
- 2021 年 6 月 15 日 — Visual Studio 2019 16.10.2 版
- 2021 年 6 月 8 日 — Visual Studio 2019 16.10.1 版
- 2021 年 5 月 25 日 — Visual Studio 2019 16.10.0 版
Visual Studio 2019 部落格
Visual Studio 2019 部落格是由 Visual Studio 工程小組發行的官方產品見解。 您可以在下列文章中找到有關 Visual Studio 2019 版的深入資訊:
- Visual Studio 2019 v16.10 與 v16.11 Preview 1 現已推出!
- 在 Visual Studio 中使用 Git 增強生產力
- 立即可用! Visual Studio 2019 v16.9 與 v16.10 Preview 1
- Visual Studio 2019 v16.9 Preview 3 現已推出!
- Visual Studio 2019 v16.9 版 Preview 2 以及新年新希望正朝您而來!
- Visual Studio 2019 v16.8 與 v16.9 預覽現已推出
- Visual Studio 2019 v16.8 Preview 3.1 的新功能 \(英文\)
- Visual Studio 2019 v16.8 版 Preview 2 新功能現已發行! (英文)
- Visual Studio 2019 16.7 版與 16.8 版 Preview 1 現已發行!
- Visual Studio 2019 16.7 版 Preview 2 現已推出!
- Visual Studio 中 Git 體驗的絕佳新更新 (英文)
- 於今日發行! Visual Studio 2019 v16.6 與 v16.7 Preview 1 \(英文\)
- Visual Studio 2019 16.6 版 Preview 2 的新功能 (英文)
- Visual Studio 2019 16.5 版現已推出! (英文)
- 'Tis the Season for Visual Studio 2019 v16.4 Release (發行 Visual Studio 2019 16.4 版的季節到了)
- Visual Studio 2019 v16.4 Preview 2, Fall Sports, and Pumpkin Spice (Visual Studio 2019 v 16.4 Preview 2、秋季運動和南瓜香料)
- Visual Studio 2019 版本 16.3 中的 .NET Core 支援及更多功能 - 現在更新!
- Visual Studio 2019 16.3 版 Preview 2 和 Visual Studio 2019 for Mac 8.3 版 Preview 2 已發行!
- Visual Studio 2019 16.2 版與 16.3 版 Preview 1 現已可供使用
- Visual Studio 2019 16.2 版 Preview 2
- Visual Studio 2019 版本 16.1 和 16.2 預覽版
- Visual Studio 2019:撰寫程式碼的速度更快。 聰明工作。 創造未來。
Visual Studio 2019 16.10.5 版
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 權杖,則存在資訊洩漏弱點。
Visual Studio 2019 16.10.4 版
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) 中尋找。
開發人員社群的問題
- 外部標頭的編譯錯誤
- 分析器 C26110 的鎖定警告不正確
- 在 InternalsVisibleTo 屬性中宣告組件時,升級至 v16.10 Visual Studio 之後,就會發生內部編譯器錯誤
- 隨附於 Visual Studio 16.10.2 的 Vcredist_x64.exe (14.29.30038.0) 在第二次使用 /passive 參數安裝後,不正確地移除 msvcp140.dll
- VS 16.10.1 程式碼產生問題 (僅限 x86)
- Address Sanitizer 應該會允許觸發損毀傾印,而不需要使用環境變數
- 按一下頂點著色器後方的三角形以啟動著色器偵錯時,圖形分析器停止運作
- Vsftest : 測試 NMI
- Project Reunion 發佈問題
- LKG12 WAVE2 中的工具在發行之前需要更新
- 無法將 WinUI 3 應用程式封裝到 MSIX
- 圖形偵錯工具 - 更新至 16.10.3 之後,著色器偵錯中斷?
- 無法使用 Project Reunion 0.8 封裝 WinUI 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 中的累加組建時間增加。
開發人員社群的問題
-
[C++, IntelliSense, 16.7.7]工具提示中成員函式指標的大小錯誤 - 處理 SQL Server 專案時 16.9.2 發生凍結
- C++20 IntelliSense 在 range-v3 版本 0.10.0 中發生錯誤
- 模組發生 Intellisense 問題
- Xamarin Forms iOS 上 SkiaSharp 發生目錄未找到異常 (DirectoryNotFoundException)
- 16.10.0 版發行版本編輯器問題 - 無法再使用元素下拉式方塊瀏覽程式碼
- C++ 20 模組:按一下 [移至宣告] 時,游標跳躍位置不正確
- v16.10 缺少 [新增帳戶時啟用裝置程式碼流程] 選項
- VS 2019 16.10.0 PackageInspectionFailed:無法從套件組合載入 Info.plist,沒有這類檔案或目錄
- App Store 封裝包含 32 位檔案
- 16.10.2 無法連線至 Mac
- vsftest:測試 NMI
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 再次排除不含 . 的檔案 「字元」
開發人員社群的問題
- 開發人員社群有此發行版本所有發行項目的完整清單。
- ClickOnce 無法發佈專案。
- 當 SelfContained=true 且專案參考另一個專案時,ClickOnce Publish for .NET 5.0 失敗。
- ClickOnce 再次無法運作。
- ClickOnce Publish:找不到中繼資料檔案 (使用錯誤的目錄),可在 CLI 上發佈
- ClickOnce 在發佈時嘗試從錯誤的資料夾收集程式庫! (.Net 5)
- 更新 Visual Studio 2019 16.10.0 版組建後,ClickOnce 無法運作。
- 使用 EWDK 在 16.10.0 中組建迴歸
- 發佈發生錯誤。
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 不正確地處理用戶端中斷連線時,會存在拒絕服務弱點。
開發人員社群的問題
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++,以指定應該視為外部的標頭,以供警告之用。
- 能夠建立啟動設定檔,以設定要在 Compose 檔案中啟動哪些服務。
- 標記映像的能力。
- 已新增容器的 [磁碟區] 索引標籤。
- 已新增容器的 [標籤] 索引標籤。
- 已新增映像的 [標籤] 索引標籤。
- 容器現在會依 Compose 專案分組。
編輯器
- 如果使用者想要不那麼擁擠的體驗,可以透過在 Visual Studio 搜尋 (Ctrl+Q) 中搜尋「行間距」來修改行間距。 此選項位於 [文字編輯器\一般] 下。
- 在 [在檔案中尋找] 和 [尋找所有參考] 都有可保留結果的控制項。 根據社群的意見反應,我們新增預設會將 [保留結果] 選項切換為開啟的選項。 您可以在 Visual Studio 搜尋 (Ctrl+Q) 中搜尋 [預設保留搜尋結果] 來找到此選項。 此選項位於 [環境\尋找和取代] 下。 請注意,使用者目前使用 [在檔案中尋找] 只能獲得 5 個結果,使用 [尋找所有參考] 則可以多獲得 5 個結果。
- [在檔案中尋找] 中的新選項可讓使用者執行其他搜尋,並將這些結果附加至之前的搜尋。
編輯器擴充性
- 管理 IntraTextAdornmentTags 的程式碼行為已變更。 有了這項變更,就像任何其他 ITagger 一樣,在基礎標籤變更時,您必須引發標記已變更事件。 否則,您的標籤可能永遠不會更新。
- 記憶體傾印的診斷分析現在包含受控 Linux 核心傾印。
- 透過深層連結跳到 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 變更] 視窗中將多個遠端的 [擷取/提取/推送] 下拉式清單合併至單一 [動作] 功能表。
- 方法呼叫中的引數完成
- EditorConfig 使用者介面
- 以視覺化方式檢查和瀏覽繼承鏈結
- 轉換、索引子和運算子的 IntelliSense 完成
- 來源產生器的偵錯工具支援
- Visual Basic 的程式碼清除支援
- [編輯並繼續 (EnC)] 更新
- 移除未使用的參考
- 智慧分欄線
- 簡化 LINQ 運算式重構
- 列舉值的 IntelliSense 完成
- IntelliSense 完成模式設定
- 新行的程式碼樣式喜好設定
- 尋找來源產生器的所有參考支援
- 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 工作階段期間所執行的測試回合。
- 切換至適用於 Azure AD 佈建的 API V2
- [Azure 應用程式組態即連線服務] 現在支援動態設定
- 將 [相依性樹狀結構] 新增至 WAP 專案
- 已為 Xamarin.Forms 客戶改善 XAML IntelliSense 和 XAML 熱重新載入
- 引進 XAML 範例資料,用於在 WPF 中選取 ItemsControls
- 已新增燈泡,以快速存取經常編輯的屬性
- 已在 XAML 編輯器中新增新的燈泡,以協助建立檢視模型
- 在 Service Fabric 應用程式中引進 StartupServices.xml
Visual Studio 2019 16.10 版的新增功能詳細資料
Docker 工具
容器工具視窗
在此版本中,我們新增了 [容器] 工具視窗,讓您更輕鬆地檢視和與容器和映像互動。 只要瀏覽至 [檢視 > 其他視窗 > 容器] 即可試用新功能。
- 容器現在會依 Compose 專案分組。 這可讓您輕鬆地判斷哪些容器代表您的應用程式。 此外,我們也在 [容器] 中新增了 [標籤] 索引標籤,讓您可以輕鬆地查看您在開發期間所使用的標籤。
- 我們也已新增映像的 [標籤] 索引標籤。
- 新的 [磁碟區] 索引標籤可讓您查看執行中容器的磁碟區,甚至開啟 Visual Studio 中的檔案。
- 我們現在支援從 [容器] 工具視窗標記映像的功能。 在 [映像] 中,以滑鼠右鍵按下映像,然後選取 [標籤]。
組成
- Visual Studio 中的 Docker Compose 工具現在可讓您執行 Compose 檔案中定義的任何服務組合。 開啟 [偵錯] 下拉式清單,或以滑鼠右鍵按一下您的 docker-compose 專案,然後選取 [管理 Docker Compose 啟動設定] 以開始使用。
Git 生產力
- 為了讓您在 Visual Studio 中更容易建立提取要求,我們將具有深層連結快速鍵的功能表項目新增至網頁,讓您建立 PR 或檢視存放庫的 PR 清單。 功能表會根據您的存放庫位於 GitHub 或 Azure DevOps 上而動態顯示。
- 狀態列和 [Git 變更] 視窗中的分支選擇器現在會在您單一選取分支時簽出本機或遠端分支。 您可以在操作功能表中找到其他動作。
- 狀態列中的新存放庫選擇器在按一下滑鼠右鍵時會顯示操作功能表,可讓您從清單中移除項目。
使用存放庫選擇器或 Git 功能表本機存放庫清單時,開啟存放庫將不再自動載入方案。 相反地,您會在可從中選取的清單中看到可用的資料夾檢視和方案。 您可以切換核取方塊,透過 [Git] > [設定] 變更此行為。
您可以按兩下分支名稱,選擇從 [Git 存放庫] 視窗簽出分支。 如果您想要變更此行為,請切換 [Git] > [設定] 中的核取方塊。
- 您現在可以從 [Git 變更] 視窗執行更多動作。 工具列圖示是可自訂的,您可以選擇要顯示的動作。 您可以從溢位功能表同步處理多個遠端。 您可以在瀏覽器開啟存放庫的遠端網頁。
- 搜尋本機和遠端分支,並從狀態列分支選擇器執行一般分支動作。
- 從狀態列存放庫選擇器搜尋和切換本機 Git 存放庫。
- 已修正 Git 功能表中的本機存放庫清單未在 Visual Studio 啟動時載入的問題。
- 我們已在 [Git] > [設定] 中新增兩個新選項,以管理您開啟和切換存放庫的方式。 切換至另一個存放庫時,您現在可以讓目前的方案保持開啟
- 您也可以選擇在開啟存放庫時,不要載入存放庫根資料夾。
- 透過狀態列中的 [未推送的提交] 按鈕和 Git 功能表中的 [同步] 命令,同步處理 (提取然後推送) 分支與遠端。
- 即使沒有任何傳入認可,仍會從 [Git 存放庫] 視窗歷程記錄窗格擷取和提取。 從狀態列或鍵盤快速鍵 Ctrl+0+Y 存取這些區段。
- 在 [Git 存放庫] 視窗中選取 [認可],以檢視其詳細資料和檔案變更的比較,而不需要瀏覽至其他視窗。 選取兩個認可,然後按一下滑鼠右鍵,以在同一個視窗中進行比較。 將詳細資料彈出至自己的視窗,取得全螢幕可見度,以深入探討變更。
- 檢視檔案中的刪除和插入數目,並變更比較的配置。
- 開啟 Azure DevOps Git 存放庫時,自動重新連線或提示建立初始 Azure DevOps 連線。 這可讓您存取已開啟存放庫的工作項目和組建。
/>
- 解決重訂基底或合併衝突時,合併編輯器和操作功能表會顯示目前和傳入分支的分支名稱。 這會修正混淆的來源和目標術語。
.NET 生產力
- 我們已新增 [移除未使用的參考] 命令,讓您清除不使用的專案參考和 NuGet 封裝。 此選項預設為關閉,因此您必須在 [工具]>[選項]>[文字編輯器]>[C#]>[進階] 中啟用此選項,然後選取 [在方案總管 (實驗性) 中顯示「移除未使用的參考」命令]。 啟用此選項之後,[移除未使用的參考] 命令會出現在 [方案總管] 中,專案名稱或相依性節點的右鍵功能表中:
選取 [移除未使用的參考] 將會開啟一個對話方塊,您可以在其中檢視即將移除的所有參考,並有選項可讓您保留您想要保留的參考:
- 我們新增了一個名為 [智慧分欄線] 的新命令,會在使用 Shift+Enter 做為認可字元時,自動插入一組大括弧,並將插入點放在這些大括弧內。 [智慧分欄線] 適用於需要大括號以及屬性、事件、欄位和物件建立運算式的所有型別宣告。 下列範例顯示類別和欄位上使用的 [智慧分欄線]。 如果欄位結尾沒有分號,輸入 Shift+Enter 會藉由新增一組大括號,將欄位轉換成屬性。 您可以再次按 Shift+Enter 以復原認可,這也會在欄位結尾自動新增分號:
- 現在有可以簡化 LINQ 運算式的重構,這將刪除對 .Where() 方法的 Enumerable 的不必要呼叫,進而協助改進效能和可讀性。 將游標放置在 LINQ 運算式。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [簡化 LINQ 運算式]。
- 現在,當型別已知時,即使沒有輸入 Enum 名稱,也會對 Enum 值進行 IntelliSense 完成。
- 我們已新增 IntelliSense 完成模式設定,讓您能夠設定預設完成選項。 此新設定可在 [工具]>[選項]>[文字編輯器]>[進階]>[預設 IntelliSense 完成模式] 找到,您可以從以下選項中進行選擇:[上次使用],它將保留您上次按下 Ctrl+Alt+空格鍵使用的設定、[僅索引標籤],僅在索引標籤上完成,以及 [自動],這是目前的預設行為,將在標點符號和特殊字元上完成。
- 我們已新增新行的程式碼樣式喜好設定。 您可以使用 EditorConfig 檔案或在 [工具]>[選項]>[文字編輯器]>[C#]>[程式碼樣式]>[新行喜好設定 (實驗性)]內設定這些喜好設定。
例如,您可以設定程式碼樣式喜好設定來報告診斷,並提供程式碼修正,以移除額外的空白行:
現在有一個完成選項,可在撰寫方法呼叫時自動插入引數。 此功能預設為關閉,因此您必須在 [工具] > [選項] > [文字編輯器] > [C#] > [IntelliSense] 中啟用此功能,然後選取 Tab 兩次以插入引數 (實驗性)。 開始撰寫方法呼叫,然後按 Tab 鍵兩次 (tab+tab)。 請注意,方法呼叫會根據方法的預設值包含引數。 然後,您可以按向上鍵和向下鍵,使用參數資訊來循環瀏覽您想要插入的引數清單。 您也可以開始輸入引數來顯示 IntelliSense 完成清單,並輸入分號來認可引數,並將分號新增至方法呼叫的結尾。
- 我們已建立 EditorConfig 的 UI。 從您的方案開啟任何 C# 或 Visual Basic EditorConfig 檔案。 請注意,新的 UI 將會開啟,同時顯示 C# 和 Visual Basic 的程式碼樣式和程式碼品質設定選項。
- 現在有一個視覺表示法可供瀏覽和檢查繼承鏈結。 此選項預設為關閉,因此您必須在 [工具] > [選項] > [文字編輯器] > [C#] > [進階] 中開啟此選項,然後選取 [顯示繼承邊界]。 啟用 [繼承邊界] 會將新圖示新增至代表程式碼實作和覆寫的邊界。 按一下 [繼承邊界] 圖示會顯示您可以選取以瀏覽的繼承選項。
- .現有有一個適用於轉換、索引子和運算子的 IntelliSense 完成。
- 現在提供 [來源產生器] 的偵錯工具支援。 您必須先從 Visual Studio 安裝程式安裝 .NET Compiler Platform SDK 元件。 接著,您必須將
<IsRoslynComponent>true</IsRoslynComponent>屬性新增至您的專案檔。 接下來,在 [專案屬性偵錯] 頁面中啟用 [Roslyn 元件] 偵錯工具選項,然後選取適當的目標專案。 接下來,在產生器專案上按 F5,這會啟動 CSC.exe/VBC.exe,以組建目標專案,讓您偵錯產生器程式碼。
在此版本中,我們也在 Visual Studio 中新增了下列 [編輯並繼續 (EnC)] 偵錯體驗的增強功能:
所有三項變更都可在 EnC 目前支援的位置使用,並且同時使用 C# 和 Visual Basic 原始程式檔。
偵錯工具與診斷
- 我們已開發數個分析器,以協助攔截受控記憶體傾印中的常見問題。 此分析現在可以在受控 Linux 核心傾印上執行。
感謝您
最後但並非最不重要的一點是,非常感謝本月為 .NET Productivity (又名 Roslyn) 做出貢獻的以下人員Roslyn):
- Valery (@m08pvv):Hoisted 迴圈非變異條件 PR #52168
- Martin Strecker (@MaStr11):支援內嵌其他差補字串 PR #49229,轉換、索引子和運算子的 IntelliSense PR #47511
- Bernd Baumanns (@bernd5):修正在 SyntaxNode-Update 方法中使用預設值所造成的「資訊遺失」PR #52036,修正使用 Initializer-expression 的 NormalizeWhitespace 字串內插補點PR #51213
- C-xC-c (@C-xC-c):將記錄相等參數重新命名為 'left' 和 'right' PR #51973
- Kai Jellinghaus (@HurricanKai):變更 Compilation.CommonSyntaxTrees 以使用 ImmutableArray PR #51905
- Huo Yaoyuan (@huoyaoyuan):略過命名樣式中的 extern 方法PR #51728,解決以 net5.0 為目標的 NRT 問題 PR #50895
- Alireza Habibi (@alrz):修正小括號內的模式剖析 PR #49621
- Paul M Cohen (@paul1956):新增 Visual Basic 的程式碼清除支援 PR#48092
- Petr Onderka (@svick):讓 DocumentationCommentCompiler 在 NormalizeWhitespace 之後運作 PR #47360
- Youssef Victor (@Youssef1313):將IDEDiagnosticIDConfigurationTests 更新為獨佔而非包容性 PR #52078,過時的ImportingConstructor PR #52073,VB 和 C# 之間一致的 ContainsSyntaxTree 行為 PR #52050,確保取得 nameof 引數的名稱 PR #52016,修正 SyntaxFactory.UsingStatement 的空白註釋 PR #51984,簡化 CSharpRequiredLanguage PR #51881,顯示 #error 版本的有效語言版本 PR #51880,更新 SymbolEqualityComparer.IncludeNullability 文件 PR #51724,在 TryGetMethodDescriptorAsync 中包含來源產生器PR #51686,使 var 模式可繫節 PR #51620,在 SyntaxToken.Value 中使用方塊 PR #51546,修正函式指標 RefKind 顯示 PR #51223,處理 switch 運算式中的模式 PR #50984,將 ImplementAttributes 新增至 IMethodSymbol PR #50560
-
Benjamin Schäublin (@bschaeublin):
- 已修正 MetadataReference 多載的備註中的多餘文字 PR #51242
- Martin Strecker (@MaStr11):
-
piotrstenke (@piotrstenke):
- 已更新在 GeneratorContexts.cs 的
<see>標籤中,指向自己的屬性 PR #50896
- 已更新在 GeneratorContexts.cs 的
-
Huo Yaoyuan (@huoyaoyuan):
- 已更新關鍵字建議工具,以了解結構唯讀成員 PR #50820
-
Yair Halberstadt (@YairHalberstadt):
- 支持解構中的混合宣告和指派 PR #44476
- Youssef Victor (@Youssef1313):
Razor (ASP.NET Core) 預覽編輯器
新的預覽 Razor 編輯器現在支援下列 Razor 編輯功能:
- IntelliSense 完成現在會篩選 HTML 元件、TagHelper 元素和 C# 屬性:
- 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 執行緒。
- [測試輸出] 現在可以保留標籤,因此甚至可以從記錄檔中瀏覽超連結和堆疊追蹤連結。 這些連結現在也適用於鍵盤。
- 當輸出超過 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 應用程式組態] 新增為 [服務相依性]。
Windows 應用程式封裝專案相依性樹狀結構
- 繼去年在 Windows 應用程式封裝專案 (WAP) 中啟用 NuGet 封裝參考的工作之後,我們在 WAP 的 [方案總管] 體驗中啟用了新的 UI。 舊體驗未顯示這些封裝參考,或可讓您透過 UI 新增 NuGet 封裝。
- 在新體驗中,在 CPS 和 .NET 專案系統的協助下,我們啟用了 [相依性樹狀結構],以繼續透過 [應用程式] 子樹狀結構顯示專案參考,但也提供 [封裝] 子樹狀結構,讓您同時管理 NuGet 封裝。
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}'
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 的 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 發行版本的部分投票數最高的問題:
- .sqlproj 未以變更更新
- 複合常值初始設定式中的陣列存取提供不正確的位移
- Visual Studio 2019 Preview 2 標準 c++ 程式庫模組問題/註解
- 每次處理 CMakeFiles.txt 或 CMakeSettings.json 時,Visual Studio 2019 仍會抹除 CMakeBuild 目錄
- Microsoft Visual C++ 在 Lambda 內不會遵守 constexpr
- Noexcept 預設建構函式
- 如果設定 /Wall,#Pragma warning(push, )) 不會停用其範圍的所有警告
- Constexpr-if 和未使用的參數
- 無法宣告 constexpr initializer_list
- C++lates 混淆了範本參數中的呼叫慣例
- 無法檢查 Visual Studio 2019 的更新
- 當未核取 [忽略修剪空白] 時,Git 比較視窗會顯示檔案中所有項目都已變更。
- 會插入空格,而不是索引標籤。
- ASP.NET Core 5 中的 Visual Studio 偵錯工具視覺化檢視和 BinaryFormatter
- VS For Linux:16.9 更新之後,遠端電腦上的輸出檔案會組建到錯誤的位置。
- 重新啟動 Visual Studio 時,會取消釘選的一些已開啟且釘選的索引標籤。
- Visual Studio 2019 升級至 16.9.4 會導致編譯/連結錯誤
- GC 會在 c++/cli ref 類別的方法呼叫期間進行收集
- CRT 的 Trace.cpp 中的 EncodePointer/DecodePointer 邏輯錯誤 (bug)。
- 元素具有無效值 "EnableAllWarnings"。
- 針對有效的程式碼回報 E0144。 (Intellisense 錯誤)。
- 升級至 Visual Studio v16.9.0 之後,發生 [無效範本引,必須是編譯時間常數運算式]
- 每次處理 CMakeFiles.txt 或 CMakeSettings.json 時,Visual Studio 2019 仍會抹除 CMakeBuild 目錄。 (https://developercommunity.visualstudio.com/t/sizeof-array-to-pointer-VC-weirdness/1396250)* [數組到指標 VC 的怪異之處的大小]
- 更新至 Visual Studio Community 2019 16.9.0 版後,Xamarin.Android 發生非法字元例外狀況
- Microsoft.VisualStudio.TestStorage.TestStoreIndexingException:無法新增測試結果
- VS For Linux:16.9 更新之後,遠端電腦上的輸出檔案會組建到錯誤的位置
- 重新啟動 VS 時,會取消釘選的一些已開啟且釘選的索引標籤
- 迴歸 16.9.0:F7 也稱為 [檢視程式碼] 無法從 Xamarin Xaml 檔案運作
- cl.exe 會接管 5Gb ram,以編譯相當小的程式碼片段。
- 當 TypeConverter 屬性套用至自訂列舉型別時,[建議動作] 中未顯示列舉值
- [測試總管] 無法在 netcore3.1 和 net5.0 下執行任何測試,但可在 net461 下執行
- 使用 /O2 產生了錯誤的程式碼
- 操作功能表中的 [檢視程式碼] 無法運作
- 嚴重錯誤 C1001:內部編譯器錯誤 (編譯器檔案 'D:\a01_work\4\s\src\vctools\Compiler\Utc\src\p2\main.c',第 213 行)
- 在安裝程式中嘗試從 VS 延伸模組對話方塊移除即時共用失敗
- 在範本函式中,Msvc 接受指標與整數之間的無效比較
- Visual Studio 會在 IntelliSense 瀏覽時停止回應。
- 因 vcpkgsrv 損毀而導致 IntelliSense 中斷
- vcpkgsrv.exe 處理序清單持續成長。
- Visual Studio 合併分支顯示錯誤的分支名稱。
- Visual Studio 2019 常見錯誤:應用程式呼叫的介面已為不同執行緒封送處理。
- 從程式碼檔案 (例如使用 Ctrl+R,T) 開始測試,即使未安裝 LiveShare 元件,仍會嘗試載入。
- 當專案參考具有不同目標執行階段的類別庫專案時,適用於 .NET Core 3.1 和 .NET 5.0 的 ClickOnce Publish 可能會失敗。
- 已修正 E1504:使用 C++20 模組時發生內部錯誤。
- C++ IntelliSense 無法識別 "using enum"。
- Visual Studio 2019 Enterprise RTM - .NET SDK-型專案 (TargetFrameworkMoniker .NET 4.7.2)。
- 已修正剖析設定輸出的錯誤。
- 未安裝 LiveShare 時顯示 ['VslsFileSystemProviderVSCorePackage' 封裝未正確載入] 訊息。
- 組建 Xamarin iOS 繫節專案不再適用於 Visual Studio 16.9 版。
- 工具組 16.9 迴歸 vcxproj 產生靜態程式庫:pdb 不再複製到輸出目錄。
- 遠端 Linux 電腦的連線使用了不正確的目的地路徑。
- 已修正複製初始化:多載解析問題。
- 範圍-v3 程式庫的 IntelliSense 波浪線不正確。
- 在 DiagnosticDataSerializer.ReadDiagnosticDataArray 例外狀況後顯示金色列。
已知問題
遵循以下連結,查看所有已知問題和 Visual Studio 2019 中可用的因應措施。
Visual Studio 2019 版本資訊歷程記錄
如需舊版 Visual Studio 2019 的相關詳細資訊,請參閱 Visual Studio 2019 版本資訊歷程記錄頁面。
Visual Studio 2019 16.10 版的發行備註