Visual Studio 2019 v16.10 和 v16.11 Preview 1 現已推出!

Visual Studio 2019 v16.10有什麼新功能?

我們很高興地宣布Visual Studio 2019 v16.10 GA 和 v16.11 preview 1發佈。此版本使我們的主題「開發者生產力和便利性」普遍適用於 Visual Studio 用戶!我們添加了c++ 20特性、優化的Git集成、分析工具,以及許多提高開發效率的特性。

下載最新的Visual Studio版本以嘗試16.10中的新特性。一如既往,我們希望您通過我們的開發者社區提供反饋和互動。
安裝visual studio 2019 v16.10

C++

我們的編譯器和 STL 現在功能完備,適用於最新可用的C++20 標準!16.10帶來了一些備受期待的特性:日曆、時區和 。這些特性都可以在/std:c++latest開關下使用。不過/std:c++20開關還不可用,因為一些特性預期將在缺陷報告(ISO c++20 bug修復)中以ABI不兼容的方式進行修正(更多細節請參閱Microsoft/STL Issue #1814)。
是一種新的基於 fmtlib 的文本格式工具。 它為 iostreams 和 printf 系列提供了一種快速且安全的替代方案:

auto version = 20;
std::format(「STL is now C++{} feature-complete!」, version);

日曆和時區是對現有工具的擴展。它們提供了一種類型安全和時區感知的方式,來表示和操控日期和時間。

std::chrono::year_month_day world_bee_day = May/20d/2021y
std::format("Buzz buzz on %F!」, world_bee_day);

此外,我們還改進了模塊、範圍和概念的智能感知體驗。「轉到定義」既適用於模塊本身,也適用於從模塊中導入的定義。對於編譯器來說,編譯器進入範圍是出了名的困難,但是智能感知現在可以為你做這件事。另外,定義的概念名稱會自動補全。

Visual Studio 現在具有範圍的補全.gif

現在,除了x64之外, x86和ARM64也支持 LLVM OpenMP 運行時。通過/openmp:llvm開關來指向它。
如果你想使用c++ 20-style的協程,但目標是c++ 11或c++ 14,你現在可以使用/await:strict開關來獲得想要的行為。
我們改進了協程的調試和可視化。特別是,std::coroutine_handle的可視化現在顯示了原始的協程函數名和簽名以及當前掛起點。

協程調試和可視化已得到改進.png

如果你正在使用我們的CMake支持,那麼你現在可以使用CMakePresets來指定配置,而不是使用cmakessetting .json。這種格式在Visual Studio、Visual Studio Code和任何其他支持這種新標準的工具之間是一致的。

Git生產力

狀態欄有一個新的分支選擇器,允許您篩選本地和遠程分支,並從右鍵單擊快捷菜單執行常規操作。

狀態欄中的分支選擇器.png

現在,當您單獨選擇一個分支時,狀態欄中的分支選擇器以及Git Changes窗口將遷到本地或遠程分支。

左擊以檢出一個分支,右擊以獲得其他操作.png

從狀態欄存儲庫選擇器中篩選和切換本地Git存儲庫。右鍵單擊快捷菜單可以從列表中刪除項目。

通過上下文菜單從存儲庫選擇器列表中刪除項.png

在狀態欄點擊未push的提交按鈕,並在Git菜單同步命令,同步(pull和push) 你的分支到遠程。

同步按鈕在狀態欄.png

即使沒有傳入的提交,也可以從Git Repository窗口歷史窗格中獲取和pull。從狀態欄或鍵盤快捷鍵Ctrl+0+Y訪問這些部分。

進入部分在Git Repository窗口與調出取和拉按鈕.png

在Git Repository窗口中選擇一個提交,可以查看它的詳細信息和文件更改的比較,而不必導航到其他窗口。選擇兩個提交並右鍵單擊從而在同一個窗口中比較它們。將細節彈出到它們自己的窗口中全屏顯示,從而深入了解更改。

在Git Repository窗口中嵌入提交細節和文件比較.png

查看文件中刪除和插入的次數,並更改比較的布局。

彈出多個提交窗口.png

現在,您可以從Git Changes窗口執行更多操作。工具欄圖標是可定製的,您可以選擇顯示哪些操作。您可以從延伸菜單與多個遠程同步。也可以在瀏覽器中打開存儲庫的遠程網頁。

Git 更改溢出菜單,標註同步、在瀏覽器中打開和工具欄操作.png

打開Azure DevOps Git庫時,自動重新連接或提示建立初始的Azure DevOps連接。這允許訪問打開的存儲庫中的工作項和構建。

當缺少Azure DevOps初始連接時,提示信息欄.png

當解決重建或合併衝突時,合併編輯器和快捷菜單將顯示當前和傳入分支的分支名稱。這修復了混淆源和目標術語的問題。

快捷菜單在解決衝突時顯示分支名稱.png

「重建」和「合併」編輯器在標題中顯示分支名稱.png

我們添加了菜單項,這些菜單項是PR創建和列表頁面的快捷方式,使創建和查看pull請求變得更容易。菜單是動態的,基於你的存儲庫是在GitHub還是Azure DevOps上。

從Git菜單中創建一個PR並查看web上的PR列表.png

Git 設置

我們在Git > Settings中添加了一些新選項來管理打開和切換存儲庫。現在,在切換到另一個存儲庫時,可以保持當前解決方案為打開狀態。

設置以保持當前解決方案處於打開狀態.png

您還可以選擇在打開存儲庫時不加載存儲庫根文件夾。這將使解決方案資源管理器為空,您將不會得到解決方案列表。

設置打開文件夾.png

但是,如果您選擇打開根文件夾,Visual Studio將不再自動加載解決方案。相反,您將在一個列表中看到可用的文件夾視圖和解決方案。你可以通過Git > Settings切換複選框來改變這個行為。

設置為切換解決方案資源管理器的自動導航.png

通過雙擊分支名稱,您可以選擇從Git Repository窗口遷出分支。如果你想改變這個行為,那麼在Git > Settings中切換複選框。

切換自動sln加載和分支遷出的設置.png

性能剖析器

Performance Profiler的啟動頁面現在有一些鏈接,可以幫助用戶找到在線文檔,詳細介紹如何使用這些工具以及我們的工具箱視頻系列。您可以使用它們來了解更多關於這些工具的信息,並了解如何更好地識別代碼中的區域以進行優化和驗證更改。

圖形用戶界面,文本,應用程序,電子郵件描述自動生成.png

Performance Profiler 中的 .NET 對象分配工具是第一個過渡到我們新的分析引擎的工具,該引擎速度明顯更快並提供更多功能。在收集之後,得到結果並更快地構建調用樹(約增加40%)。我們現在還支持SourceLink來pull源代碼,因此您可以確切地看到代碼分配的位置,即使它不在您的代碼中。

圖形用戶界面描述自動生成.png

這需要對應代碼的符號,可以從微軟符號服務器下拉,從調試>選項>符號來啟用它。

圖形用戶界面,文本,應用程序描述自動生成.png

容器

這個版本為Docker容器工具的用戶提供了一些激動人心的特性。您現在可以運行在組合文件中定義的任何服務組合,並在容器窗口中享受改進的容器和映像管理。要了解更多信息,請參閱我們16.10預覽版3博客中的容器新特性公告。

.Net的生產力

我們的.net團隊為您帶來了幾個特性,以幫助您持續提高生產力。

我們增加了功能「刪除未使用的引用命令」。這個命令允許您清理未使用的項目引用和NuGet包。默認情況下,這個選項是關閉的,但是你可以在菜單工具> Options > Text Editor > c# > Advanced下啟用它。在解決方案資源管理器(實驗)中選擇刪除未使用的引用命令。一旦啟用該選項,刪除未使用的引用命令將出現在項目名稱或依賴項節點的右鍵菜單中。

刪除解決方案資源管理器中未使用的引用.png

刪除未使用的引用對話框.png

當您選擇刪除未使用的引用時,將會打開一個對話框。然後,您可以查看將要刪除的所有引用,但您也可以選擇保留您希望保留的任何引用。

智能感知的完成

當已知類型時,即使沒有輸入Enum值,也會由Enum值的額外的智能感知完成。我們還擴展了這個選項,包括強制轉換、索引器和操作符的完成。

枚舉的智能感知完成.png

現在有一個完成選項,可在編寫方法調用時自動插入參數。

在編寫方法調用時自動插入參數.png

這個特性默認是關閉的,所以你需要在工具>選項>文本編輯器> c# >智能感知中啟用它,然後選擇Tab兩次插入參數(實驗)。

要使用這個特性,首先編寫一個方法調用,然後按兩次tab鍵(tab+tab)。注意,方法調用包含基於方法默認值的參數。使用參數信息循環遍歷您希望通過按向上和向下方向鍵插入的參數列表。開始輸入一個參數來調出智能感知完成列表並輸入分號,這會提交該參數並在方法調用的末尾添加一個分號。

可視化和導航繼承鏈

現在,有一個可視化表示功能,用於導航和檢查繼承。

導航繼承鏈的可視化指示器.png

默認情況下,這個選項是關閉的,所以你需要在工具> Options > Text Editor > c# > Advanced中打開它,然後選擇Show inheritance margin。啟用繼承邊距將在代表代碼實現和重寫的邊距中添加新的圖標。
單擊繼承邊距圖標以顯示可以導航到的繼承選項。

通過單擊邊距圖標導航繼承鏈.png

測試資源管理器可訪問性改進

我們對Test Explorer做了一些更新,提高了鍵盤的可訪問性和測試細節窗口和日誌文件的可用性。有關詳細信息,請參見16.10 preview 3博客中的測試體驗可訪問性改進

WinForms更新

我們已經重構了Visual Studio 16.10的行為服務。這使得.net Core 5和6的新WinForms設計器的性能得到了顯著的改進。這也修復了許多與選擇、拖放多個控件相關的問題。

XAML工具更新

我們不斷改進現有的特性並添加新特性,以使您在開發XAML UI時更有效率。

XAML設計器快速動作

現在,您可以通過使用為所選控件顯示的燈泡後面的彈出菜單,快速更改控件的屬性。

XAML設計器中的快速操作.png

當您在XAML設計器中選擇一個控件時,您將看到一個燈泡。一旦單擊該控件,將顯示此特定控件最常用的屬性列表,從而節省您在屬性資源管理器中查找這些屬性或在XAML編輯器中輸入代碼的時間。

支持控件:

  • WPF: Border, Button, Canvas, CheckBox, ComboBox, Grid, Image, Label, ListBox, ListView, StackPanel, TextBlock, TextBox.。
  • UWP: Border, Button, Canvas, CheckBox, ComboBox, Grid, HyperlinkButton, Image, ListBox, ListView, NavigationView, RadioButton, Slider, StackPanel, TextBlock, TextBox.

這個特性適用於UWP、WPF Core和WPF Framework(啟用「New WPF XAML Designer for . NET Framework」特性標誌)。你也可以創建自己的動作,請參閱XAML Designer Extensibility GitHub了解更多。

XAML示例數據

通常,要查看控件使用數據值的外觀,必須實現所有數據綁定,用值填充數據庫,並且需要運行應用程序。有了這個特性,你就可以在設計器中通過「假」數據看到控件的外觀。在ListBox、ListView或DataGrid上設置d:ItemSource='{d:SampleData}’。該控件將自動填充一個與您的datatemplate和BindingPaths匹配的「假」數據。這些數據顯示在設計器中,不會影響源代碼。
您可以使用ItemCount屬性更改生成的項目數量,例如:d:ItemSource='{d:SampleData ItemCount=3}’,默認情況下它被設置為5。

Visual Studio 2019 v16.11 預覽版 1 中的新增功能

.NET 熱重載

在此版本中,我們很高興提供新的熱重載用戶體驗的第一個版本,可在編輯 WPF、Windows Forms、ASP.NET Core、控制台等應用程序的代碼文件時使用。通過熱重載,您現在可以在運行時修改您的應用程序管理源代碼,無需暫停執行或使用斷點。 相反,只需進行受支持的更改並使用工具欄中的新的「應用代碼更改」按鈕立即應用它們。

a-picture-containing-text-monitor-screenshot-in.gif
進行更改並熱加載WPF應用程序。

在Visual Studio的這次更新中,當你在調試器(F5)下運行你的應用程序時,這個新體驗已經可以使用,它是由編輯和繼續(EnC)機制驅動的。. NET熱重載也可以與XAML熱重載一起工作,使得在桌面應用程序(如WPF或WinUI)中進行UI和代碼後台更改成為可能。

EnC和熱重載具有相同的限制,因此不是每種類型的編輯都被支持。支持或不支持的完整列表可以在我們的文檔中找到。

熱重載現在也可以在.NET 6 Preview3或更高版本的CLI工具下使用,更多細節請參見.NET發佈的博客。

這是我們旅程的開始, 在Visual Studio 2022和.未來的版本.NET 6+中,我們將尋求並進一步改善這種經驗,比如從Visual Studio使用熱重載啟動應用程序時沒有調試器(CTRL-F5)時減少不受支持的編輯數量,允許編輯Razor頁面,支持熱重載和.NET MAUI應用程序等。如果您想了解關於我們對該技術的更多細節,請參閱我們在. net blog上發表的詳細博文。

我們真的希望你能在你的應用程序中嘗試熱重載,並通過Visual Studio的反饋特性提供反饋。

.NET MAUI

Visual Studio 16.11 Preview 1增加了對.NET MAUI的支持! .NET 多平台應用程序UI (MAUI) 將於今年 11 月正式發佈,是為 iOS、Android、Windows 和 Mac 編寫跨平台應用程序的最佳方式。.NET 6 Preview 4 今天發佈了新的 .NET MAUI 功能,包括單個項目改進、針對所有受支持平台的能力以及 Blazor 混合桌面支持! Visual Studio 16.11 p1 允許您從 IDE 打開、構建和調試 .NET MAUI 應用程序,並為新的單一項目體系結構添加功能。 此外,您可以使用新項目配置嚮導來創建新的 .NET MAUI 應用程序!

.NET MAUI 演示應用程序 WeatherTwentyOne.png
.NET MAUI 演示應用程序 WeatherTwentyOne

使用 .NET MAUI 和 Visual Studio,您的解決方案中只需一個項目即可面向移動設備和桌面。 圖像、字體、應用程序信息,甚至啟動畫面都可以在一個項目中定義,並在編譯時部署到每個平台。 使用多目標,您可以在任何支持的平台上進行調試,而無需為不同的目標框架維護不同的項目。 要了解有關新的 .NET MAUI 單一項目架構的更多信息,您可以觀看2021年5月的 Xamarin 社區站會

圖片32.png

使用 .NET MAUI 的單一項目架構從一個項目中定位 Android、iOS、Windows 和 Mac。
要立即試用 .NET MAUI,請下載 Visual Studio 16.11 並按照.NET MAUI 示例存儲庫中的說明安裝.NET 6預覽版 SDK!
有關詳細信息,請參閱 .NET MAUI 預覽 4

安裝visual studio 2019 v16.11 preview 11

要體驗 Visual Studio 2019 必須提供的最新功能,請立即下載預覽版。 不要忘記在開發者社區上報告問題向我們提供反饋!同時也可以在微軟Q&A論壇上提問任何有關開發的問題。