Visual Studio IconVisual Studio 2019 16.0 版的版本資訊


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


注意

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



Visual Studio 2019 16.0 版的新功能

支援時間範圍

Visual Studio 2019 16.0 版的支援已中止。

Visual Studio 2019 16.0 版的 Enterprise 與 Professional 使用者都受到支援,並已在2021 年 1 月收到安全性弱點的修正程式。 此時間範圍是由 2019 年 12 月的下列事實決定:Visual Studio 2019 16.4 版已指定為 Visual Studio 2019 產品的最終服務基準。 如需 Visual Studio 所支援基準的詳細資訊,請參閱 Visual Studio 2019 的支援原則。 

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

Visual Studio 2019 16.0 版

Visual Studio 2019 部落格

Visual Studio 2019 部落格是由 Visual Studio 工程小組發行的官方產品見解。 您可以在該部落格找到 Visual Studio 2019 版的相關深入資訊。


Release Notes Icon Visual Studio 2019 16.0.22 版

發行於 2020 年 1 月 12 日

16.0.22 資訊安全諮詢注意事項

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

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

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

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


Release Notes Icon Visual Studio 2019 16.0.21 版

發行於 2020 年 12 月 8 日

16.0.21 資訊安全諮詢注意事項

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

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


Release Notes Icon Visual Studio 2019 16.0.20 版

2020 年 11 月 10 日發行

16.0.20 資訊安全諮詢注意事項

CVE-2020-17100 Visual Studio 竄改弱點

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


Release Notes Icon Visual Studio 2019 16.0.19 版

發行於 2020 年 10 月 13 日

在此版 16.0.19 中

  • .NET Code SDK 2.1.616 已新增至 Visual Studio 2019。

Release Notes Icon Visual Studio 2019 版本 16.0.18

2020 年 9 月 8 日發行

16.0.18 中修正的問題

  • 若已從 VS 安裝程式中移除,則不受支援的 .NET Core 版本將不會再於修復或升級期間重新安裝。

16.0.18 資訊安全諮詢注意事項

CVE-2020-1130 診斷中樞標準收集器權限提升弱點

當診斷中樞標準收集器未正確處理資料作業時,即會存在權限提升弱點。 攻擊者若成功探索此弱點,即可在權限提升的內容中執行處理序。

CVE-2020-1133 診斷中樞標準收集器權限提升弱點

當診斷中樞標準收集器未正確處理檔案作業時,即會存在權限提升弱點。 攻擊者若成功探索此弱點,即可在權限提升的內容中執行處理序。

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

當 Visual Studio 未正確處理記憶體中的物件時,即會存在遠端程式碼執行弱點。 成功惡意探索弱點的攻擊者可以在目前使用者的內容中執行任意程式碼。

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

當 Visual Studio 未正確處理記憶體中的物件時,即會存在遠端程式碼執行弱點。 成功惡意探索弱點的攻擊者可以在目前使用者的內容中執行任意程式碼。

CVE-2020-1045 Microsoft ASP.NET Core 安全性功能略過弱點

Microsoft ASP.NET Core 剖析已編碼 Cookie 名稱的方式有安全性功能略過弱點。 ASP.NET Core Cookie 剖析器會將整個 Cookie 字串解碼,這可能會讓惡意攻擊者設定以百分比將名稱編碼的第二個 Cookie。


Release Notes Icon Visual Studio 2019 16.0.17 版

發行於 2020 年 8 月 11 日

16.0.17 版中修正的問題

16.0.17 版資訊安全諮詢注意事項

CVE-2020-1597 ASP.NET Core 拒絕服務弱點

當 ASP.NET Core 不正確地處理 Web 要求時,就存在拒絕服務弱點。 成功惡意探索此弱點的攻擊者可能會導致 ASP.NET Core Web 應用程式面臨阻斷服務攻擊。 不需要驗證即可從遠端惡意探索此弱點。


Release Notes Icon Visual Studio 2019 16.0.16 版

發行於 2020 年 7 月 14 日

16.0.16 中修正的問題

16.0.16 版資訊安全諮詢注意事項

CVE-2020-1393 診斷中樞標準收集器服務權限弱點提高

當 Windows 診斷中樞標準收集器無法適當處理輸入時,即會造成權限弱點提高,因而導致不安全的程式庫載入行為。

CVE-2020-1416 Visual Studio 權限弱點提高

當 Visual Studio 載入軟體相依性時,即會造成權限弱點提高。

CVE-2020-1147 .NET Core 拒絕服務弱點

遠端未經驗證攻擊者可藉由向 ASP.NET Core 應用程式或其他剖析特定 XML 類型的應用程式發出特製要求,以惡意探索此弱點。 此安全性更新會限制 XML 承載中允許存在的類型,藉以解決此弱點。


Release Notes Icon Visual Studio 2019 16.0.15 版

2020 年 6 月 9 日發行

16.0.15 中修正的問題

16.0.15 版資訊安全諮詢注意事項

CVE-2020-1108 / CVE-2020-1108.NET Core 拒絕服務弱點

為了全面解決 CVE-2020-1108 的問題,Microsoft 發行了 .NET Core 2.1 和 .NET Core 3.1 的更新。 使用這些 .NET Core 版本中任何一個版本的客戶應該安裝最新版的 .NET Core。 如需最新版本號碼和更新 .NET Core 的指示,請參閱版本資訊

CVE-2020-1202 / CVE-2020-1203 診斷中樞標準收集器服務權限弱點提高

當診斷中樞標準收集器或 Visual Studio 標準收集器無法正確處理記憶體中的物件時,就會有權限提高弱點。

CVE-2020-1293 / CVE-2020-1278 / CVE-2020-1257 診斷中樞標準收集器服務權限弱點提高

當診斷中樞標準收集器服務處理檔案作業的方式不正確時,就會有權限提高弱點。


Release Notes Icon Visual Studio 2019 16.0.14 版

2020 年 5 月 12 日發行

16.0.14 中修正的問題

  • 新增了一項變更,其讓企業 IT 系統管理員和部署工程師能夠設定 Microsoft Update 用戶端與 SCCM 之類的工具,以判斷 Microsoft Update 目錄和 WSUS 上所裝載 VS2019 16.0 更新的適用性。

16.0.14 版資訊安全諮詢注意事項

CVE-2020-1108 .NET Core 拒絕服務弱點

遠端未經驗證的攻擊者可藉由向 .NET Core 應用程式發出特製要求來惡意探索此弱點。 這項安全性更新會更正 .NET Core Web 應用程式處理 Web 要求的方式來解決弱點。


Release Notes Icon Visual Studio 2019 16.0.13 版

2020 年 4 月 14 日發行

16.0.13 版資訊安全諮詢注意事項

CVE-2020-0899 Microsoft Visual Studio 權限提高弱點

當 Microsoft Visual Studio 更新程式服務未適當處理檔案權限時,就會存在權限提高弱點。 成功惡意探索此弱點的攻擊者可能會覆寫本機系統安全性內容中任意檔案內容。

CVE-2020-0900 Visual Studio 延伸模組安裝程式服務權限提高弱點

當 Visual Studio 延伸模組安裝程式服務未適當處理檔案作業時,就會存在權限提高弱點。 成功惡意探索此弱點的攻擊者可能會在具有權限提高其任意位置上刪除檔案。

CVE-2020-5260 由於 URL 驗證不足導致適用於 Visual Studio 的 Git 存在認證洩漏弱點

當特別製作的 URL 經過剖析並傳送給認證協助程式時,就會存在認證洩漏弱點。 這可能會導致將認證傳送至錯誤的主機。


Release Notes Icon Visual Studio 2019 16.0.12 版

發行日期︰2020 年 3 月 10 日

16.0.12 中修正的問題

資訊安全諮詢注意事項

CVE-2020-0793CVE-2020-0810:診斷中樞標準收集器服務權限提高弱點

當診斷中樞標準收集器不當處理檔案作業,或 Windows 診斷中樞標準收集器服務無法正確消毒輸入時,會暴露提高權限弱點。

CVE-2020-0884建立 Outlook Web 增益集時的詐騙弱點

若在啟用多重要素驗證的情況下建立 Outlook Web 增益集,會暴露詐騙弱點

CVE-2020-0789Visual Studio 延伸模組安裝程式服務拒絕服務弱點

當 Visual Studio 建伸模組安裝程式服務不當處理永久連結時,將會暴露拒絕服務弱點。 若攻擊者惡意探索此弱點成功,可能導致目標系統停止回應。


Release Notes Icon Visual Studio 2019 16.0.11 版

2020 年 1 月 14 日發行

資訊安全諮詢注意事項

CVE-2020-0602 ASP.NET Core 拒絕服務弱點

遠端未經驗證的攻擊者可以藉由向 ASP.NET Core 應用程式發出特製要求來惡意探索此弱點。 這項安全性更新會更正 ASP.NET Core Web 應用程式處理 Web 要求的方式來解決弱點。

CVE-2020-0603 ASP.NET Core 遠端程式碼執行弱點

遠端未經驗證的攻擊者可以藉由向 ASP.NET Core 應用程式發出特製要求來惡意探索此弱點。 這項安全性更新會更正 ASP.NET Core Web 應用程式在記憶體中的處理方式來解決弱點。


Release Notes Icon Visual Studio 2019 16.0.10 版

發行於 2019 年 12 月 10 日

16.0.10 中修正的問題

資訊安全諮詢注意事項

CVE-2019-1349 由於對子模組名稱的限制過於寬鬆,而產生的 Git for Visual Studio 遠端執行弱點

當 Git 與同層級子模組目錄的子模組名稱衝突時,就會產生遠端程式碼執行弱點。 惡意探索此弱點成功的攻擊者,可以遠端方式在目標電腦上執行程式碼。 此安全性更新會採用新版本的 Git for Windows 來解決此弱點,而子模組複製品的目錄必須為空白。

CVE-2019-1350 由於命令列引數的引用不正確,而產生的 Git for Visual Studio 遠端執行弱點

當 Git 在遞迴複製期間,搭配 SSH URL 使用特定引用方式來解譯命令列引數時,會產生遠端程式碼執行弱點。 惡意探索此弱點成功的攻擊者,可以遠端方式在目標電腦上執行程式碼。 此安全性更新會採用可修正此問題的新版 Git for Windows 來解決此弱點。

CVE-2019-1351 由於在複製期間使用了非字母的磁碟機名稱,而產生的 Git for Visual Studio 任意檔案覆寫弱點

當非字母的磁碟機名稱在 git clone 中略過安全性檢查時,Git 中會產生任意檔案覆寫弱點。 惡意探索此弱點成功的攻擊者,可在目標電腦上寫入任意檔案。 此安全性更新會採用可修正此問題的新版 Git for Windows 來解決此弱點。

CVE-2019-1352 由於未察覺 NTFS 替代資料流,而產生的 Git for Visual Studio 遠端執行弱點

透過 NTFS 替代資料流來複製及寫入 .git/ 目錄時,在 Git 中會產生遠端程式碼執行弱點。 惡意探索此弱點成功的攻擊者,可以遠端方式在目標電腦上執行程式碼。 此安全性更新會採用可察覺 NTFS 替代資料流的新版 Git for Windows 來解決此弱點。

CVE-2019-1354 由於未拒絕寫出包含反斜線的已追蹤檔案,而產生的 Git for Visual Studio 任意檔案覆寫弱點

當具有反斜線和惡意符號連結的樹狀目錄項目可能會中斷工作樹狀結構時,在 Git 中會產生任意檔案覆寫弱點。 惡意探索此弱點成功的攻擊者,可在目標電腦上寫入任意檔案。 此安全性更新會採用不允許這種反斜線使用方式的新版 Git for Windows 來解決此弱點。

CVE-2019-1387 由於對遞迴複製品子模組名稱的驗證過於寬鬆,而產生的 Git for Visual Studio 遠端執行弱點

使用子模組以遞迴方式複製時,在 Git 中會產生遠端程式碼執行弱點。 惡意探索此弱點成功的攻擊者,可以遠端方式在目標電腦上執行程式碼。 此安全性更新會採用可加強子模組名稱驗證的新版 Git for Windows 來解決此弱點。

CVE-2019-1486 Live Share 延伸模組 URL 重新導向弱點

當連至 Live Share 工作階段的來賓,重新導向至由工作階段主持人指定的任意 URL 時,在 Visual Studio Live Share 延伸模組中偵測到了詐騙漏洞。 攻擊者可成功惡意探索此弱點,並可在未經明確同意的情況下,讓來賓電腦開啟瀏覽器並瀏覽至惡意 URL。 這是 Live Share「共用伺服器」功能的一部分,會在作用中的 Live Share 工作階段期間允許自動連接埠轉送。 最新的更新,會在瀏覽由主持人指定的 URL 之前,先提示 Live Share 來賓予以同意,以解決此弱點。


Release Notes Icon Visual Studio 2019 16.0.9 版

發行於 2019 年 10 月 15 日

資訊安全諮詢注意事項

CVE-2019-1425 NPM 套件權限提高弱點 (2019 年 11 月 12 日發佈)

當 Visual Studio 在解壓縮封存檔案時無法正確驗證永久連結,就會存在權限提高弱點。 這些弱點是由 Visual Studio 使用的套件所導致,如下列兩個 NPM 公告所述:npmjs.com/advisories/803npmjs.com/advisories/886。 這些 NPM 套件的更新版本已包含在這版 Visual Studio 中。


Release Notes Icon Visual Studio 2019 16.0.8 版

發行於 2019 年 9 月 10 日

Visual Studio 2019 16.0.8 版中已修正的問題

資訊安全諮詢注意事項

CVE-2019-1232 診斷中樞標準收集器服務權限提高弱點

當診斷中樞標準收集器服務不正確地模擬特定檔案作業時,就存在權限提高弱點。 成功探索此弱點的攻擊者可以取得提高的權限。 缺乏易受攻擊系統特殊存取權限的攻擊者可能會惡意探索這項弱點。 這項安全性更新會確保診斷中樞標準收集器服務正確地模擬檔案作業,以解決弱點。


Release Notes Icon Visual Studio 2019 16.0.7 版

發行於 2019 年 8 月 13 日

Visual Studio 2019 16.0.7 版中已修正的問題

資訊安全諮詢注意事項

CVE-2019-1211 適用於 Visual Studio 的 Git 的權限提高弱點 \(英文\)

在 Git 中,如果 Visual Studio 不正確地剖析設定檔,就會有權限提高弱點存在。 成功惡意探索弱點的攻擊者,可以在另一個本機使用者的內容中執行程式碼。 為利用此弱點,已通過驗證的攻擊者在完整安裝應用程式之前,必須先修改系統上的 Git 設定檔。 然後,攻擊者必須說服系統上的另一個使用者執行特定的 Git 命令。 此更新會藉由變更編輯設定檔所需的權限來解決此問題。

**CVE-2019-1301:.NET Core 中的拒絕服務攻擊弱點

當 .NET Core 不正確地處理 Web 要求時,就存在拒絕服務攻擊弱點。 成功惡意探索此弱點的攻擊者可能會導致 .NET Core Web 應用程式面臨拒絕服務攻擊。 不需要驗證即可從遠端惡意探索此弱點。

這項更新會更正 .NET Core Web 應用程式處理 Web 要求的方式,以解決弱點。


Release Notes Icon Visual Studio 2019 16.0.6 版

發行於 2019 年 7 月 9 日

Visual Studio 2019 16.0.6 版本中已修正的問題

  • 已修正在 Windows 10 1903 版上執行或已安裝 .NET 4.8 版系統上的朗讀程式支援。

資訊安全諮詢注意事項

CVE-2019-1075 ASP.NET Core 詐騙弱點

.NET Core 更新已在今天發行,並包含在此 Visual Studio 更新中。 此版本解決安全性和其他重要問題。 詳細資料請參閱 .NET Core 版本資訊

CVE-2019-1077 Visual Studio 延伸模組自動更新弱點

當 Visual Studio 延伸模組自動更新程序不當處理某些檔案作業時,會引發權限提高弱點。 惡意攻擊此弱點成功的攻擊者,將能刪除任意位置上的檔案。 若要探索此弱點,攻擊者需要易受攻擊系統的無特殊權限存取權。 此安全性更新藉由保護 Visual Studio 延伸模組自動更新執行檔案作業的位置來解決此弱點。

CVE-2019-1113 WorkflowDesigner XOML 還原序列化允許程式碼執行

參考特定類型的 XOML 檔案可能會導致在 Visual Studio 中開啟 XOML 檔案時執行隨機程式碼。 對於在 XOML 檔案中允許使用的類型,現在有所限制。 如果開啟包含新未授權類型的 XOML 檔案,則會顯示訊息說明該類型未經授權。

如需詳細資訊,請參閱 https://support.microsoft.com/help/4512190/remote-code-execution-vulnerability-if-types-are-specified-in-xoml


Release Notes Icon Visual Studio 2019 16.0.5 版

2019 年 6 月 11 日發行

Visual Studio 2019 16.0.5 版本中已修正的問題


Release Notes Icon Visual Studio 2019 16.0.4 版

2019 年 5 月 14 日發行

在 Visual Studio 2019 16.0.4 版中已修正的問題

資訊安全諮詢注意事項

CVE-2019-0727 診斷中樞標準收集器服務權限提高弱點

當診斷中樞標準收集器服務不當地處理某些檔案作業時,會引發權限提高弱點。 惡意攻擊此弱點成功的攻擊者,將能刪除任意位置上的檔案。 若要探索此弱點,攻擊者需要易受攻擊系統的無特殊權限存取權。 此安全性更新藉由保護診斷中樞標準收集器執行檔案作業的所在位置來解決此弱點。


Release Notes Icon Visual Studio 2019 16.0.3 版

發行於 2019 年 4 月 30 日

Visual Studio 2019 16.0.3 版的新功能

  • 適用於 Kubernetes 的 Visual Studio Tools 現在支援最新的 Azure Dev Spaces。

Visual Studio 2019 16.0.3 版中已修正的問題


Release Notes Icon Visual Studio 2019 16.0.2 版

發行於 2019 年 4 月 18 日

Visual Studio 2019 16.0.2 版中已修正的問題


Release Notes Icon Visual Studio 2019 16.0.1 版

發行於 2019 年 4 月 9 日

Visual Studio 2019 16.0.1 版中已修正的問題


Release Notes Icon Visual Studio 2019

發行於 2019 年 4 月 2 日

Visual Studio 2019 的新功能摘要

安裝

IDE

  • 使用 Visual Studio Live Share (預設會安裝) 與其他人共同作業。 C++、VB.NET 的其他語言支援,而 Razor 為訪客提供解決方案檢視與原始程式碼控制差異共用。
  • 開啟您最近使用的程式碼,或從其中一個最常用的流程開始,例如複製、開啟或透過新的啟動視窗建立專案。
  • 建立新專案,新專案具有改良的搜尋體驗,而且您可以使用依熱門程度排序的範本清單來篩選。
  • 提供更多的垂直程式碼空間,而且我們透過一組新的殼層視覺化變更提供現代化的外觀與操作方式。
  • 檢視更清晰的 IDE 版本,不論您的顯示器設定和/或縮放比例為何,因為我們已改良對個別監視器感知的支援。
  • 使用 Visual Studio 中改良的搜尋功能來尋找功能表、命令、選項與可安裝的元件。
  • 使用文件指示器快速了解您程式碼檔案的「健康情況」。 透過從指示器執行的單鍵程式碼清除功能來執行及設定。
  • 使用 [選項] 對話方塊中的新 [預覽功能] 頁面輕鬆管理您已選擇加入的預覽功能
  • 建立新專案時,有以標籤為基礎的搜尋功能改進,還有易於存取的 [最近使用的專案範本] 清單可以使用。
  • 直接從 Visual Studio 搜尋建立新項目,並以改良的關聯性更快找到結果。
  • 透過新的通知體驗持續掌握重要資訊,例如 Visual Studio Live Share 要求。
  • 將一組程式碼清理修正程式儲存成一個設定檔,即可輕鬆選取您要在程式碼清理期間執行的修正程式。
  • 觸發新的 .NET 重構和程式碼修正
  • 使用第一級專案檔讓設定 .NET Core 專案變得更輕鬆。
  • [延伸模組和更新] 對話方塊中查看有 [預覽]、[付費] 和 [試用] 標籤的延伸模組狀態。
  • 檢查及設定您想要使用的預覽功能,因為這個 Preview 已重設預設。
  • 排除某些已在這個版本中標示為已淘汰的測試視窗 API。
  • 透過開始視窗登入、瀏覽,以及按一下複製或從 Azure DevOps 連線至您託管的存放庫。
  • 安裝其他原始檔控制主機的延伸模組,來檢視您和自己組織擁有的存放庫。
  • 體驗改良的藍色佈景主題,該主題透過降低亮度、提高整體對比度和解決其他可用性問題,來因應意見反應。
  • 利用 dotnet 格式全域工具從命令列套用程式碼樣式喜好設定。
  • MSBuild 與 Visual Studio 現在預設以 .NET Framework 4.7.2 為目標。
  • 我們已從伺服器總管移除與 Azure App Service 相關的功能;您可在 Cloud Explorer 取得同等功能。

效能

  • 使用 Visual Studio 的新效能改良 掌控解決方案載入方式,這些改良改進了逐步執行速度、分支切換速度等。
  • 請參閱工作狀態中心中的解決方案載入進度
  • 在使用方案篩選檔案開啟的方案上選擇要載入的專案。
  • 透過限制輔助元件的影像,以改進您的輸入效能
  • 將您的專案階層狀態與工具視窗狀切換至停用還原的新選項。
  • 了解建置選取的新快速鍵,以及使用新的「全部建置」命令,在 CMake 快速全部建置。
  • 透過 CMake 專案中 C++ 檔案改善的 IntelliSense 效能,加快編碼的速度。
  • 載入較大的.NET Core 方案,並在處理它們的時候享有更少的記憶體使用量。
  • 使用新的專案操作功能表命令,快速載入專案相依性
  • 效能中心查看效能提示。

一般偵錯和診斷

原始程式碼控制與 Team Explorer

  • 暫時存放變更,以便您可以使用 Team Explorer 的 [Git 工具] Git 隱藏支援處理另一個工作。
  • 查看 Visual Studio Market Place 上可用的選擇性延伸模組Visual Studio 的提取要求,它將提取要求檢閱整合到 Visual Studio 中。
  • 使用新的 Azure DevOps 工作項目體驗,它著重在開發人員工作流程,包括使用者特定工作項目檢視、從工作項目建立分支、使用 #提及方式搜尋工作項目,以及直接編輯。

擴充性

  • 使用 NuGet 套件 Microsoft.VisualStudio.SDK中的單一整合 Visual Studio SDK。
  • 利用我們對 VSIX 專案 的更新立即包含 AsyncPackage。
  • 利用我們新增的全新空白 VSIX 專案來進行實驗。
  • [延伸模組和更新] 對話方塊現在會指出延伸模組為免費、付費還是試用。

程式語言:

C#

體驗 C# 編譯器現在支援的 8.0 語言功能預覽,包括:

  • 可為 Null 的參考型別:當功能為開啟時 (例如,使用 #nullable enable 或在專案層級使用 <NullableContextOptions>enable</NullableContextOptions>),如果標註 ?,則參考型別會視為可為 Null,否則視為不可為 Null。 編譯器接著會分析 Null 值的流向,並警告可能不安全的使用方式。
  • switch 運算式:在運算式內容中提供類似 switch 的語意。
  • 遞迴模式比對:新模式允許測試欄位/屬性和位置元素 (來自 Tuple 或解構)。
  • 支援 RangeIndex 型別在 CoreFX 中用於切割,包括範圍的 x..y 常值語法。
  • IAsyncEnumerable<T> 呈現的非同步資料流可以使用 await foreach 來非同步地列舉,且可以使用 async IAsyncEnumerable<T> 列舉程式方法來產生。
  • using 宣告:在目前區塊結尾處置,而不會增加巢狀層級。 ref 結構可以藉由實作公用 Dispose() 方法來處置。
  • static 區域函式:標示 static 的區域函式無法參考 this 或封入函式中的變數。
  • 區域函式和 Lambda 現在可以宣告遮蔽封入函式變數名稱的參數和區域變數。
  • Null 聯合指派x ??= y; 只會在 xnull 時,將 y 指派給 x

在 Mads 的 C# 8.0 概觀 \(英文\) 中取得更多資訊。

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

此外,根據預設您可以在 Visual Studio 中使用更多新式 C# 語言功能。

C++
  • 使用 Visual Studio IntelliCode 這個可為您的程式碼提供 AI 輔助建議的選擇性延伸模組,在撰寫 C++ 與 XAML 程式碼時節省時間。
  • 體驗編輯器內的程式碼分析警告。 程式碼分析會自動在背景執行,而警告會以綠色波浪線顯示。
  • 試用新的範本列,其使用預視視窗 (Peek Window) UI 並支援巢狀範本。
  • 執行新增及更新的 C++ Lifetime profile 檢查程式實作。
  • 使用新的 CMake 設定編輯器設定 CMake 專案,其提供 CMakeSettings.json 的替代方案。
  • 試試多項後端功能改進,包括 OpenMP SIMD 向量化、連結時間加快及更積極的內嵌。
  • 開啟外部工具所產生的現有 CMake 快取,例如 CMakeGUI,或自訂的中繼組建系統。
  • 改善以 /Qspectre 進行的分析,來協助解決 Spectre Variant 1 (CVE-2017-5753)。 如需詳細資訊,請參閱 Visual C++ 小組部落格文章
  • 快速地在您先前的範例引數之間切換,範本 IntelliSense 的範本列現在有 [最近用過的函式] 下拉式清單。
F#
  • F# 4.6 已與其他各種編譯器功能改進一併發行。
  • 體驗 F# 和 F# 工具的大型解決方案效能改善及各種更新。
  • 了解開放原始碼參與者為 F# 語言和工具完成的一些很棒的工作。
JavaScript/TypeScript
Python
  • 使用 Python [新增環境] 對話方塊
  • 使用新 Python 環境選取器工具列更輕鬆地使用 Python 環境,包括 [開啟資料夾] 工作區的改良支援。
  • 建立 Visual Studio Live Share 工作階段,並與其他 Visual Studio 使用者在 Python 程式碼上共同作業。

Web 技術

容器工具 (部分機器翻譯)

Xamarin 的行動開發

通用 Windows 平台 (UWP)

  • 註解、間距、命名空間及其他任何文字變更,在從設計工具中進行編輯時都會保留。 封裝資訊清單設計工具現在會在 Package.appxmanifest 檔案中,維持 xml 變更的精確逼真度。
  • Windows 應用程式封裝 \(機器翻譯\) 專案現在支援 .NET Core 專案生產 MSIX 套件。
  • 使用套件建立精靈 \(機器翻譯\) 直接提交到 Microsoft Store。
  • Visual Studio 2019 不再支援 Windows Mobile 裝置部署。 嘗試部署至 Windows 10 行動裝置版裝置會產生錯誤:"Deployment to Windows Mobile devices is not supported in Visual Studio 2019" \(不支援在 Visual Studio 2019 中部署至 Windows Mobile 裝置\)。 如果您必須繼續開發 Windows 10 行動裝置版裝置的應用程式,請繼續使用 Visual Studio 2017。

XAML 偵錯工具:

  • XAML [編輯後繼續] 現在支援 x:bind (UWP): XAML [編輯後繼續] 現在支援編輯使用 x:bind 所建立的資料繫結,其路徑包含公用屬性、項目名稱、索引屬性路徑 (集合)、附加屬性和轉換屬性。 但不支援其他變更。 這項增強功能適用於最小和最大版本為 Windows 10 SDK 1809 版 (組建 10.0.17763) 或更高版本的所有應用程式。 (注意:從 Visual Studio 2019 Update 2+ 開始,XAML [編輯後繼續] 已稱為 XAML 熱重新載入)。

SQL Server Data Tools

  • 體驗已包含 UTF-8 定序的 SSDT 和 DacFX 更新。

Visual Studio 2019 的新功能詳細資料

安裝

  • 您現在可以選擇如何安裝 Visual Studio 更新。 預設模式為 [全部下載後安裝],讓您可在下載更新時繼續使用 Visual Studio。 請注意,若您選取 [全部下載後安裝],會需要開啟 Visual Studio 安裝程式並選取 [繼續] 來完成安裝。
  • Visual Studio 更新現在會在背景下載。 這些下載只會在您的電腦閒置時執行。 當下載完成時,您會在 Visual Studio 中收到通知,指出您的下載已可安裝。
  • 您現在可以透過 [工具] > [選項] 功能表變更 [產品更新] 頁面上的設定,來控制更新安裝模式以及是否要下載更新。
Product Update Options
*產品更新選項*

啟動視窗

新的啟動視窗提供流暢的啟動體驗,以協助您快速在啟動 Visual Studio 時快速存取您的程式碼。

  • 檢視您最近的專案與資料夾,以及以按一下的方式開啟它們。 透過操作功能表,從清單中釘選和移除項目。
  • 使用公開或私人的 Git URL 複製或取出程式碼,這也會自動在 IDE 中開啟資料夾。
  • 從 Azure DevOps 登入、瀏覽和按一下來複製或連線到您的託管存放庫,或安裝其他原始檔控制主機的擴充,以檢視您和您組織擁有的存放庫。
  • 瀏覽您的本機磁碟或網路共用以尋找專案、方案或包含程式碼的任何資料夾,並在 IDE 中開啟它們。
  • 選取提供您程式碼 Scaffolding 的專案範本,以協助您開始使用新專案或方案。
  • 依專案範本標題、描述和標籤來篩選範本,或透過可取得的語言、平台和專案類型來篩選。 預設清單會顯示所有可用的範本,您最近使用的前 10 個專案範本清單則會顯示在左窗格,以供快速存取。 兩頁的精靈將可讓您一次專注在一個抉擇上。
Start window
*新的啟動視窗體驗*

殼層與平台

  • 快透過已改進的新產品圖示,快速查看您開啟及使用的是哪個版本的 Visual Studio。 新圖示在雜亂的背景中將更能清楚看見。
  • 使用我們更新的藍色佈景主題體驗 Visual Studio 的現代化外觀與操作方式,此佈景主題可為您提供更清楚的使用者介面,同時仍符合我們的協助工具標準。
  • 透過我們以精簡為目標的變更及取回 IDE 中的垂直空間,您可以顯示更多程式碼。 我們已合併標題列與功能表列,同時保留現有的功能。
  • 透過新的實驗性設定,使用 Visual Studio 做為個別監視器感知應用程式。 開啟設定可讓 Visual Studio 的元件 (例如殼層與編輯器) 以更銳利的方式呈現,不論您的顯示器設定和/或縮放比例為何。
  • 體驗跨功能表、命令、選項與可安裝元件的加強搜尋功能。 我們的新搜尋功能現在會在搜尋結果中動態顯示結果、偵測拼自錯誤,並提供相關資訊 (例如鍵盤快速鍵)。
Visual Studio Search with results
*Visual Studio 中加強的搜尋功能*
  • 透過「文件健康情況指示器」功能檢視與目前開啟之檔案關聯的健康情況資訊。
Document Health Indicator with issues
*文件健康情況指標 - 文件中有問題*
Document Health Indicator with no issues
*文件健康情況指標 - 沒有問題*
  • 若您是 C# 開發人員,您可以使用「程式碼清理」快速清理最常見的程式碼撰寫建議。
  • 透過設定設定「程式碼清理」來選取您要執行的修正集合。
Code Cleanup configuration dialog
*設定程式碼清理*
  • 透過可延伸剪貼環 (Ctrl + Shift + V) 的快顯功能表來查看您的剪貼簿歷程記錄內容。
Clipboard Ring context menu
*剪貼環操作功能表*
  • 我們藉由以下方式改進了搜尋體驗:
    • 新增功能表、元件和範本的篩選
    • 合併您的搜尋選取項目,以提供關聯性最高的搜尋結果
    • 讓您可直接從 Visual Studio 搜尋建立及新增專案/項目到解決方案中
  • 現在只要使用者符合最低要求 (.NET 4.8 Preview 與 Windows 10 2018 年 4 月更新或更新版本),改良的個別監視器感知 (PMA) 體驗就會根據預設開啟。 工具箱、中斷點、監看式、區域變數、自動變數和呼叫堆疊這類工具視窗已轉換為 PMA,因此無論您的顯示器設定及 (或) 縮放比例為何,都能清晰轉譯。
  • 新的通知體驗新增了:
    • 狀態列的新圖示和計數器體驗
    • 新的快顯通知機制
    • Visual Studio 更新與 Visual Studio 授權到期通知
  • 修正過的藍色佈景主題體驗,透過降低亮度、提高對比度和解決其他可用性問題,來因應意見反應。
  • 利用工具列區域中的可用空間作為可拖曳區域,來加強視窗拖曳功能。
  • 您現在可以將一組程式碼清理修正程式儲存成一個設定檔,以便快速選取您想在程式碼清理期間執行的修正程式組合。
Visual Studio Code Cleanup Profiles
*Visual Studio 程式碼清理設定檔*
  • 我們在 [延伸模組與更新] 對話方塊新增了標籤,協助您快速得知延伸模組處於 [預覽] 階段、是 [付費] 延伸模組,還是在 [試用] 期間。
Extensions and Updates dialogs with tags
*含有標籤的 [延伸模組和更新] 對話方塊*
  • 在 Visual Studio 2019 與更新版本中實作資料工具提示的建議方式現在是 IAsyncQuickInfoSourceProvider。 傳統編輯器快速資訊 API IVsTextTipDataTextTipData 在 Visual Studio 2019 Preview 1 中已過時。
  • 編輯器智慧標籤 (Microsoft.VisualStudio.Language.Intellisense 命名空間中的 SmartTag* 介面系列) 已被 LightBulb API 取代,而且從 Visual Studio 2019 Preview 1 起將不再支援。
  • 方案選項 [顯示進階組建組態]、[永遠顯示方案] 與 [建立時儲存新專案] 已因未使用率低而移除。 這些值已被設定為其預設值 True
  • 使用新的 [預覽功能] 頁面 ([工具] > [選項] > [環境] > [預覽功能]) 選擇加入或退出特定預覽功能。

效能

  • 我們為資料夾和解決方案的組建選取新增了快速鍵:Ctrl + B
  • 藉由載入您的方案且卸載所有專案,以快速開啟大型方案。 Do not load projects
  • 使用方案篩選檔案選擇在開啟方案時要載入的專案。
    • 透過卸載您不想要自動開啟的專案、以滑鼠右鍵按一下方案,然後選取 [另存為解決方案篩選],以建立「方案篩選檔案」。 您接著可以使用篩選檔案來為後續使用者開啟方案。 Solution filters
  • 我們為 CMake 檔案新增了全部建置的命令:Ctrl + Shift + B
  • 我們改善了 CMake 專案中 C++ 檔案的 IntelliSense 效能。
  • 我們在專案和解決方案操作功能表新增了一個命令,以載入未載入的專案相依性。
  • 用以改善 Visual Studio 效能的通知提示現在會存留在效能中心,可以透過 [說明] > [管理 Visual Studio 效能] 存取。
  • 您現在可以在「工作狀態中心」看到您的方案載入進度,並在您的方案載入完成時看到通知。
  • 使用方案篩選檔案選擇在開啟方案時要載入的專案。
    • 透過卸載您不想要自動開啟的專案、以滑鼠右鍵按一下方案,然後選取 [另存為解決方案篩選],以建立「方案篩選檔案」。 您接著可以使用篩選檔案來為後續使用者開啟方案。
  • 當您在「開啟資料夾」案例中按一下 Ctrl+T 時,體驗改良的建置資產探索與檔案搜尋。
  • 請注意效能改進,因為現在 Visual Studio 編輯器將會限制輸入效能上的輔助元件影響。 特別是,它將會自動取消輸入時任何長時間值行的非基本作業。
  • 您可以透過 [工具] > [選項] > [文字編輯器] > [進階] 來設定 Visual Studio 輔助元件限制行為:
Visual Studio Typing Latency Options
*Visual Studio 鍵入延遲選項*
  • 您現在可以在方案總管工具視窗中停用從先前的工作階段還原專案階層狀態的功能。 我們實作此功能的原因是在方案開啟期間從先前的工作階段還原專案階層會造成方案載入延遲。
    • 在 [工具] > [選項] >>[專案與解決方案] > [一般] 中切換此選項。
Solution load restore settings
*解決方案載入還原設定*
* 您現在可以停用從原先工作階段還原工作視窗狀態的功能,改為一律在啟動時載入方案總管與 Team Explorer。 實作此變更的原因是從先前的工作階段還原工具視窗會造成方案在啟動時載入延遲。 *您可在 [工具] > [選項] > [環境] > [啟動]**** 中切換此選項。

一般偵錯和診斷

一般偵錯
  • 透過鍵盤使用我們的新搜尋功能來反白、尋找及瀏覽關鍵字,此搜尋功能已整合到 [監看]、[自動] 與 [區域] 視窗。
Searching for keywords in Watch
在 [監看] 視窗中搜尋
  • 透過將逗號附加到清單項目,檢視指定名稱與選項下拉式清單,以在 [監看]、[自動] 與 [區域] 中設定資料格式。
Format Specifier Dropdown List in Watch
監看 視窗中的格式指定名稱下拉式清單
  • 您現在可以使用適用於 .NET Core 的自訂與 DataSet 視覺化檢視支援。
DataSet Visualizer for .NET Core
.NET Core 應用程式的資料集視覺化檢視
  • 針對在 Windows 上執行的 C++ 應用程式,PDB 現在會在個別的 64 位元處理序上載入。 此變更已解決由於偵錯工具在針對包含大量模組與 PDB 的應用程式進行偵錯時耗盡記憶體而導致的各種當機問題。
受控資料中斷點

您現在可以使用資料中斷點,在特定物件的屬性值於 .NET Core (3.0 以上的版本) 應用程式中變更時中斷。這原本是 C++ 專屬的功能。 因為資料中斷點可以聚焦於特定物件的屬性上 (即使其超出範圍),所以適合作為簡單在屬性的 setter 上放置中斷點的替代方式,不過若您有數百個物件都在呼叫該函式,那麼前一種做法可能會導致常常發生間歇性中斷。

Data breakpoints for .NET Core
.NET Core 應用程式中的資料中斷點
監看式視窗搜尋 UX 更新

我們已為 [自動變數]、[區域變數] 和 [監看式] 視窗的搜尋 UI 換上了更簡單的介面。 「進行更深入的搜尋」功能已變更為下拉式清單,讓您可快速為起始和後續搜尋選取深度。

套用程式碼樣式喜好設定
  • 您現可利用 dotnet 格式全域工具從命令列套用程式碼樣式喜好設定。 您需要 .NET Core 2.1 SDK 或更新版本才能安裝。 在您慣用的終端機中執行下列命令:dotnet tool install -g dotnet-format --version 3.0.0-beta4-19105-10
dotnet format video
從命令列執行 dotnet 格式。

擴充性

  • 在 Visual Studio 2019 中,您將再也無法安裝以 V1 vsixmanifest 延伸模組格式建置的延伸模組。 V1 是在 Visual Studio 2010 中引進,而且在 Visual Studio 2017 中過時,因為它會導致 Visual Studio 不穩定。 在 Visual Studio 2019 中,已完全移除對 V1 的支援。 以 Visual Studio 2019 為目標的延伸模組應該使 V2 或 V3 的 vsixmanifest 格式重新建置。
  • 現在當延伸模組以同步方式自動載入時,您將會收到通知。 請注意,延伸模組在此版本中將正常載入並運作,但在下一版的 Visual Studio 2019 更新中可能無法運作。 更多詳細資訊可在我們關於透過更新延伸模組自動載入行為來改進關鍵案例回應能力的部落格文章中找到
整合的 SDK NuGet 套件

在以前,延伸模組作者必須為要在自己延伸模組中使用的 Visual Studio SDK 個別 NuGet 套件製作許多個別參考。 五花八門的套件版本常常相異,很常導致編譯時間的相依性衝突與執行階段問題。

如果要解決這些問題,請使用稱作 Microsoft.VisualStudio.SDK 的新套件,其中包含所有 Visual Studio SDK 構成套件的相依性。 該套件解決了版本不符的問題,且讓人共容易知道該使用哪個版本。 只要使用版本與您延伸模組支援的最低 Visual Studio 版本相應的套件,您就能存取整個 SDK。

目前僅提供 15.9 版的 SDK 套件,但我們會在接下來的幾個月陸續推出直到 14.0 版的其他版本。

新增及更新的專案範本

VSIX 專案範本在經過多次更新之後,變得更易於使用且更好:

  • 使用全新的整合式 SDK NuGet 套件
  • 包含 AsyncPackage 類別
  • 不再需要 .resx 檔案就能編譯套件
  • 以 .NET Framework 4.7.2 為目標

我們建立了全新的空白 VSIX 專案範本,該範本和 VSIX 專案範本相同,但沒有 AsyncPackage 類別。 此外,其參考了整合式 SDK NuGet 套件,能為 MEF 延伸模組和其他無套件的延伸模組類型提供很好的起點。

免費/付費/試用

我們之前一直沒有能輕鬆確認延伸模組是標記為免費、付費或試用的方法。 但現在有了如此方法,使 [延伸模組和更新] 對話方塊中的延伸模組都會清楚標記為試用或付費等狀態。 不具試用/付費標籤的延伸模組均為免費。

測試工具

測試視窗中先前已取消記載但標示為公開的多餘 API,已新增到淘汰清單

原始程式碼控制

  • 既然 Team Explorer 的 Git 工具支援 Git 隱藏,您可以暫時存放變更,以便您可以處理另一個工作。
  • 在 Visual Studio 2019 中,使用我們的全新提取要求體驗來檢閱、執行甚至針對來自 Azure Repos 的提取要求進行偵錯,而不需要離開 IDE。 若要開始,您可以從 Visual Studio Marketplace 下載適用於 Visual Studio 的提取要求延伸模組。
New Pull Request Experience
新的提取要求體驗

MSBuild

  • MSBuild 工具集版本已從 15.0 變更為 CurrentMSBuild.exe 現在位於 %VSINSTALLDIR%\MSBuild\Current\Bin\MSBuild.exe
  • MSBuild (與 Visual Studio) 現在以 .NET Framework 4.7.2 為目標。 若要使用新的 MSBuild API 功能,您的組件也必須升級,但現有的程式碼將繼續運作。

C#

對於 Visual Studio 2019 之前的每個版本,C# 語言版本一律是相當於最新主要。 在 Visual Studio 2017 中,C# 發展並推出三個次要版本:7.1、7.2 和 7.3。 不過,新專案已仍預設為 C# 7.0。 這樣令想使用新功能的 C# 開發人員挫折,他們必須針對每個新專案手動變更,語言版本。

為了解決此問題,預設值 C# 語言版本會取決於其目標架構:

  • 如果您的目標是 .NET Core 3.0 預覽版,則 C# 語言版本會是 C# 8.0 預覽版。
  • 如果您的目標是 .NET Framework 或任何非預覽版的 .NET Core,則 C# 語言版本將會是 C# 7.3。

這樣會預設為可使用最新的穩定 C# 語言功能,而在使用 .NET Core 預覽版時,會使用配合 .NET Core 3.0 預覽版的 C# 8.0 預覽語言功能。

如果您在專案或 props 檔案中,透過 LangVersion 指定語言版本,該語言版本會覆寫先前所述的預設值。

C++

  • 既然 Visual Studio Live Share 支援 C++,您現在可以即時共同作業。
  • 透過使用 IntelliCode 這個選擇性延伸模組來節省時間,此選擇性延伸模組會使用其專屬定型與您的程式碼上下文將您最可能使用的項目放在完成清單頂端。 針對 C++,當您使用 STL 之類的熱門程式庫時,IntelliCode 提供最多幫助。
  • 我們已修改數個專案範本名稱與描述,以符合更新的 [新增專案] 對話方塊。
  • 我們已移除 Clang/C2 實驗性元件。 針對具有 /permissive- 和/或 /std:c++17 的完整 C++ 標準一致性使用 MSVC 工具集,或針對 Windows 使用 Clang/LLVM 工具鏈。 請參閱 Visual C++ 小組部落格 \(英文\) 以取得詳細資訊。
  • 我們已將 C++ 編譯器 /Gm 切換參數設定為過時。 若已明確定義用 /Gm 切換參數,請考慮將它從您的建置指令碼移除。 或者,您也可以安全地忽略 /Gm 的過時警告,因為當使用 [將警告視為錯誤] (\/WX\) 時不會將它視為錯誤。
  • C++ Android 體驗現在預設為 Android SDK 25 與 Android NDK 16b。
生產力
  • 程式碼分析現在會在背景自動執行。 警告會在您鍵入的同時,在編輯器內以綠色波浪線顯示。
  • 範本列現在使用 Peek Window UI 來取代強制回應是窗、支援巢狀範本,並會將任何預設引數預先填入預視視窗中。
  • NULL->>ullptr 程式碼分析警告 (C26477 USE_NULLPTR_NOT_CONSTANT) 的自動修正可在相關程式行透過燈泡功能表取得,並會根據預設在 C++ Core Check Type Rules 規則集中啟用。 IDE 中的其他簡易修正還包括:新增遺漏的 #include 指示詞、修正遺漏的分號及修正不當使用 '*' 與 '&' 的情形。
  • 根據預設,C++ 主控台和傳統型應用程式不再產生先行編譯標頭檔。
  • 移至定義現在依 #include 指示詞執行,會開啟對應的檔案。 這包括 F12 快速鍵,其提供輕鬆的程式碼瀏覽方式。
  • 暫留在程式碼區塊的右大括弧,會提供有關該區塊內容的實用資訊。
  • 我們在 ConcurrencyChecker 中從 <mutex> 標頭新增了知名 STL 類型的支援。
  • Lifetime profile 檢查程式已更新的部份實作可用於偵測懸置的指標和參考。
  • 我們在編譯器中新增了 C++20 運算子 <> (「太空船」) 的初步支援,以進行三向比較。
CMake
  • 我們改善了 CMake 專案中 C++ 檔案的 IntelliSense 效能。
  • Visual Studio 藉由偵測您的 Linux 電腦上是否有相容的 CMake 版本,協助您在 Linux 上使用 CMake 啟動 C++ 開發。 若沒有,則會為您安裝。
  • CMake 設定編輯器可當成 CMakeSettings.json 的替代方式,而且與 CMakeGUI 有部分相同。
  • CMake 功能表已移除並重新安排,以提高與專案和解決方案之間的相似性。
  • CMakeSettings 中不相容的設定 (例如不相符的架構或不相容的 CMake 產生器設定) 會在 JSON 編輯器中顯示波浪線,並在 [錯誤清單] 中顯示錯誤。
  • 只要執行了 vcpkg integrate install,就會為 IDE 中開啟的 CMake 專案自動偵測和啟用 vcpkg 工具鏈。 您可透過在 CMakeSettings 中指定空白的工具鏈檔案來關閉這個行為。
  • 根據預設,CMake 現在會啟用 Just My Code 偵錯。
  • 靜態分析警告現在可在背景處理,以及在 CMake 專案的編輯器中顯示。
  • 為 CMake 專案新增了更清楚的建置及設定 [開始] 和 [結束] 訊息,及 Visual Studio 建置進度 UI 的支援。 此外,[工具] > [選項] 中現在有 CMake 詳細資訊設定,可用來自訂輸出視窗中的 CMake 組建詳細等級及設定訊息。
  • CMakeSettings 中現在支援 'cmakeToolchain' 設定,不必手動修改 CMake 命令列就能指定工具鏈。
後端
  • 我們進行了建置輸送量的功能改進,包括連結器對檔案 I/O 的處理,以及 PDB 合併與建立的連結時間。
  • 我們新增了 OpenMP SIMD 向量化的基本支援。 新的 CL 參數 -openmp:experimental 可加以啟用。 這讓標註了 “#pragma omp simd” 的迴圈有機會向量化。 向量化並不保證會發生,而已標註但未向量化的迴圈會收到回報的警告。 若未支援任何 SIMD 子句,就會直接略過並回報警告。
  • 我們新增了內嵌命令列參數 -Ob3,這是比 -Ob2 更為積極的版本。 根據預設,-O2 (將二進位檔最佳化以提高速度) 仍表示 -Ob2;若您發現編譯器內嵌不足,請考慮傳遞 -O2 -Ob3。
  • 為了支援包含數學程式庫函式及其他運算 (例如整數除法) 呼叫的迴圈手動向量化,我們新增了 Short Vector Math Library (SVML) 內建函式的支援,以計算 128 位元、256 位元或 512 位元的向量對等項目。 若要了解支援函式的定義,請參閱 Intel Intrinsic Guide
  • 新增及改進的最佳化:
    • 為使用 SIMD (向量) 內建項目的運算式提供常數摺疊和算數簡化,浮點數和整數形式均適用
    • 有更強大的分析可從控制流程 (if/else/switch 陳述式) 擷取資訊,以移除一律證實為 true 或 false 的分支
    • 改進 memset 展開,以使用 SSE2 向量指令
    • 改進了未使用的結構/類別副本移除,尤其是依值傳遞的 C++ 程式
    • 使用 memmove 改善了程式碼最佳化,例如 std::copy 或 std::vector 及 std::string 建構
淘汰項目
  • 不再提供 Managed C++ 測試專案範本。 您可以繼續在現有的專案中使用 Managed C++ 測試架構,但對於新的單元測試,請考慮使用 Visual Studio 有為其提供範本 (MSTest、Google Test) 或 Managed C# 測試專案範本的其中一個原生測試架構。
  • Visual Studio 安裝程式不再提供 Windows 8.1 SDK。 請將您的 C++ 專案升級到最新 Windows 10 SDK。 若您有 8.1 的強式相依性,可從 Windows SDK 封存加以下載。
  • 最新的 C++ 工具組無法再將 Windows XP 設為目標。 VS 2017 級 MSVC 編譯器與程式庫的 XP 目標設定仍具備支援,並可透過「個別元件」安裝。
  • 我們的文件積極勸阻您對 Visual C++ 執行階段部署使用合併模組。 我們在這個版本更進一步淘汰了 MSM。 請考慮將您的 VCRuntime 集中部署從 MSM 移轉到可轉散發套件。
  • 下列 C++ ATL/MFC 精靈已無法再使用:ATL COM+ 1.0 元件精靈、ATL Active Server Pages 元件精靈、ATL OLE DB 提供者精靈、ATL 屬性頁精靈、ATL OLE DB 取用者精靈、MFC ODBC 取用者、來自 ActiveX 控制項的 MFC 類別及來自 Type Lib 的 MFC 類別。 這些技術的範例程式碼封存於 VCSamples GitHub 存放庫

F#

Visual Studio 2019 中的 F# 改善有三個主要區域:

  • F# 4.6
  • 中型和大型方案的重大效能改善
  • 優秀開放原始碼社群的許多開放原始碼工作
F# 4.6

此版本包含 F# 4.6 語言:

F# 編譯器和 FSharp.Core 的功能改進

F# 和編譯器以及 FSharp.Core 已經過許多改善,尤其是來自開放原始碼參與者:

  • fsi.exefsc.exe 現在預設為 .NET Framework 4.7.2,讓載入以 4.7.2 或更低版本 .NET Framework 的元件變得可行 (#4946)。
  • 我們已將結構上的方法最佳化,並將記錄建構為具有與類別和類別型記錄相同的效能 (#3057)。
  • 我們已在 F# 程式碼中最佳化為合併布林值邏輯發出的 IL (#635)。
  • 我們將在 F# 中搭配字串的 + 用法最佳化,以盡可能呼叫最少的 String.Concat (#5560)。
  • 我們修正了 FSharp.Core 套件中會包含多餘附測試資產之目錄的問題。 FSharp.Core 4.5.5 和 4.6.1 已經沒有這項問題了 (#5814)。
  • 當使用者定義的屬性不是繼承自 Attribute 類別時,您現在將會收到警告,由 Vasily Kirichenko 提供。
  • 專案檔中的 AssemblyInformationVersionAttribute 值現在支援任意值以支援 SourceLink 之類的案例 (#4822)。
  • 「主動式模式」不合法語法的錯誤 (Bug) 會導致內部編譯器錯誤的問題已由 Steffen Forkmann 解決 (#5745)。
  • Module 尾碼錯誤地新增到遞迴模型中之模型以比對唯一差異是泛型參數之類型的錯誤 (Bug) 已由 BooksBaum 解決 (#5794)。
  • 當型別參數不與型別名稱鄰接時的錯誤訊息改良功能已由 Alan Ball 改良 (#4183)。
  • uint16 常值尾碼正確地在無效數值常值的錯誤訊息中列出的問題是由 Teo Tsirpanis (#5712) 解決。
  • 計算運算式的錯誤訊息已不再訊息中說明 async,而是改為意指「計算運算式」,這是由 John Wostenberg (#5343) 處理。
  • F# 互動式中不正確地參考 .dll 的錯誤訊息已由 Bartoz Sypytkowski 修正 (#5416)。
  • 當呼叫會隱藏繼承成員的成員時,靜態解析的類型參數無法予以處理,而 Victor Peter Rouven Müller 修正了這個 Bug (#5531)。
  • Steffen ForkmannRobert Jeppesen 為編譯器新增了各種小的效能改善。
F# 效能改善

Visual Studio 2019 中 F# 的另一個重要焦點區域是中型和大型方案的效能。 我們已解決一些存在非常久的問題,某些可追溯至第一版的「適用於 Visual Studio 的 F# 工具」。 我們也獲得來自優秀 F# 開放原始碼社群的一些協助。

  • 我們修改了 Roslyn 將 F# 語言服務初始化的方式。 大型解決方案的類型色彩標示應該會較快出現。
  • 我們已變更我們來源文字的呈現方式,來避免大型配置超過時間,特別是具有大型檔案的配置 (#5935#5936#5937#4881)。
  • 我們已變更小型檔案編輯的建置快取,大幅減少使用的記憶體 (#6028)。
  • 我們修改了建議名稱的編譯器功能,當輸入無法辨識的語彙基元時,系統會在需要時才計算這些建議,這樣大幅減少了在大型專案中緩慢輸入時的 CPU 和記憶體使用量 (#6044)。
  • 我們已變更 IntelliSense,因此它預設不會再顯示來自未開啟之命名空間的符號。 此修正大幅改善在含許多參考的專案中之 IntelliSense 的效能。 您可以透過設定中的 [工具] > [選項] > [文字編輯器] > [F#] > [IntelliSense],再次開啟此功能。
  • 我們已減少使用型別提供者在完成清單中產生非常大量的提供類型時的記憶體使用量 (#5599)。
  • Avi Avni 已修正建議無法辨識之名稱的內部字串比較演算法,以減少 CPU 和記憶體使用量 (#6050)。
  • Avi Avni 修正了大型字串配置的顯著來源,這種情況在 IDE 工具特別常見 (#5922)。
  • Chet Husk 已修正來自計算 IntelliSense 之值得注意的大型物件堆積配置來源 (#6084)
F# 工具的改善

除了效能改善,還有 Visual Studio 2019 F# 工具的各種其他改善:

  • 新增 open 陳述式程式碼修正現在將會預設為在檔案頂端新增 open 陳述式。
  • 我們已修正使用者程式碼中的 match! 使結構指導方針與程式碼 (概述後續範圍節點) 無效的錯誤 (Bug) (#5456)。
  • 編輯器現在將會使用可變動值顏色標示正確地將 byrefoutrefref 值的色彩設定為與記錄欄位相同 (#5579)。
  • 我們已修正重新命名重構無法識別符號名稱中之 ' 字元的問題 (#5604)。
  • 我們修正了為 F# 指令檔重新命名會導致色彩標示資料遺失的長期 Bug (#1944)。
  • 我們清理了 IntelliSense,使它在按一下退格鍵時不會在清單中顯示不相關的項目。
  • 當「智慧」縮排開啟時,貼上 F# 程式碼到編輯器中會設定其格式以符合適當的範圍 (以目前的游標位置為基礎) 是由 Saul Rennison 實作 (#4702)。
  • Jakob Majocha 修正了 F# 編輯器不會同步的問題 (#5997, #5998)。
  • Eugene Auduchinok 已修正 IntelliSense 在 inherit 子句內的建構函式中,不會顯示主要建構函式的錯誤 (bug) (#3699)
  • Eugene Auduchinok 對 F# 語言服務進行了各種較小的改善
F# 開放原始碼基礎結構

我們已完全移轉 F# 和 F# 工具程式碼基底,以使用 .NET SDK。 這可大幅簡化開發人員的貢獻程序,尤其對不是使用 Windows 的開發人員。 此外,Jakob Majocha 已協助根據程式碼基底的變更為新參與者清理文件。

Python

根據客戶意見反應,Visual Studio 2019 包括管理 Python 環境的檢修體驗:

  • 我們已加入新的 [新增環境] 對話方塊,這可以簡化在您的專案中建立及新增虛擬環境與 conda 環境的體驗。
  • Visual Studio 安裝程式再也不會安裝完整版 Anaconda 以減少 Visual Studio 安裝大小並避免升級期間的錯誤。
  • Miniconda 與 Python 工作負載組合成選用元件,讓您不必安裝 Miniconda/Anaconda,就可以建立 conda 環境。
  • 若您專案的根目錄有 requirements.txt (虛擬環境) 或 environment.yml (conda 環境),系統將會自動提示您新增環境。
  • 在編輯 Python 檔案時,有新的 [Python 環境] 工具列可用。 新的工具列可讓您在處理專案、[開啟資料夾] 工作區或其他專案中的鬆散 Python 檔案時,在不同 Python 解譯器之間切換。
  • Python IntelliSense 中自動完成的品質改善,包括偵測相關項目和命名空間匯入的改善。
  • Django 專案範本已更新,以支援 Django 2.x。
  • 函式傳回值現在會顯示在 Python 偵錯工具中。
  • 您現在可以建立 VS Live Share 工作階段,並與其他 Visual Studio 使用者在 Python 程式碼上共同作業。 先前,從 Visual Studio Code 建立加入工作階段建立時,才支援 Python。

JavaScript/TypeScript

  • 我們新增了在 Node.js 專案中的單元測試提供 JavaScript 偵錯功能的支援。 這是 Node.js 客戶期盼已久的功能。
  • JavaScript/TypeScript 語言服務會在自動在已安裝的 TypeScript NuGet 套件npm 套件的專案中載入 (NuGet 套件支援 TypeScript 3.2 以上的版本,npm 套件則支援 TypeScript 2.1 以上的版本)。
  • 我們提高了語言功能的記憶體上限,使其能夠更處理更大型的專案,藉此改善了語言服務的效能。
  • 根據預設,不會再於錯誤清單中顯示已關閉 JavaScript/TypeScript 檔案的診斷。
  • 傳統 JavaScript 語言服務已無法使用。 先前,使用者可以選擇還原傳統 JavaScript 語言服務。 使用者將會有新的內建 JavaScript 語言服務可用。 新語言服務是以 TypeScript 語言服務為基礎,它是由靜態分析所提供。 這可為您提供更豐富的工具功能,因此您的 JavaScript 程式碼可受益於以型別定義為基礎的更豐富的 IntelliSense。 新的服務是輕量型服務,而且取用比傳統服務少的記憶體,為使用者提供更好的較能做為其程式碼規模。

Team Explorer 與 Azure DevOps

我們對 Azure DevOps 的 Git 工作項目進行了功能改進。

  • 您可以使用新的身分識別選擇器指派工作項目給自己或其他人。 根據預設,您會看到最近使用的人員清單。 或者,您可以使用搜尋功能來搜尋及尋找組織中的其他人。
  • 我們改善了註解訊息中的 #提及體驗。 當您從 #提及選擇器中選取工作項目時,該項目就會自動新增到 [相關的工作項目] 清單中。
Assigning work items and #mention improvements
指派工作項目和 #提及功能改進

最忙碌路徑反白顯示

  • 我們在效能分析工具的 CPU 使用率和 DotNet 物件配置工具中,都新增了最忙碌路徑反白顯示的支援。 選取呼叫樹狀結構中的任何函式,並按 [最忙碌路徑] 按鈕,即可展開 CPU 使用率或 DotNet 物件配置的最忙碌路徑。 這項功能可讓您輕易找出使用了最高 CPU 百分比或配置了最多物件的函式呼叫。
Hot path highlighting in the CPU Usage tool
CPU 使用率工具中的醒目提示功能

.NET 與 ASP.NET 工具

  • 我們對所有應用程式的發行設定檔摘要頁面進行了多種小規模的 UX 改進 (新的區段標題和動作/快速鍵)。
  • 在將 ASP.NET 應用程式發行到 Azure App Service 時,發行設定檔摘要頁面現在會有名為「相依性」的新區段。 這個新區段目前可讓您在 Azure 儲存體和 Azure SQL 資源與您的應用程式服務執行個體之間建立關聯。 日後,會有更多 Azure 服務透過這種機制呈現。
  • 透過我們加入的相容性,使用程式碼度量搭配 .NET Core 專案。
  • 透過 [工具] > [選項] > [文字編輯器] > [C#] > [程式碼樣式] 使用 [從設定產生 .editorconfig 檔案] 按鈕,將編輯器設定匯出到 Editorconfig 檔案。
  • 使用 C# 與 Visual Basic 的新 Regex 剖析器支援。 現在可辨識規則運算式,而且已在其上啟用語言功能。 Regex 字串會在在字串傳遞到 Regex 建構函式或字串前面有包含字串 language=regex 的註解時辨識。 此版本中包含的語言功能為分類、括號對稱、反白參考與診斷。
Regular expressions now have parser support
規則運算式剖析器支援
  • 您現在可以搭配選擇性的程式碼修正為未使用的私用成員使用無作用程式碼分析,以移除未使用的成員宣告。
  • 存取子上的「尋找參考」功能現在只會傳回該存取子的結果。
  • 我們已加入程式碼修正以產生解構方法。
  • 當程式碼貼到檔案中時,可已新增 "Using" 陳述式。 程式碼修正會在貼上已辨識程式碼 (提示您新增相關遺失匯入) 之後出現。
  • 現在有更多的重構與快速動作可以使用 "Ctrl + ." 來取得或按一下 "Alt + Enter":
    • 針對隱含 "await" 但忽略的案例,現在有編譯器警告。
    • 針對將區域函式轉換為方法。
    • 針對將元組轉換為具名結構。
    • 針對將匿名型別轉換為類別。
    • 針對將匿名型別轉換為元組。
    • 針對 foreach loop 到 LINQ 查詢或 LINQ 方法。
  • 您現在已新增對在 Azure Kubernetes Service 中執行之 ASP .NET Core 應用程式的支援。 若要開始,請參閱 GitHub 上的此 docker 範例
  • 現在效能分析工具的 CPU 使用量工具支援 ASP.NET。
CPU Usage Tool in Performance Profiler
現在效能分析工具中的 CPU 使用量工具
  • 您現在可以使用 [尋找所有參考] \(Shift+F12\) 與 CodeLens 來顯示來自 .NET Core 專案中之 Razor (.cshtml) 檔案的結果。 您接著可以瀏覽到相關 Razor 檔案中指出的程式碼。
  • 我們已新增以 Windows 虛擬機器 (VM) 與 VM 擴展集上執行之 ASP .NET (Core 與 Desktop) 應用程式為目標的支援。
Snapshot debugger target selection UI
快照偵錯工具目標選取範圍 UI
  • 現在當您使用 FxCop 執行程式碼分析時會收到警告。 建議以後使用 .NET 編譯器分析器來執行程式碼分析。 深入了解移轉到 .NET 編譯器平台分析器
  • 已不再提供可攜式類別庫 (PCL) 專案範本,而且預設不會安裝專案支援。 想要以多個平台為目標的新專案應該使用 .NET Standard 專案類型。 需要 PCL 專案支援的客戶必須從 Visual Studio 安裝程式的 [個別元件] 索引標籤個別安裝該元件。
  • 已不再提供 "Project.CopyWebSite" 命令。 此功能只有在 .NET 上的「網站」專案類型中可用。 它可讓您同步兩個網站,讓其上的每個檔案都有相同的版本。 在 Visual Studio 2019 中,您可以從 Visual Studio 外的遠端目的地複製檔案,然後開啟專案。
  • 已移除從遠端 FTP 位址開啟網站專案的能力。 FTP 使用者可以從 Visual Studio 外的遠端目的地複製檔案、開啟專案並進行變更,然後使用「發佈到」功能將它們發佈回遠端 FTP 位置。
  • ASP.NET 與 Web 工作負載已不會再安裝自訂 offeeScript 編輯體驗。 Visual Studio 的 TextMate 套件組合提供可處理 CoffeeScript 的卓越體驗。
  • 編輯那些檔案時,目前由內建 CSSLint 與 CoffeeLint 複本產生的 CSS 與 CoffeeScript 錯誤再也不會自動呈現。 使用替代方法執行 Linter (例如 npm 或 Visual Studio 工作執行器總管)。
  • Visual Studio 再也不會為 Knockout HTML 屬性提供 IntelliSense。 在 Visual Studio 2019 中,您將必須輸入屬性。
  • 已移除在 ASP.NET 專案中使用傳統 Chrome 偵錯工具來針對 JavaScript 進行偵錯的功能。 您可以繼續使用目前內建在 Visual Studio 中的 Chrome 偵錯工具。
  • 已移除在 ASP.NET 專案中使用 JavaScript 主控台功能的能力。 建議客戶使用包含在他們慣用瀏覽器開發工具中的 [主控台]。

容器工具 (部分機器翻譯)

  • 我們新增了用於容器化及偵錯並經過簡化的單一專案體驗:
    • ASP.NET Web 應用程式 (.NET Framework)
    • 主控台應用程式 (.NET Core)
  • 我們為使用 Alpine 作為基礎映像的 ASP.NET Core 應用程式新增了對其偵錯的支援。
  • 我們新增了最新 ASP.NET 和 .NET Core 映像的支援。

.NET Core 工具

.NET Core 3.0

在此版本中,如果您安裝了 Preview SDK,您可以建立針對 .NET Core 3.0 的 ASP.NET Core、主控台和類別程式庫專案。

如果您使用 Visual Studio RC,您也需要前往 [工具] > [選項] > [專案和方案] > [.NET Core],然後選取 [使用 .NET Core SDK 預覽核取方塊]。 如果您使用 Visual Studio Preview,則不需要執行這項操作。 您可以在 .NET Core tooling update for Visual Studio 2017 version 15.9 (Visual Studio 2017 15.9 版的 .NET Core 工具更新) 中閱讀此設定及其行為的詳細資訊。

您也可以使用 "dotnet new" 命令,為 .NET Core 3.0 建立 Windows Forms 或 WPF 專案。 接著即可以在 Visual Studio 2019 中開啟這些專案。

新功能

從這個版本開始,我們會讓 .NET SDK 樣式專案的專案檔變成 Visual Studio 中的第一級檔案類型。 現在支援下列功能:

  • 按兩下專案節點開啟專案檔
  • 按一下專案節點在 [預覽] 索引標籤中開啟專案檔
  • 使用 [移至全部] 依名稱尋找專案檔 (ctrl + T)
  • 現在可使用 [檔案中尋找] 搜尋專案檔中的 MSBuild 元素
  • 若出發了專案撰寫錯誤,就會從錯誤清單開啟

此外,.NET SDK 樣式的專案現在會使用新的整合式主控台,以在主控台應用程式使用 F5ctrl + F5。 這使得從 Visual Studio 啟動主控台應用程式時的體驗達成一致:

  • 若是 F5,主控台視窗不會在應用程式完成執行時自動關閉。 您不必再將 Console.Read() 呼叫新增到您的主控台應用程式。
  • 若是 ctrl + F5,主控台視窗會在應用程式的後續執行中重複使用。 您不必再關閉主控台視窗的負載。

在新的主控台視窗開啟時按任意鍵,或選取 [工具] > [選項] > [偵錯停止時,自動關閉主控台] 下的選項,即可自動關閉。

已將授權運算式和授權檔案的支援新增到專案屬性頁面。 這是配合 NuGet 中淘汰 licenseUrl 的變更。

效能改善
  • 已大幅改善大型方案的延展性,讓您能使用比之前更大的 .NET Core 方案。
  • 已大幅減少大型專案的方案載入時間,且載入時的 CPU 和記憶體也減少了。
非 .NET Core 專案的功能同位對照

您可以在 16.016.0 Preview 216.0 Preview 316.0 Preview 4 里程碑中找到問題和提取要求的完整清單。

.NET 生產力

  • .NET 重構和程式碼修正:

    • 同步命名空間和資料夾名稱
    • 含有對話方塊選項的成員上移重構
    Pull members up refactoring with dialog options
    成員上移對話方塊
    • 包裝/縮排/對齊參數/引數的清單
    • 將匿名型別轉換為元組
    • 對 Lambda 使用運算式/區塊主體
    • 轉換條件運算式和邏輯運算
    • 自動在遇到 “/” 時關閉區塊註解
    • 轉換為複合指派
    • 修正隱含型別變數不可為常數的情況
    • 自動修正程式可在鍵入插入逐字字串時,以 $@" 取代 @$"
    • 完成 #nullable enable|disable
    • 修正未使用的運算式值和參數
    • 修正可讓擷取介面保留在相同檔案中
  • 依 R/W 為參考分類。

  • 為 csharp_prefer_braces 新增 Editorconfig when_multiline 選項。

  • .NET Compiler Platform SDK (又名 Roslyn) 提供新的分類色彩。 新的預設色彩與 Visual Studio Code 色彩類似,會逐步推出。您可在 [工具] > [選項] > [環境] > [字型和色彩] 中調整這些色彩,或在 [環境] > [預覽功能] 中取消選取 [使用增強色彩] 核取方塊予以關閉。 歡迎提供意見反應,讓我們知道這項變更如何影響您工作流程。

New Roslyn classification colors
新的 Roslyn 分類色彩

ASP.NET 專案中的 JavaScript 偵錯

  • 若您使用 ASP.NET 專案的 [瀏覽方式...] 功能表,以自訂引數新增了 Google Chrome 瀏覽器,Visual Studio 現在會在偵錯開始時,為您的應用程式啟用 JavaScript 偵錯。 您的 Google Chrome 自訂啟動引數會在啟動 Chrome 時套用。
Adding Google Chrome with Custom arguments using 'Browse with'
使用 [瀏覽方式...] 以自訂引數新增 Google Chrome
注意:除非您以引數形式提供您的資料目錄路徑,否則根據預設, Visual Studio 會使用與一般 Chrome 執行個體不同的資料目錄來啟動 Chrome。 因此,如果您要讓任何延伸模組在使用這個 Chrome 執行個體的時候可供使用,就必須在一開始先加以安裝。

ASP.NET & Azure Functions 工具

  • Visual Studio 2019 帶來了全新的專案建立體驗。 特別是在建立新的 ASP.NET 專案時,Visual Studio 會提供能呈現 ASP.NET 特定選擇的額外對話方塊。 這些額外對話方塊已經過更新,能符合體驗中其他部分的視覺效果樣式。
  • 直到現在,在 Visual Studio 中進行的認證發行都會經過加密,並儲存到發行設定檔使用者檔案內,使您不必每次發行應用程式都需要重新輸入它們。 因為使用者檔案較可能包含祕密和不應共用的個人資訊,所以一般會排除在原始檔控制之外。 目前為止,如果有 Azure Functions 專案的發行設定檔簽入了原始檔控制,但使用者檔案卻沒有簽入的話,就會失去發行認證,並使得發行設定檔無法受到重複使用。 現在,我們允許編輯認證和建立新使用者檔案,以便發行設定檔能受到重複使用。

效能精靈

在 Visual Studio 2019 中,「效能精靈」中提供的分析體驗已移至「效能分析工具」。 您可以找到可用來取樣的「CPU 使用量工具」,並在「效能分析工具」中的檢測工具中找到檢測。 由於此變更,再也不需要「效能精靈」,因此 Visual Studio 2019 已將它移除。 此外,已移除 VS 效能命令列工具中的取樣選項,將在未來的預覽版中推出替代命令列工具。

測試工具

  • 您可以以滑鼠右鍵按一下 [方案總管] 中的測試、測試類別或測試專案以執行測試或針對測試進行偵錯。
  • 測試回合現在會自動偵測專案屬性中設定的是哪個處理器架構。
  • OSS UI 測試工具 (例如 Selenium 與 Appium) 已獲得動力且非常受社群歡迎。 因為這些架構已成為產業標準,我們已將用於自動化 UI 驅動功能測試的「自動程式化 UI 測試」設定為過時。 Visual Studio 2019 將會是具有「自動程式化 UI 測試」功能的最終 Visual Studio 版本。 我們建議您使用 Selenium 測試 Web 應用程式,而使用 Appium 與 WinAppDriver 測試傳統型與 UWP 應用程式。
  • Visual Studio 2019 將會是具有負載測試功能的最終 Visual Studio 版本。 針對需要負載測試工具的客戶,我們建議使用替代的負載測試工具,例如 Apache JMeter、Akamai CloudTest、Blazemeter。
  • 在 Visual Studio 2019 中,會移除一些先前標記為公用,但從未正式記載的測試視窗 API。 它們在 Visual Studio 2017 中標示為「已過時」,可為延伸模組維護人員提供初期警告。 據我們所知,很少有延伸模組相依於這些 API。 這些 APIs 包括 IGroupByProvider、IGroupByProvider、KeyComparer、ISearchFilter、ISearchFilterToken、ISearchToken 與 SearchFilterTokenType。 如果此變更會影響您的延伸模組,請在開發人員社群提交問題讓我們知道。

Visual Studio Kubernetes Tools

Visual Studio Kubernetes Tools 原先以 Visual Studio 2017 的獨立延伸模組形式提供,現在則整合到 Visual Studio 2019 的 Azure 開發工作負載中。

在新專案新增 Kubernetes 支援

若要在新專案新增 Kubernetes 支援,請開啟 Visual Studio,然後選取 [建立新專案] 選項。 在 [建立新專案] 視窗中搜尋 Kubernetes,然後選取 [適用於 Kubernetes 的容器應用程式] 專案範本。

Creating a Container Application for Kubernetes
建立適用於 Kubernetes 的容器應用程式

按一下 [下一步],然後輸入專案名稱、位置和解決方案名稱。 接著按一下 [ 建立]。 選取您要用於專案的 ASP.NET Core 應用程式範本,然後按一下 [確定]。 Visual Studio 會自動建立 Docker 檔案和 Helm 圖表,可供您用來建置新的應用程式並部署到 Kubernetes 叢集。 如有需要,您可以修改這些成品。

在現有的專案新增 Kubernetes 支援

您可在現有的 ASP.NET Core 應用程式新增 Kubernetes 支援。 若要這樣做,請在 Visual Studio 2019 中開啟專案。 在方案總管中,以滑鼠右鍵按一下專案,指向 [新增],然後按一下 [容器協調器支援]

Adding container orchestrator support
新增容器協調器支援

在 [容器協調器支援] 對話方塊中,選擇 [Kubernetes/Helm],然後按一下 [確定]。 Visual Studio 會自動建立 Docker 檔案和 Helm 圖表 (在名為 charts 的資料夾中),可供您用來建置應用程式並部署到 Kubernetes 叢集。 如果這些成品有其中一個已經就緒,則不會覆寫該成品。 如有需要,您可以修改這些成品。

建立可公開存取的端點

當您在新的或現有專案新增 Kubernetes 支援時,Visual Studio 會詢問您是否想要為應用程式建立可公開存取的端點。

Publicly accessible endpoint prompt
可公開存取端點的提示

若您按一下 [是],Visual Studio 會為您的應用程式設定 Helm 圖表,以在應用程式部署到 Kubernetes 叢集時,建立 Kubernetes 輸入物件。 您可以藉由修改 Helm 圖表,隨時變更這個選項。

在 Azure Kubernetes Service 中對應用程式偵錯

當您在新的或現有專案中新增 Kubernetes 支援後,就可以在即時的 Azure Kubernetes Service (AKS) 叢集中使用稱為 Azure Dev Spaces 的功能,輕鬆建置、執行應用程式及對其偵錯。 要在實際 Kubernetes 叢集的內容中測試專案,或要對屬於更大應用程式中的服務偵錯時,這會很實用,而且不需要在本機複寫整個應用程式。 Azure Dev Spaces 也包含可讓開發團隊共用 AKS 叢集的功能。 如需 Azure Dev Spaces 的詳細資訊,請參閱 Azure Dev Spaces 文件。 若要開始使用,請確認已在 Visual Studio 中選取 Azure Dev Spaces 作為偵錯啟動目標。

Selecting Azure Dev Spaces as debug launch target
選取 Azure Dev Spaces 作為偵錯啟動目標

在 Dev Spaces 中初次啟動專案之前,請先設定您要使用的 Azure 訂用帳戶和 AKS 叢集。 也請選取您要在其中執行專案的空間。

Configuring Azure Dev Spaces
設定 Azure Dev Spaces

通常,您的團隊會在 [預設] 空間中執行整個應用程式的最新穩定版本。 之後,您會在 [預設] 空間的子空間中執行您處理的服務版本。 現在則不需要在子空間執行其他服務;Dev Spaces 會自動將呼叫從您的服務路由到在 [預設] 中執行的服務穩定版本。 如需如何進行這項設定的詳細資訊,請參閱 Azure Dev Spaces 文件中的團隊開發教學課程。 在您選取了正確的訂用帳戶、叢集和空間之後,請按一下 [確定] 繼續進行 Dev Spaces 設定。 若您選取的叢集尚無已建立關聯的 Dev Spaces 控制器,請在下列對話方塊中按一下 [確定],以自動建立一個控制器。

Enable Dev Spaces dialog
[啟用 Dev Spaces] 對話方塊

控制器建立過程約需 2 分鐘。 您可以按一下 Visual Studio 視窗左下角的 [背景工作] 按鈕查看狀態。

Azure Dev Spaces controller creation status via Background Tasks
[背景工作] 中的 Azure Dev Spaces 控制器建立狀態

當您的 Dev Spaces 控制器就緒時,就按 F5 或按一下工具列上的 [Azure Dev Spaces] 偵錯按鈕,以在 AKS 中對您的專案偵錯。

Azure Dev Spaces debug button
Azure Dev Spaces 偵錯按鈕

Dev Spaces 會將您的程式碼同步到 Azure、建置包含程式碼的容器映像,並使用專案中定義的 Helm 圖表將其部署到 AKS 叢集。 Visual Studio 會對執行於叢集的服務建立遠端偵錯連線,讓您可以與其互動,方式就如同對執行於本機的服務偵錯。

Xamarin 的行動開發

此版本包括工作負載大小與 Android 建置效能可靠性改良,以及 Xamarin.Android  與 Xamarin.Forms 生產力加強功能。

  • Xamarin 負載現在只有 7.69GB,相較於 Visual Studio 2017 15.9 版減少 2 倍,而相較於 15.7 版減少 3 倍。
  • IntelliCode 延伸模組現在支援 Xamarin.Forms XAML。
[檔案] > [新增專案]

我們進行的效能改進,目的是縮短建立新 Xamarin 專案的時間,讓您可以更快開始建置應用程式。 我們現在也在工作負載安裝過程中包含了範本所使用的 NuGet 套件,以縮短套建還原時間,尤其是在低頻寬或離線的情況下。 在某些情況下,這些功能改進讓新 Xamarin 專案完全載入及還原的時間減少了近 50%。

New Xamarin project comparison gif
在 Visual Studio 15.9 版 (左) 和 Visual Studio 2019 (右) 中建立新 Xamarin 專案
建置進度列指示器

您現在可在建置專案時,看到更詳細的建置進度資訊。 在建置期間按一下左下角的背景工作圖示,會顯示目前執行的建置目標。 這可用於判斷是否建置仍在執行,但目標花費了很長的時間才完成。

Xamarin build progress indicator
Xamarin 建置進度列指示器
Xamarin.Forms Previewer 的基本預覽模式

您不再需要為 Xamarin.Forms XAML Previewer 建置您的專案,以顯示您的程式碼預覽! 如果您的 XAML 檔案中有自訂控制項,您可以需要建置專案才能預覽它們,或選擇將它們加入設計階段轉譯\(機器翻譯\)。

Xamarin.Forms Previewer 裝置下拉式清單

您現在可以使用我們新的裝置下拉式清單,在不同的 Android 和 iOS 裝置間切換來預覽您的 Xamarin.Forms XAML。

Xamarin.Forms Device Drop-Down
Xamarin.Forms 裝置下拉式清單
Xamarin.Forms 屬性面板

您現在可以在屬性面板中編輯 Xamarin.Forms 控制項、儲存格與版面配置的最常見屬性,並在看到那些變更立即反映在您的 XAML 中。

Xamarin.Forms Property Panel
Xamarin.Forms 屬性面板
Xamarin.Forms Shell 範本

我們更新了 Xamarin.Forms 範本,以使用最新 Xamarin.Forms 版本 \(英文\),並為 Xamarin.Forms Shell 應用程式新增了範本選項。 Shell 的目的是降低應用程式的複雜度,同時提高開發人員生產力,並著重於轉譯速度及記憶體使用量。 這個範本會提供您適用於 Android 和 iOS 的已啟動 Shell 應用程式。

Android 建置效能與可靠性

在 Visual Studio 2017 15.9 版與 Visual Studio for Mac 7.7 中,我們以進行初始建置效能與建置正確性改良。 在 Visual Studio 2019 與 Visual Studio for Mac 7.8 中,我們讓建置及部署速度加快了。

Android Build Performance
*現在不用一杯咖啡的時間,Android 建置就完成了*
  • 您現在將會使用 Android 新一代的封裝工具。 若要啟用這項功能,請在您專案的 .csproj 中新增 MSBuild 旗標:
    • aapt2 將 Android 封裝分為兩個步驟:編輯及連結。 這樣可改進累加建置效能,並提供更簡單的錯誤報告功能。 例如,若單一檔案中有變更,您只需要重新編譯該檔案。 <AndroidUseAapt2>True</AndroidUseAapt2>
  • 在您的專案中啟用這項工具,您就能加強建置階段與執行階段的效能。 如需這些屬性的詳細資訊,請參閱 Xamarin.Android 中的建置程序文件。
Android Emulator 改善

在 Visual Studio 2019 中,Android 模擬器映像更容易建立了。 我們也繼續與 Windows 小組在 Windows 10 2018 10 月更新 1809 版中合作,以改進在 Hyper-V 上執行的 Android 模擬器效能。

  • 新使用者只要按一下執行圖示就可以建立其第一個映像。
  • 我們的模擬器取得體驗會自動判斷您的環境的最佳設定,並利用硬體加速 (透過 Intel HAXM 或 Hyper-V) 功能,而且依預設可快速開機。
  • 當您想要建立另一個映像時,您可以從下拉式清單選取 [建立 Android Emulator] 以開啟 Android Device Manager。
透過 Xamarin.Android 中的建置功能改進,縮短您的建置時間

我們發行了一組初始建置效能改善。 時至今日,Xamarin.Android 9.1.1+ 與前一個版本相較之下,建置效能已有顯著提升。 請參閱我們的 Xamarin.Android 15.9 與16.0 建置效能比較以取得詳細資訊。

針對 Xamarin.Android 增強的快速部署

快速部署到目前為止,提供了更快的累加式部署時間,方式是在任何資產、資源、應用程式內封裝的共用原生程式庫或繼承自 Java.Lang.Object 的使用者定義類別均未進行過變更的情況下,跳過重建或重新部署 Android 套件 (.apk 檔案) 的過程。 增強的快速部署拓展了快速部署的支援,讓原生程式庫和繼承自 Java.Lang.Object的類別均涵蓋在內。 在某些情況下,使用這些增強功能的快速部署組建只需要產生新的 .apk 檔案,例如 AndroidManifest.xml 檔案因為新增 Android.App.ApplicationActivity 子類別而變更。 這些增強功能在目前預覽中預設是未啟用。 若要加以啟用,請在 .csproj 檔案中將 $(AndroidFastDeploymentType) MSBuild 屬性設為 Assemblies:Dexes

<PropertyGroup> 
  <AndroidFastDeploymentType>Assemblies:Dexes</AndroidFastDeploymentType> 
</PropertyGroup>
Xamarin.Android 中的新一代 Dex 編譯器 (d8) 與程式碼壓縮器 (r8) 支援

Xamarin.Android 現在支援最新的 Android dex 編譯器 (d8) 和程式碼壓縮器 (r8)。 若要啟用這些功能,請在 .csproj 檔案中將 $(AndroidDexTool)$(AndroidLinkTool) MSBuild 屬性分別設為 d8r8

  • d8 是新一代的 dex 編譯器,執行速度更快,能產生較小的 .dex 檔案,且執行階段效能更棒。
<PropertyGroup> 
  <AndroidDexTool>d8</AndroidDexTool>
</PropertyGroup>
  • r8 是用於壓縮及縮製的工具,可以將 Java 位元組程式碼轉換為最佳化的 dex 程式碼,因此您已不再需要 ProGuard。
<PropertyGroup> 
  <AndroidLinkTool>r8</AndroidLinkTool>
</PropertyGroup>

如需 d8 和 r8 的詳細資料,請參閱文件

Xamarin Android Designer 功能加強

我們已經為「分割檢視」中的互動提供一些生產力加強功能。

  • 直接從工具箱拖放到原始碼編輯器,以協助快速設計您的 Android 版面配置架構。
Android Designer Toolbox to Source Editor
  • 在原始檔編輯器中直接從其 XML 定義 span 選取元素。 我們透過將插入點位置與對應的 Android 檢視同步以實作此功能,讓您直接從編輯器的屬性面板快速存取元素的屬性。
Android Designer Source Editor to Property Editor
  • 使用內嵌色彩預覽您的 XML 程式碼,就可以看到您的控制項中使用哪些色彩。
Android Designer Color Preview
  • 將滑鼠游標停在值上以深入檢視其資訊,例如它其定義位置或色彩的十六進位值為何,來使用我們的快速資訊功能。
Android Designer Quick Info
*執行中的快速諮詢*
Xamarin.Android 設計工具改良,首次支援限制式版面配置

我們已開始著手改善 Android Designer 的啟動速度。 在這個過程中,我們也改善了設計工具在載入時提供的傳訊。

Android Designer Output

除了這些功能改進以外,Android Designer 現在原生支援 Android Pie (9.0) 並提供 ConstraintLayout 屬性的自動完成。

透過 Xamarin.Android Designer 取得更完善的 XML IntelliSense 與註解最佳化

在使用 IntelliSense 將 Widget 新增到配置時,現在會提供完整的程式碼片段體驗,這樣從一開始就可以提供必要屬性。 我們為 Android XML 配置新增了智慧註解與取消註解。

在 Android 資源檔和 AndroidManifest.xml 中使用前往定義及 XML IntelliSense 提高生產力

您現在可在資源 URL 上使用 Ctrl + 按一下,瀏覽到定義了該 URL 的檔案或程式行。

Android Designer Go-To-Definition

除了配置 (色彩、字串、可繪製資源、功能表、Android 資訊清單等) 之外,現在支援其他 Android XML 檔案使用 IntelliSense/自動完成。

通用 Windows 平台

  • IntelliCode 延伸模組現在支援 XAML。
  • 為降低 Visual Studio 安裝複雜度與大小,已從 Visual Studio 安裝移除 Windows Phone 模擬器。 您現在將必須手動下載模擬器。
  • 已移除 Windows 10 Fall Creators Update (組建 16299) 之前以 Windows 10 SDK 為目標之 UWP 應用程式的 XAML 設計階段工具。 將您的應用程式的目標重新設定為 Windows 10 1709 版或更新版本以使用 XAML 設計工具或使用 XAML 編輯器。
  • 已不再支援使用 project.json 來定義 NuGet 相依性的 UWP 測試專案。 您必須升級您的專案以使用新的 PackageReference 格式。
  • Visual Studio 2019 中已不再支援 UWP JavaScript 應用程式。 您無法建立或開啟 JavaScript UWP 專案 (具有 jsproj 副檔名的檔案)。 您可以透過我們的建立可在 Windows 上正常運作之 Progressive Web App (PWA) 的文件。
  • 您可繼續如往常般附加到 JavaScript UWP 應用程式,不過已無法在 Visual Studio 2019 中使用 JavaScript 分析工具 (網路、CPU 及記憶體分析工具)。

Office 工具範本更新

在 Visual Studio 2019 中,我們已對 Office、SharePoint 與 VSTO 範本進行一些變更。

  • Visual Studio 2019 也提供在 Visual Studio 2017 15.9 中新增的 SharePoint 2019 範本。
  • 我們已移除對 SharePoint 循序工作流程或狀態機器工作流程的支援。 State Machine Workflows. 雖然您無法在 Visual Studio 2019 中建立或開啟這些工作流程,但您可以繼續在舊版 Visual Studio 中編輯它們。
  • 將不再提供 Office 2010 範本。 不過,您仍然可以在 Visual Studio 2019 中開啟現有的 Office 2010 專案。
  • 已重新命名 Office 2013 與 2016 範本以反映它們支援 Office 2013 與更新版本。

Team Explorer 與 Azure DevOps

我們正在發行將 Team Explorer 連線到 Azure DevOps 專案時新的、流暢型、以開發人員為中心的體驗。

  • 透過以指派給您的工作項目 (您正在關注的、您在討論中被提到的,以及以您的活動為基礎的) 篩選您的檢視並建立樞紐分析表,著重在相關工作項目。

    • 在每個檢視內,您都可以建立內嵌工作項目、執行簡單的直接編輯、江工作項目標示為已完成,以及將工作項目與暫止的變更關聯。
  • 從會自動將工作項目與對本機分支進行之變更關聯的工作項目建立本機分支。 這是預設體驗。 若您要切換到傳統體驗,您可以 Visual Studio 中設定工作項目體驗請注意,這個新體驗只適用於 Git 存放庫。 後續的更新中將提供 TFVC 存放庫的新體驗.

    Azure DevOps Work Item Hub
    *Azure DevOps 工作項目中樞*
  • 在暫止的變更認可訊息中執行 #提及時,搜尋工作項目。 如需詳細資訊,請參閱使用 [工作項目] 來檢視及新增工作項目頁面。

    Azure DevOps #mentions
    *Azure DevOps #提及*
  • 由於在 Azure DevOps 中的採用率不高,對 Microsoft Project 的支援已從適用於 Visual Studio 2019 的 Team Foundation Server Office 整合 2019 外掛程式移除。 您現在必須將您的工作項目匯出到 Excel 並手動將它們貼到 Project。

  • 對 PowerPoint 的支援已從適用於 Visual Studio 2019 的 Team Foundation Server Office 整合 2019 外掛程式移除。 不過,使用者仍然可以在 PowerPoint 中建立腳本並手動將它們連結到 Azure DevOps 中的工作項目。

Application Insights 和 HockeyApp

  • 在 Visual Studio 2019 中,已移除 Application Insights 趨勢視窗,您可以使用其他功能更豐富的替代選項。 您可以改為使用 Visual Studio 中的 Application Insights 搜尋視窗,或 Azure 入口網站中 Application Insights 中的豐富診斷工具集。
  • 已移除用於新增 HockeyApp SDK 及建立新的搶鮮版 (Beta) 發行版本的精靈。 我們改為使用 Visual Studio App Center,這是 HockeyApp 的後繼者。 您仍然可以正常使用 HockeyApp,只不過 Visual Studio 中沒有這些捷徑就是。

Release Notes Icon Visual Studio 2019 RC 中已修正的問題

最近更新於 2019 年 4 月 26 日


已知問題

透過前往以下連結,查看全部現有已知問題和 Visual Studio 2019 版 16.0 中可用的因應措施。

Visual Studio 2019 Known Issues

意見反應與建議

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


部落格

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


Visual Studio 2019 版本資訊歷程記錄

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


頁首