Visual Studio 2019 16.5版现已推出

杰奎琳·维迪斯

自上一次小版本发布以来,位于雷蒙德的Visual Studio 2019团队一直生活在一个永远灰蒙蒙、潮湿的冬季天空下。谢天谢地,我们开始看到太阳定期出现。我们希望这一最新版本也能为您带来光明。Visual Studio 2019版本16.5包含XAML的预期新功能。NET、C++和调试。此外,我们还解决了预览版中的几个问题。我们相信,这种组合将使您的开发人员之旅更有成效。如果您对我们的产品有任何其他想法,我们邀请您参加我们的开发者社区论坛。

在我详细阐述的时候,为什么不下载我们的最新版本,自己试试呢?还要记住,所有更改的更完整列表可在Visual Studio 2019发行说明.

.NET移动开发

我们要讨论的第一个功能是Xamarin.Forms的XAML热重新加载。此功能可加快开发速度,并使构建、实验和迭代移动应用程序的用户界面变得更加容易。怎么用?你不需要每次调整UI时都重新构建你的应用程序,因为在应用程序运行时会立即显示更改!因为这会在您进行更改时更新,所以如果您与应用程序进行了交互,那么在进行更改时应用程序的状态不会丢失。因此,您不必像以前那样重新创建回购。那太令人兴奋了,不是吗?

我们听到了许多关于通过共享的特定需求的反馈开发者社区建议。由于事实上,您希望看到XAML在多个目标(如iOS模拟器和Android模拟器)上即时重新加载所做的更改,因此我们添加了该功能。

 .NET生产力

帮助。NET Productivity在此Visual Studio 2019版本16.5中提供了多个功能。

首先,您可以转换如果对的语句转换语句或开关表达式。为此,请将光标放在if关键字上。按下Ctrl键+.触发快速行动和重构菜单。最后,选择转换为“switch”语句转换为“switch”表达式.

图像转换if-to-switch语句
在Visual Studio 2019中转换if-to-switch语句。

智能感知

此外,IntelliSense现在支持完成未导入的扩展方法。要访问此功能,您需要在中启用此选项工具>选项>文本编辑器>C类#>智能感知>并选择显示来自未导入命名空间的项(实验性).

简化插值

此外,我们还增加了简化字符串插值重构。这将有助于字符串插值更加清晰简洁。将光标放在字符串插值上。按下Ctrl+键。 触发快速行动和重构菜单并选择简化插值. 

简化插值
可以通过“快速操作和重构”菜单简化插值。

 

这个 提取局部函数 重构允许您将现有方法中的代码片段转换为本地函数。突出显示要提取的代码。按下Ctrl+键。触发快速行动和重构菜单并选择提取局部函数. 

提取局部函数
您可以通过“快速操作和重构”菜单提取本地函数

这个 使成员静态 代码修复通过使非状态成员成为静态成员来帮助提高可读性。将光标放在成员名称上。按下Ctrl+键。触发快速行动和重构菜单并选择使为静态. 

制作成员staticv
可以通过“快速操作和重构”菜单使成员成为静态成员。

测试

评测是识别性能的绝佳工具问题在代码中。现在可以分析。NET核心测试。这样做你的。NET核心项目必须配置为生成完整PDB的。我们还建议将Microsoft升级到16.4的最低版本。测试。SDK。这将使您能够在x86和x64体系结构设置中评测测试。要评测测试,请选择简况从测试资源管理器的上下文菜单中。通过静态检测和性能资源管理器(.vsp)文档。

在C++和中调试。净值

可固定属性已经是流行的工具用于托管代码调试。具体来说,这允许无需钻取对象即可快速查看对象的属性。这个特征现在是在C++中可用于“数据提示”和“自动”、“本地”和“监视”窗口。要使用该工具,请将鼠标悬停在属性上并选择显示的可切换管脚图标,或选择将成员固定为收藏夹选项,将所选属性冒泡到调试器显示的顶部。 

调试器中的固定属性
调试器中的固定属性工具

我们还添加了一个新功能,以帮助您调试多线程应用程序。 这有助于 避免努力确定死锁或其他线程相关的错误。随后,现在您可以查看哪个托管线程持有。NET对象锁定调用堆栈窗口、并行堆栈窗口和的位置列“线程”窗口. 

调用堆栈窗口
“调用堆栈”窗口、“并行堆栈”窗口中的.NET对象锁定

在之前的更新中,我们使调试在中运行的进程成为可能Docker Linux容器。现在,你可以在中执行相同操作Docker Windows容器。为了尝试一下连接并调试.NET框架。NET核心和C++中的进程附加到进程窗口,方法是选择Docker(Windows容器)连接类型.   

Docker窗口容器
Docker Window容器进程

最后,对于在开放式Enclave SDK 我们在Visual Studio 2019版本16.5中添加了调试支持。所以,你可以现在调试这些 应用从内部产品,f或更多信息信息,转到aka.ms/OpenEnclaveVisualStudio. 

图165GAdockerwindow2

 

 

 

.NET对象分配工具

这个.NET对象分配工具已更新,其更改旨在帮助您更轻松地可视化数据,并减少您花费在内存调查上的时间。  

首先,回溯视图被移到了一个单独的面板上,使您能够更容易地区分分配类型和被调用类型中的函数。此外,当选择了分配类型时,调用树将从叶节点定向到根节点,以便更快地查看哪个特定函数分配了最多的内存并需要更改。最后,分配类型面板和回溯视图中都添加了一个新的平均大小列。如果您试图调查什么分配类型或函数在每次分配中占用了大量内存,则此信息非常有用。此外,所有这些列都是可排序的,可以打开或关闭,这样您就可以自定义表,使其看起来像您想要的那样。 

此外,请注意新图标添加到分配、调用树和函数视图中,因此更容易可视化正在分配的类和结构。这两个图标表示值类型(蓝色)和引用类型(黄色)。顺便说一句,VisualStudio很快就会有更多其他用户体验,例如更多图标和性能改进! 

.NET对象分配工具
.NET对象分配工具

 

Visual Studio 2019版本16.5中的C++改进

Visual Studio 2019 16.5版对C++跨平台和CMake开发体验进行了几项改进。从这个版本开始,y您现在可以与存储的rem进行交互通过命令行进行ote连接。这对于诸如提供新的开发机器或在持续集成中设置Visual Studio之类的任务非常有用。 

通过开发人员命令提示符与存储的删除连接交互
通过开发人员命令提示符与存储的删除连接交互

此外,此版本还提供了利用本机支持用于Linux的Windows子系统当分离您的从远程部署m构建系统机器,允许您在WSL上本机构建并将构建工件部署到第二个远程机器 用于调试。CMake项目和MSBuild(MSBuild)-基于Linux项目。 

Visual Studio 16.5版本使它比以往任何时候都更容易工作具有在Visual Studio中生成项目。具体来说,t他的释放带来了能够在IDE中添加、删除和重命名CMake项目中的源文件和目标,而无需手动编辑CMake脚本。 什么时候?添加ing和移除惯性导航与制导VisualStudio将自动编辑CMake项目。此外,您还可以从解决方案资源管理器的目标视图,如下所示。你可以了解更多关于这个和r相关特征C++团队博客. 

在CMake项目中添加、删除和重命名源文件
在CMake项目中添加、删除和重命名源文件

新的CMake代码导航功能,如去吧收件人定义和查找所有参考使探索和理解复杂的CMake项目变得更加容易。导航功能支持CMake脚本文件中的变量、函数和目标。它们可以在整个CMake项目中工作,比在文件和文件夹中进行天真的文本搜索更高效。此外,它们还与其他IDE生产力特性集成,例如作为Peek定义. 

立即下载Visual Studio 2019版本16.5!

正如您所看到的,Visual Studio 2019 16.5版提供了大量新功能,可以帮助您完成开发项目。今天试试看,告诉我们你的想法。

此外,如果您想尝试未来的功能,请查看我们的预览频道,尝试我们的下一个产品迭代。此预览版对WFT/UWP工具、JavaScript/TypeScript和Web工具进行了额外的更改。这个版本16.6预览1发行说明给出每个功能的详细信息。

一如既往,我们期待您的反馈!

 

28条评论

讨论结束。登录以编辑/删除现有评论。

  • 埃德·肯尼迪 0

    除了剖析之外,是否对单元测试进行了任何改进?感谢您的更新。

  • 克里斯·艾格特 0

    在VS2019 16.5选项对话框中搜索“未导入的命名空间”时,不会显示“show items from unported namespaces”选项,即使它位于上面指定的位置。

  • Isaac Morton(ACD系统) 0

    什么时候C++20的添加将开始以更快的速度慢慢加入?

    • 马哈茂德·萨利赫Microsoft员工 0

      你好,Isaac,
      VS16.5中添加了许多新的C++20特性(在/std:C++最新编译器下)。我们的C++库开发最近转移到了GitHub。您可以在上找到我们的迭代计划https://github.com/microsoft/STL/wiki/迭代计划

    • 史蒂夫 0

      在我的实验中,我已经可以使用VS16.5中的大多数C++20特性(概念、协同程序、模块……)以及编译器标志:/await/std:C++latest。尽管在智能感知和语法高亮方面仍然存在一些问题。

    • 乌尔齐·卢夫桑巴特Microsoft员工 0

      你好,Isaac,

      感谢您询问有关C++20开发的问题。正如马哈茂德所说,编译器(MSVC)中的一些C++20功能将在Visual Studio 2019版本16.5中提供。你可以预计今年会有更多的C++20特性在MSVC编译器、STL库、静态分析和IntelliSense中可用。我们将在“https://devblogs.microsoft.com/cppblog“只要新功能逐步可用。
      谢谢,
      乌尔齐·卢夫桑巴特

  • 埃利·布莱克 0

    显示当前线程正在等待的线程听起来太棒了^_^

  • Abolfazl Bahari Salim公司 0

    此版本中的“块复制/剪切”功能存在问题,无法在不阻止代码的情况下复制或剪切和粘贴

    • Hemchander Sannidhanam公司Microsoft员工 0

      你好,Abolfazl Bahari Salim,
      感谢您分享您的反馈!如果您能使用此处的指导分享您的反馈,那就太好了:https://docs.microsoft.com/en-us/visualstudio/ide/how-to-report-a-problem-with-visual-studio?view=vs-2019这将帮助我们跟踪您的反馈,并将其发送给适当的团队进行修复。此外,它还帮助像您这样的其他用户了解问题的状态,了解任何解决方法等。

      再次感谢您使用Visual Studio!

  • 超级可可乐。 0

    关于del旧的“new Project”对话框和旧的“Start Page”没有什么新内容。

  • Dheeraj Kumar Mekala Dhanraj公司 0

    在将我的VS2019更新为16.5.0之后。我无法加载任何解决方案。以下是活动日志中的错误。谁能帮帮我们吗。

    878
    2020/03/20 00:43:31.054
    错误
    微软。VisualStudio。组件模型主机。VsShell组件模型主机
    加载程序集Microsoft时发生异常。VisualStudio。连接服务。Package2,Version=16.4.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35:系统。IO.FileLoadException:无法加载文件或程序集“Microsoft”。VisualStudio。连接服务。Package2,Version=16.4.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT异常:0x80131040)文件名:“Microsoft。VisualStudio。连接服务。Package2,Version=16.4.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'在系统中。反思。运行时程序集_nLoad(AssemblyName fileName、String codeBase、Evidence assemblySecurity、RuntimeAssembly locationHint、StackCrawlMark和stackMark、IntPtr pPrivHostBinder、Boolean throwOnFileNotFound、BooBoolean for Introspection、Booboolean suppressSecurityChecks)在系统中。反思。RuntimeAssembly.nLoad(Assembly Name fileName,String codeBase,Evidence assemblySecurity,RuntimeAssessment locationHint,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,BooBoolean for Introspection,Booboolean suppressSecurityChecks)在系统中。反思。运行时程序集。InternalLoadAssemblyName(AssemblyName assemblyRef、Evidence assemblySecurity、RuntimeAssembly-reqAssembly、StackCrawlMark和stackMark、IntPtr pPrivHostBinder、Boolean throwOnFileNotFound、Boolean forIntrospection、Boolean suppressSecurityChecks)在系统中。反思。组装。加载(AssemblyName assemblyRef)在微软。VisualStudio。扩展性托管。FaultMatchingAssemblyLoader(装配装载机故障)。<>c_DisplayClass17_0.<加载程序集>b_0(程序集名称程序集名称参数).;vs.platform.extensibilityhosting.assemblyoadexception。AssemblyFullName=Microsoft。VisualStudio。连接服务。Package2,Version=16.4.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35;vs.platform.extensibilityhosting.assemblyoadexception。程序集路径=文件:///C:/PROGRAM%20FILES%20(X86)/MICROSOFT%20VISUAL%20STUDIO/2019/ENTERPRISE/COMMON7/IDE/EXTENSIONS/MICROSOFT/CONNECTEDSERVICES/MICROSOFT。VisualStudio。连接服务。Package2.dll;vs.platform.extensibilityhosting.assemblyoadexception。FusionLogEntry=;vs.platform.extensibilityhosting.assembly异常。ExceptionType=系统。IO.FileLoadException;vs.platform.extensibilityhosting.assemblyoadexception。ExceptionMessage=无法加载文件或程序集“Microsoft”。VisualStudio。连接服务。Package2,Version=16.4.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT异常:0x80131040);vs.platform.extensibilityhosting.assemblyoadexception。ExceptionStackTrace=在系统上。反思。运行时程序集_nLoad(AssemblyName fileName、String codeBase、Evidence assemblySecurity、RuntimeAssembly locationHint、StackCrawlMark和stackMark、IntPtr pPrivHostBinder、Boolean throwOnFileNotFound、BooBoolean for Introspection、Booboolean suppressSecurityChecks)在系统中。反思。RuntimeAssembly.nLoad(Assembly Name fileName,String codeBase,Evidence assemblySecurity,RuntimeAssessment locationHint,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,BooBoolean for Introspection,Booboolean suppressSecurityChecks)在系统中。反思。运行时程序集。InternalLoadAssemblyName(Assembly Name assemblyRef,Evidence assembly Security,RuntimeAssembly-reqAssemblies,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,用于自检的Boolean,Boolean-suppressSecurityChecks)在系统中。反思。组装。加载(AssemblyName assemblyRef)在微软。VisualStudio。扩展性托管。故障匹配装配加载器c_DisplayClass17_0.<加载程序集>b_0(程序集名称程序集名称参数)

    • Dheeraj Kumar Mekala Dhanraj公司 0

      修复Visual Studio后,我能够修复它。这真的浪费了我3个小时的时间。

  • 保罗·斯坦瑟 0

    你认为现在是时候做一个bug-bash了,而不是用除了少数人之外的所有人都会使用的功能来超载产品,而主要功能是缓慢的,有时是不可用的。例如,当使用宽屏幕显示器时,你可以固定屏幕,然后在Visual Studio考虑的时候出去煮杯咖啡。键入速度有点太快,VS2019需要一段时间才能跟上。如果你尝试并使用SQL编辑器,你将比VS2019测试团队所说的“无法复制。关闭问题”更快地重新启动。

    说真的,退一步,花点时间尽可能多地修复错误。您的用户群将感谢您。

    • 迪安·杰克逊 0

      我100%同意。

    • 凯斯·沃克 0

      +1

      • Mike-E公司 0

        +1到+1…尤其是当所有这些“新”功能在ReSharper中使用了十多年之后。

    • 阿尔方斯·吉安布罗内 0

      同意10000%。如果一个人不能及时简单地键入一行代码,那么所有这些新东西有什么好处呢。

  • Александр Петров 0

    Visual Studio 2019版本16.5是慢速可用。
    下载速度83 kb/s。1.8 Gb需要下载。(IP给我25 Mbit/s)。
    感谢MS中断了Visual Studio安装!

    • 艺术·伦纳德Microsoft员工 0

      你能打开安装程序的新反馈吗?
      这对您来说是一个新问题吗,还是在您更新时总是发生这种情况?

      我们不知道该产品存在普遍的下载速度问题,但我们会受本地CDN的支配,这取决于您在世界上的位置。

      我们期待着您的回音。

  • 丹尼斯·雅各布森 0

    这破坏了我们的解决方案,更确切地说是一个旧的Workflow项目,您是否删除了Workflow foundation v3支持而没有提及它?

  • 阿尔贝托·冈萨雷斯 0

    您可以在安装程序中添加选项,以便对netcore3.1控制台开发进行最小安装吗?没有所有旧的.net、sql server、asp.net等,或者解释我们如何为netcore3.1控制台应用程序进行最小VS安装?

    • 尼古拉斯·特纳 0

      转到“单个组件”并选择您需要的组件?我总是做每件事,以防你以后需要。驱动器空间很便宜。

  • 尼古拉斯·特纳 0

    顺便说一句,安卓和iOS的调试被打破了16.5.1。

  • 阿尔方斯·吉安布罗内 0

    如果产品一开始就不可用,那么这一切都是无用的。我必须卸载VS2019,并使用2017和2015。智能感知速度如此之慢,以至于根本不可能完成任何工作。这是一个已确认的问题,但不会得到解决!为什么?这只发生在我们中的一些人身上?我已经报告过了,这个问题作为一个副本被解决了,它指向一个将近3年的GitHub项目,该项目尚未修复。
    https://developercommunity.visualstudio.com/content/problem/615543/intellisense-slow-responding-or-doesnt-respound-at.html.
    简单地修复它真的那么困难吗?智能感知在VS2015中表现良好,2017年稍慢,但可行。看看这些,找出发生了什么变化并修复2019年的问题,这只是常识。

  • 罗伯特·约翰逊 0

    在16.5版中,我看到你在继续蚕食一切好东西。谢谢。
    搜索是可怕的,正常的搜索会在您键入时移动光标,而不是任何开发人员想要的。
    现在find-in-files已经被修改,输出不再显示我在find结果中精心构建的正则表达式…
    例如:
    查找所有“<TargetFrameworkVers…”,匹配大小写,正则表达式,整个解决方案

    谁来制裁这些可怕的变化?我想不是开发人员。再次感谢。

  • 蒂莫西·兰伯特 0

    VS for Mac是否会支持C++?

反馈usabilla图标