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带来了一些备受期待的特性:日历、时区和 <format>。这些特性都可以在/std:c++latest开关下使用。不过/std:c++20开关还不可用,因为一些特性预期将在缺陷报告(ISO c++20 bug修复)中以ABI不兼容的方式进行修正(更多细节请参阅Microsoft/STL Issue #1814)。
<format> 是一种新的基于 fmtlib 的文本格式工具。 它为 iostreams 和 printf 系列提供了一种快速且安全的替代方案:
auto version = 20;
std::format(“STL is now C++{} feature-complete!”, version);
日历和时区是对现有<chrono>工具的扩展。它们提供了一种类型安全和时区感知的方式,来表示和操控日期和时间。
std::chrono::year_month_day world_bee_day = May/20d/2021y
std::format("Buzz buzz on %F!”, world_bee_day);
此外,我们还改进了模块、范围和概念的智能感知体验。“转到定义”既适用于模块本身,也适用于从模块中导入的定义。对于编译器来说,编译器进入范围是出了名的困难,但是智能感知现在可以为你做这件事。另外,定义的概念名称会自动补全。
现在,除了x64之外, x86和ARM64也支持 LLVM OpenMP 运行时。通过/openmp:llvm开关来指向它。
如果你想使用c++ 20-style的协程,但目标是c++ 11或c++ 14,你现在可以使用/await:strict开关来获得想要的行为。
我们改进了协程的调试和可视化。特别是,std::coroutine_handle的可视化现在显示了原始的协程函数名和签名以及当前挂起点。
如果你正在使用我们的CMake支持,那么你现在可以使用CMakePresets来指定配置,而不是使用cmakessetting .json。这种格式在Visual Studio、Visual Studio Code和任何其他支持这种新标准的工具之间是一致的。
Git生产力
状态栏有一个新的分支选择器,允许您筛选本地和远程分支,并从右键单击快捷菜单执行常规操作。
现在,当您单独选择一个分支时,状态栏中的分支选择器以及Git Changes窗口将迁到本地或远程分支。
从状态栏存储库选择器中筛选和切换本地Git存储库。右键单击快捷菜单可以从列表中删除项目。
在状态栏点击未push的提交按钮,并在Git菜单同步命令,同步(pull和push) 你的分支到远程。
即使没有传入的提交,也可以从Git Repository窗口历史窗格中获取和pull。从状态栏或键盘快捷键Ctrl+0+Y访问这些部分。
在Git Repository窗口中选择一个提交,可以查看它的详细信息和文件更改的比较,而不必导航到其他窗口。选择两个提交并右键单击从而在同一个窗口中比较它们。将细节弹出到它们自己的窗口中全屏显示,从而深入了解更改。
查看文件中删除和插入的次数,并更改比较的布局。
现在,您可以从Git Changes窗口执行更多操作。工具栏图标是可定制的,您可以选择显示哪些操作。您可以从延伸菜单与多个远程同步。也可以在浏览器中打开存储库的远程网页。
打开Azure DevOps Git库时,自动重新连接或提示建立初始的Azure DevOps连接。这允许访问打开的存储库中的工作项和构建。
当解决重建或合并冲突时,合并编辑器和快捷菜单将显示当前和传入分支的分支名称。这修复了混淆源和目标术语的问题。
我们添加了菜单项,这些菜单项是PR创建和列表页面的快捷方式,使创建和查看pull请求变得更容易。菜单是动态的,基于你的存储库是在GitHub还是Azure DevOps上。
Git 设置
我们在Git > Settings中添加了一些新选项来管理打开和切换存储库。现在,在切换到另一个存储库时,可以保持当前解决方案为打开状态。
您还可以选择在打开存储库时不加载存储库根文件夹。这将使解决方案资源管理器为空,您将不会得到解决方案列表。
但是,如果您选择打开根文件夹,Visual Studio将不再自动加载解决方案。相反,您将在一个列表中看到可用的文件夹视图和解决方案。你可以通过Git > Settings切换复选框来改变这个行为。
通过双击分支名称,您可以选择从Git Repository窗口迁出分支。如果你想改变这个行为,那么在Git > Settings中切换复选框。
性能剖析器
Performance Profiler的启动页面现在有一些链接,可以帮助用户找到在线文档,详细介绍如何使用这些工具以及我们的工具箱视频系列。您可以使用它们来了解更多关于这些工具的信息,并了解如何更好地识别代码中的区域以进行优化和验证更改。
Performance Profiler 中的 .NET 对象分配工具是第一个过渡到我们新的分析引擎的工具,该引擎速度明显更快并提供更多功能。在收集之后,得到结果并更快地构建调用树(约增加40%)。我们现在还支持SourceLink来pull源代码,因此您可以确切地看到代码分配的位置,即使它不在您的代码中。
这需要对应代码的符号,可以从微软符号服务器下拉,从调试>选项>符号来启用它。
容器
这个版本为Docker容器工具的用户提供了一些激动人心的特性。您现在可以运行在组合文件中定义的任何服务组合,并在容器窗口中享受改进的容器和映像管理。要了解更多信息,请参阅我们16.10预览版3博客中的容器新特性公告。
.Net的生产力
我们的.net团队为您带来了几个特性,以帮助您持续提高生产力。
我们增加了功能“删除未使用的引用命令”。这个命令允许您清理未使用的项目引用和NuGet包。默认情况下,这个选项是关闭的,但是你可以在菜单工具> Options > Text Editor > c# > Advanced下启用它。在解决方案资源管理器(实验)中选择删除未使用的引用命令。一旦启用该选项,删除未使用的引用命令将出现在项目名称或依赖项节点的右键菜单中。
当您选择删除未使用的引用时,将会打开一个对话框。然后,您可以查看将要删除的所有引用,但您也可以选择保留您希望保留的任何引用。
智能感知的完成
当已知类型时,即使没有输入Enum值,也会由Enum值的额外的智能感知完成。我们还扩展了这个选项,包括强制转换、索引器和操作符的完成。
现在有一个完成选项,可在编写方法调用时自动插入参数。
这个特性默认是关闭的,所以你需要在工具>选项>文本编辑器> c# >智能感知中启用它,然后选择Tab两次插入参数(实验)。
要使用这个特性,首先编写一个方法调用,然后按两次tab键(tab+tab)。注意,方法调用包含基于方法默认值的参数。使用参数信息循环遍历您希望通过按向上和向下方向键插入的参数列表。开始输入一个参数来调出智能感知完成列表并输入分号,这会提交该参数并在方法调用的末尾添加一个分号。
可视化和导航继承链
现在,有一个可视化表示功能,用于导航和检查继承。
默认情况下,这个选项是关闭的,所以你需要在工具> Options > Text Editor > c# > Advanced中打开它,然后选择Show inheritance margin。启用继承边距将在代表代码实现和重写的边距中添加新的图标。
单击继承边距图标以显示可以导航到的继承选项。
测试资源管理器可访问性改进
我们对Test Explorer做了一些更新,提高了键盘的可访问性和测试细节窗口和日志文件的可用性。有关详细信息,请参见16.10 preview 3博客中的测试体验可访问性改进。
WinForms更新
我们已经重构了Visual Studio 16.10的行为服务。这使得.net Core 5和6的新WinForms设计器的性能得到了显著的改进。这也修复了许多与选择、拖放多个控件相关的问题。
XAML工具更新
我们不断改进现有的特性并添加新特性,以使您在开发XAML UI时更有效率。
XAML设计器快速动作
现在,您可以通过使用为所选控件显示的灯泡后面的弹出菜单,快速更改控件的属性。
当您在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、控制台等应用程序的代码文件时使用。通过热重载,您现在可以在运行时修改您的应用程序管理源代码,无需暂停执行或使用断点。 相反,只需进行受支持的更改并使用工具栏中的新的“应用代码更改”按钮立即应用它们。
进行更改并热加载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
使用 .NET MAUI 和 Visual Studio,您的解决方案中只需一个项目即可面向移动设备和桌面。 图像、字体、应用程序信息,甚至启动画面都可以在一个项目中定义,并在编译时部署到每个平台。 使用多目标,您可以在任何支持的平台上进行调试,而无需为不同的目标框架维护不同的项目。 要了解有关新的 .NET MAUI 单一项目架构的更多信息,您可以观看2021年5月的 Xamarin 社区站会!
使用 .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论坛上提问任何有关开发的问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。