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 版
- 2021 年 3 月 9 日 - Visual Studio 2019 16.8.7 版
- 2021 年 2 月 22 日 - Visual Studio 2019 16.8.6 版
- 2021 年 2 月 9 日 - Visual Studio 2019 16.8.5 版
- 2021 年 1 月 12 日 - Visual Studio 2019 16.8.4 版
- 2020 年 12 月 8 日 - Visual Studio 2019 16.8.3 版
- 2020 年 11 月 19 日 - Visual Studio 2019 16.8.2 版
- 2020 年 11 月 12 日 Visual Studio 2019 16.8.1 版
- 2020 年 11 月 10 日 Visual Studio 2019 16.8.0 版
Visual Studio 2019 封存版本資訊
- Visual Studio 2019 16.7 版的版本資訊
- Visual Studio 2019 16.6 版的版本資訊
- Visual Studio 2019 16.5 版的版本資訊
- Visual Studio 2019 16.4 版的版本資訊
- Visual Studio 2019 16.3 版的版本資訊
- Visual Studio 2019 16.2 版的版本資訊
- Visual Studio 2019 16.1 版的版本資訊
- Visual Studio 2019 16.0 版的版本資訊
Visual Studio 2019 部落格
Visual Studio 2019 部落格是由 Visual Studio 工程小組發行的官方產品見解。 您可以在下列文章中找到有關 Visual Studio 2019 版的深入資訊:
- 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、秋季運動和南瓜香料)
- .NET Core Support and More in Visual Studio 2019 version 16.3 - Update Now!
- Visual Studio 2019 version 16.3 Preview 2 and Visual Studio 2019 for Mac version 8.3 Preview 2 Released!
- Visual Studio 2019 16.2 版與 16.3 版 Preview 1 現已可供使用
- Visual Studio 2019 version 16.2 Preview 2
- Visual Studio 2019 version 16.1 and Preview 16.2 Preview
- Visual Studio 2019:撰寫程式碼的速度更快。 Work smarter. Create the future.
請參閱 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 將程式代碼推送至 Azure Functions 或其他 Azure 資源。
- VS 16.8.5 建立 Git 存放庫 - 建立新的 GitHub 存放庫 - PUBLIC (未核取的私人選項) - FAIL
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 支援。
開發人員社群的項目
- 已修正 .sqlproj 未使用變更更新的問題。
- Visual Studio 2019 在 Chromium 解決方案上因 OOM 失敗而當機。
- Visual Studio 2019 16.7.6 版最佳化編譯程式中的錯誤 (bug)
- 在資料庫專案上加入新項目 - > 資料表時,Visual Studio 會當機。
- VSDIIUnregisterServer 正在減慢 Visual Studio 2019 的速度。
- 停駐或分割視窗時發生非預期的 Visual Studio 2019 當機。
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 工具現在支援從任何目前目錄執行。 它現在也會在部署失敗時傳回非零傳回值,並將錯誤訊息列印至標準錯誤資料流。
開發人員社群的問題
- 在 16.8 更新後,即使特定規則已設定為警告,仍出現大量程式碼分析錯誤
- ClickOnce 安裝的 .NET Core 3.1 或 .NET 5.0 應用程式可能會在安裝後無法啟動。
- 使用 _variant_t 的 C33005 誤判
- Git 合併和認可作業 Bug
- 無法使用 net5.0-windows* TFM 來檢視工作或平行堆疊資訊
- 按一下 [SQL 結構描述比較] 上的 [更新] 時,不會將變更儲存至 sqlproj 檔案
- 資料庫專案: 從方案總管將檔案拖曳至已開啟的檔案時,會從檔案系統中刪除檔案的問題!
- Visual Studio 2019 上的 Intellicode 模型訓練失敗
- 開啟 LiveShare 共同作業工作階段失敗
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 的問題。
- 已修正 [新增專案] 對話方塊中的搜尋可能傳回零個結果的問題。
開發人員社群的問題
- KeyNotFoundException reported by SolutionAssetStorage.GetAssetAsync results in gold bar
- IntelliSense fails because designtime build can't find 'GetClCommandLineForReference' target
- IOException (Pipe is broken) reported by GetAssetAsync
- Search is not working
- Optimizer incorrectly removed EH information causing some exceptions to crash
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_ref、std::midpoint and std::lerp 和 std::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 記憶體最忙碌路徑自動分析
- Blazor 燈泡
- C# 燈泡
- 增強的 Razor 格式設定
- 從 .razor 檔案重新命名標記中的 Razor 元件
- 在 Blazor 元件標籤命名空間上移至定義
- C# 暫留顏色標示
- C# 完成工具提示顏色標示
- Razor 的移至定義/實作,包括已關閉的檔案
- 已關閉 Razor 檔案中的 [尋找所有參考]
- 改進了 Razor 編輯效能與大型專案及解決方案的穩定性
- 使用 SDK 樣式專案的新 Fakes 支援時,有些使用者會在產生填充碼時遇到下列錯誤
- 深入了解如何使用新的線上文件中的所有 Git 功能
- 隨時透過 [Git 變更] 視窗、[檢視] 功能表與狀態列來開啟 [Git 存放庫] 視窗
- 在 [Git 變更] 視窗中從多個遠端擷取、提取及推送
- 在 [Git 存放庫] 視窗頂端檢視 Git 命令的成功與錯誤訊息
- 從 Azure DevOps 工作項目建立新的分支
- 從 Git 功能表的本機存放庫清單中開啟 Git 存放庫
- 預設的原始程式碼控制提供者現在是 Git,而不是 TFVC
- 按一下以在 [Git 存放庫] 視窗中於分支記錄之間切換
- 在開啟存放庫後,在 [方案總管] 中從解決方案清單檢視並選取
- 修改歷程記錄檢視,並透過 Git 存放庫視窗中的工具列搜尋認可
- 從分支歷程記錄圖中的傳入與傳出認可區段擷取、提取及推送
- 將分支推送到遠端後,系統會提示您建立提取要求
- 在分支清單操作功能表的合併和重訂基底命令中檢視分支名稱
- 透過方案總管和編輯器中的操作功能表來存取 Git 命令
- 透過新的強制回應對話方塊 (含有將流程移至背景的選項) 觀察複製進度
IntelliCode:
- 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
Rename
與Find All References
了解全域SuppressMessageAttributes
之目標字串內的符號參考- 在 Visual Basic 中,ByVal 淡出以表示其不需要搭配程式碼修正來移除不必要的 ByVal
- 有多個執行階段的互動視窗支援,例如 .NET Framework 與 .NET Core。
- 已新增新的 RegisterAdditionalFileAction API,可讓分析器作者為其他檔案建立分析器。
- 使用帳戶管理體驗來新增您的 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_ref、std::midpoint and std::lerp 和 std::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 + 修復] 設定。
偵錯工具
.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.* 版本,您可以使用下列因應措施:
- 將 <FakesUseV2Generation>False</FakesUseV2Generation> 新增至 csproj 檔案中的 PropertyGroup。
- 將 <Fakes Include="Fakes\*.fakes" /> 新增至 csproj 檔案中的 ItemGroup。
- 在 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 驗證需求。
- ClickOnce 發行提供者現在可供 .NET Core 3.1 與 .NET 5.0 Windows 傳統型應用程式使用。 若要開始使用,請以滑鼠右鍵按一下 [方案總管] 中的專案,或選取 [建置] > [發行] <[AppName]> 功能表。 您可以在 [資料夾類別] 底下找到 ClickOnce。
Git 生產力
- 從 Azure DevOps 工作項目建立新的分支
- 從 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 分析器的核取方塊。
- 現在有一個重構功能,其引進新的 C# 9
not
模式,可在隱藏的運算子出現時比對語法。 將游標放在隱藏項目運算子上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [使用模式比對]。
- 現在有一種重構的內嵌方法,其可協助以移除原方法宣告的選項來取代在單一陳述式主體內使用的靜態、執行個體和擴充方法。 請將游標放在使用的方法上。 按下 (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] \(擷取基底類別\) 對話方塊隨即開啟,您可以在其中指定基底類別的名稱,以及要放置該類別的位置。 您可以選取要傳輸至新基底類別的成員,然後選取 [抽象化] 欄中的核取方塊,將成員抽象化。
一旦您選取 [確定],您將會看到新的基底類別與其成員一起加入。
- 現在有程式碼修正,可將 typeof(
<QualifiedType>
).Name 的執行個體轉換成 C# 中的 nameof(<QualifiedType>
),並將 GetType(<QualifiedType>
).Name 的執行個體轉換成 Visual Basic 中的 NameOf(<QualifiedType>
)。 使用 nameof 而非型別的名稱,可避免在擷取物件時所涉及的反映。 將游標放在 typeof(<QualifiedType>
).Name 內。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 接著,選取下列其中一個選項:
針對 C#,選取 [將 typeof
轉換成 nameof
]:
針對 Visual Basic,選取 [將 GetType
轉換成 NameOf
]:
- 程式碼清除 \(部分機器翻譯\) 有新的設定選項,可以在您的 EditorConfig \(部分機器翻譯\) 檔案中,對單一檔案或整個解決方案套用格式設定與檔案標頭喜好設定。
- 現在有新的程式碼修正,可移除不應以傳址方式傳遞引數的
in
關鍵字。 將游標放在錯誤上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [移除 'in' 關鍵字]。
- 現在有了引進全新 C#9 模式組合器的重構。 除了在適用的情況下建議模式比對將
==
轉換為使用is
之外,此程式碼修正也會在比對多個不同的模式與否定時,建議使用and
、or
及not
模式組合器。 將游標放在陳述式中。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [使用模式比對]。
- 現在,當您嘗試在非抽象的類別中寫入抽象方法時,程式碼修正可讓類別抽象化。 將游標放在方法錯誤上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [將類別設為「抽象」]。
- 在 16.7 版 Preview 1 中,我們於 DateTime 與 TimeSpan 字串常值中新增了 IntelliSense 完成。 在此版本中,當輸入第一個引號時,此完成清單會自動出現。 在過去,必須鍵入 (Ctrl+space) 才能檢視這份完成清單。 將游標放在 DateTime 或 TimeSpan 字串常值內,然後鍵入第一個雙引號。 您接著將會看到完成選項,以及每個字元所代表之意思的說明。 系統會同時提供日期時間格式和範例。
- 現在有新的程式碼修正,可移除不必要的 pragma 隱藏項目,以及不必要的
SuppressMessageAttributes
。 將游標放在SuppressMessageAttribute
的pragma 警告上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 [移除不必要的隱藏項目]。
- [重新命名] 和 [尋找所有參考] 現在了解全域
SuppressMessageAttribute
隱藏項目之目標字串內的符號參考。
- Visual Basic 有多種傳遞參數的方式,ByVal 及 ByRef,而長久以來 ByVal 則為選擇性。 我們現在淡出 ByVal 來表示其為非必要,並以程式碼修正來移除不必要的 ByVal。 將游標放在 ByVal 關鍵字上。 按下 (Ctrl++.),以觸發 [快速動作與重構] 功能表。 選取 ['ByVal' 關鍵字為非必要,而且可以移除]。
- 現在有多個執行階段的互動式視窗支援,例如 .NET Framework 和 .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 熱重載
- Xamarin.Forms「僅變更」XAML 熱重新載入現在支援 UWP:在此版本中,我們開始推出許多使用者所要求功能 \(英文\) 的支援,可在以 UWP 為目標的 Xamarin.Forms 專案中,支援新的僅變更 XAML 熱重新載入。 請注意,此功能仍在開發中,而編輯 XAML 現在會在執行中的應用程式中觸發更新。其他功能,例如應用程式內工具列 (元素選取等) 尚未完全實作,但將包含在未來的發行版本中。
- XAML 熱重載設定已移至 「偵錯 > 熱重新載入: 在此版本中,我們已將 WPF、UWP 和 Xamarin.Forms 的 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。
擴充性
- 從未參考的 NuGet 套件填入工具箱: 在此版本中,我們新增了在使用未參考的 NuGet 套件控制項填入工具箱時,對 TargetFrameworkMoniker 特定 VisualStudioToolsManifest.xml 檔案的支援。 例如,您的套件可向 .NET Core 3.1 和 .NET 5.0 專案公開不同的控制項集合。
開發人員社群的問題
- 無法編譯以 .NET 5 為目標的 WPF 應用程式 \(英文\)
- 從 Xamarin.iOS 的命令列使用 msbuild.exe,在完成時停止回應 \(英文\)
- 在編輯 .ts 檔案時,停用 IntelliCode 2.2.733.31896 會中斷 TypeScript 3.x,並擲回 CompositionFailedException \(英文\)
- Typescript intellisense 一直無法運作 \(英文\)
- VS2019 C++ - 以最佳化產生的無效程式碼 \(英文\)
- 背景工作一直回報「C/C++ IntelliSense 作業進行中」 \(英文\)
- WPF 設計工具錯誤: 計算的節點路徑無效 -- null->Window:Grid
- Visual Studio 16.8.0 Preview 4 處理序消失 \(英文\)
- 捲動至 [例外狀況設定] 視窗會導致 VS 當機 \(英文\)
- atlstdthunk.h 中的 USE_ATL_THUNK2 巨集不能是未定義的 \(英文\)
- Visual Studio Community 2019 16.7.x 頻繁地損毀 \(英文\)
- 移至 NuGet 套件管理員導致 Visual Studio 損毀 \(英文\)
- asan (含 avx2) 回報堆疊緩衝區溢位 \(英文\)
- 無法關閉 VisualStudio - 無法存取已處置的物件 \(英文\)
- 遇到類型為 NullReferenceException 的例外狀況。
- Visual Basic 分析器範本問題 \(英文\)
- 在 .cs 檔案中輸入時,VS 損毀 \(英文\)
- C++ Code Analysis 中的新變種檢查 (VS 2019 Update 8 Preview 3) 未發生/運作 \(英文\)
- 開啟具有外部相依性檔案的 C++ 解決方案會導致那些外部相依性檔案索引標籤顯示「發生錯誤...」\(英文\)
- 升級到 Visual Studio 16.7 之後,使用 Windows SDK 8.1 的 C++ 建置失敗 \(英文\)
- ARM64 C++: 16.4 - > 16.5+ 迴歸。
- 磁碟上的 csproj 已變更。 關閉編輯器並加以重新開啟 \(英文\)
- ServiceHub.Host.CLR.x64 已停止運作 (英文)
- ASAN x64 - CMake 似乎不受支援 \(英文\)
- 當 [平行編譯作業數上限] 設定為可用處理器數目時,VS2019 WSL C++ 發生間歇性編譯失敗 \(英文\)
- 重建專案會移除整個輸出檔案夾 (遠端編譯) \(英文\)
- 每次我處理 CMakeFiles.txt 或 CMakeSettings.json 時,VS2019 仍會抹除 CMakeBuild 目錄 \(英文\)
- IntelliCodeCppPackage 無法載入 \(英文\)
- CMake 專案 WSL 設定中由 "/mnt/" 前置詞導致的建置錯誤 \(英文\)
- CMake: 自升級至 VS 16.7 之後,CMakeSettings.json 中建立的環境變數已無法再展開
- 比較 DACPAC 與專案原始程式碼時,結構描述比較不會評估 SQLCMD 變數
- 建置及部署的隔離不應該部署到 .o 檔案 \(英文\)
- 無法編譯包含分割區的模組 \(英文\)
- 切換至索引標籤時,取得「正在處理」的訊息 (英文)
- Visual Studio S2019 偵錯工具因多個變數重名而混淆 (英文)
- 字串常值分隔符號醒目提示在括弧之後
- 協同程式無法以非預設可建構的 promise_type 來定義 (英文)
- C/C++ IntelliSense: 輸入 var 之後不會顯示任何成員清單。 在 C 檔案中的算術運算子之後
- 變更另一個檔案的程式碼時,Codelens 參考並未更新 (英文)
- [移至定義] 會移至 std::function 建構函式,而不是 Lambda 引數的類別 (英文)
- HLSL 著色編譯器無法建立標頭檔的輸出目錄 (英文)
- 非預期的錯誤 C2027:搭配 /permissive 使用範本時,使用了未定義的類型 (英文)
- D9025:以 '/GS-' 覆寫 '/sdl-' (英文)
- constexpr 似乎不喜歡指標參考 (英文)
- 文件已開啟為專案或解決方案,但目前無法在編輯器中開啟。
- 16.7 版已捨棄 switch 運算式涵蓋範圍 (英文)
- 即使停用仍會引發 C5045 警告 (英文)
- Xamarin.Forms 無法建立 iOS 的封存! \(英文\)
- 在 16.7.0 Preview1 中,CImage::Draw() 對 DrawImage() 的呼叫模稜兩可
- 透過釘選工作列圖示載入 [開啟資料夾] 專案時遺失檢視 \(英文\)
- C++:編譯器選取錯誤的多載候選項 \(英文\)
- 無法建立包含程式碼修正的新 VB VSIX 專案 \(英文\)
- VS2019 [尋找結果] 未使用字型/色彩設定 \(英文\)
- 編輯大型解決方案中的 .editorconfig 檔案會使編輯器嚴重變慢並造成高 CPU 與 RAM 使用量,有時甚至會損毀 \(英文\)
- Ctrl+F [搜尋結果] 顯示為文字,但我想要在新的結構化搜尋結果視窗中看到結果 \(英文\)
- 看不到 [發行] 按鈕 \(英文\)
- 儲存失效 (英文)
- 不允許超過 60 個字元的解決方案/專案名稱。 (英文)
- 您有 Visual Studio Enterprise 2019 可用訊息的新授權。 (英文)
- 深色模式 Git 檢視的外觀不正確。 (英文)
- Visual Studio 2019 會在背景執行程式碼分析時損毀,且不會復原檔案。 (英文)
- 無法新增具有兩個步驟驗證的 Apple 開發人員帳戶。 (英文)
- 在 Noexcept 中摺疊運算式會產生語法錯誤。 (英文)
- 在 StreamPipeReader.AdvanceTo 中遵循 RPC 例外狀況的金條: 不完成讀取作業。
- 使用設計面板編輯資料行時,SQL Server 專案損毀。 (英文)
- Visual Studio 2019 Preview: ssh+git:// 存放庫不會要求認證,但會回報錯誤。 (英文)
- Std::enable_if 不會從多載集移除轉換運算子。 (英文)
- 提取要求頁面故障。 (英文)
- Enable_if_t SFINAE 問題 (英文)
- Std::condition_variable::wait_for(0) 不會解除鎖定 (英文)
- 編譯器無法攔截到暫存的位址。 (英文)
- 將類別與符號的檔案重新命名時,會擲回 NullPointerException。 (英文)
已知問題
遵循以下連結,查看所有已知問題和 Visual Studio 2019 中可用的因應措施。
意見反應與建議
我們很希望聽聽您的意見! 若有任何問題,請透過安裝程式或 Visual Studio IDE 本身右上角的回報問題選項來通知我們。 圖示位在右上角。 您可以在 Visual Studio 開發人員社群中提出產品建議或追蹤您的問題,也可以提出問題、尋找解答及提議新功能。 您也可以透過我們的即時聊天支援取得免費的安裝協助。
部落格
善用「開發人員工具部落格」網站中的見解與建議,讓您能夠隨時取得所有新版本的最新資訊,以及涵蓋各類功能的深入探討文章。
Visual Studio 2019 版本資訊歷程記錄
如需舊版 Visual Studio 2019 的相關詳細資訊,請參閱 Visual Studio 2019 版本資訊歷程記錄頁面。