Connect(); 2018 特刊

第 33 卷,第 13 期

Visual Studio - Visual Studio 2019 中的新变化

作者 Mads Kristensen; 2018 特刊

Visual Studio 2019 引入了精彩改进和新功能,旨在优化开发人员工作效率和团队协作。无论是首次使用 Visual Studio,还是已使用它很多年,都将受益于改进开发生命周期各方面的功能,从更流畅、更有针对性的项目创建,到通过存储库工作流进行克隆,再到提高代码的可维护性和质量。团队和开放源代码协作工作流也得到了改进。

Visual Studio 团队的目标之一是,让用户尽可能顺畅简单地升级到 Visual Studio 2019。因此,在升级后,你会发现,解决方案和项目文件的格式没有中断性变更,且现有代码仍能按预期打开。

还有更多好消息。Visual Studio 2019 中的扩展性 API 仍保持相对不变。也就是说,轻而易举就能将在 Visual Studio 2017 中使用的任何扩展更新为支持 Visual Studio 2019。许多扩展都已更新,以确保它们在预览版中可用。更新后的扩展包括 Productivity Power Tools、Web Essentials、VsVim,以及 Visual Studio Marketplace 上现有的其他许多热门扩展。

客户还特别关心的另外两方面是性能和可靠性。多年来,我们一直在推出新版 Visual Studio 的预览内部版本,近期为每季度发布一次更新。借助这些预览内部版本,可以及早了解新变化,从而使用预览版,并向 Visual Studio 产品团队提供反馈。它们还有助于开始思考这些新功能可能会对你和组织造成的影响。最后,这些预览内部版本为我们提供了各种用户方案中问题的宝贵反馈,以及有关如何调整功能来提供最优质产品的见解。

因此,接下来将细探究竟,看看 Visual Studio 2019 预览版有望提供哪些功能。

更轻松地启动代码

打开 Visual Studio 2019 后首先注意到的是,全新的开始窗口(如图 1 所示)。其中显示以下选项:“克隆或签出代码”、“打开项目或解决方案”、“打开本地文件夹”或“新建项目”。无论是刚开始接触 Visual Studio 或编程,还是已有多年的编程和 Visual Studio 使用经验,这些功能都可便于更快速、更有针对性地启动代码。

全新的开始窗口
图 1:全新的开始窗口

我们集中精力缩短了解决方案和项目的加载时间,无论它们大小如何。解决方案不仅可以更快地加载,还能在后台完成更多工作,同时防止扩展后的 UI 在初始化期间发生延迟和挂起。

值得注意的一点是,现在可以直接在开始窗口中通过源代码管理来克隆或签出代码,从而启动项目。在开始窗口的核心重要位置引入此功能,最终可确保它符合易用性要求。

在你新建项目时,Visual Studio 会打开经过重新设计的项目创建对话框。我们收到了许多关于旧项目对话框的反馈,所以优化了对话框体验,以提供强大的搜索和筛选功能。这样,你便能更轻松地发现适合新项目的正确模板。开始窗口和 Visual Studio 内都显示相同的对话框。

在旧版 Visual Studio 中,查找适合应用的正确模板是一项挑战,因为 Visual Studio 随附了数百个模板,此外社区还提供了数千个模板可供下载。新对话框将最常用模板提前,同时便于用户轻松浏览模板,并根据语言、平台和项目类型快速筛选模板,从而简化了此类任务。

现在,当你打开项目创建对话框后,焦点就直接位于搜索框中,可以一边键入内容,一边实时筛选模板列表。虽然项目创建对话框一直都有搜索框,但它从未像在 Visual Studio 2019 中这样自然、快速和方便。

我们即将对项目创建对话框进行更多更新,如最常用模板列表和其他增强功能。

简化了 UI

为了提高工作效率,Visual Studio 进行了多处更新,以改进 UI 和体验,从而让你能够集中精力完成真正重要的工作(即代码)。打开 Visual Studio 后,便会立即注意到与旧版本的一些不同。最明显的变化之一是,更新后的蓝色主题,其中图标、工具栏和工具窗口的边缘已经过柔和处理。这是蓝色主题自 Visual Studio 2012 引入它以来的首个重要更新,标志着界面新式化。我们计划在今后推出的更新中,对浅色主题和深色主题进行类似更新。

另一处明显变化是,顶级菜单已移至标题栏,这样就“收复”了垂直空间,为编辑器中的代码腾出了更多空间。此变化虽然优化了可用空间,但并未更改 IDE 导航方式。

在今后推出的更新中,应该会发现其他细微变化,旨在简化 UI,同时让你能够以项目和代码文档为重点。

改进了搜索功能

搜索功能(旧称为“快速启动”)已经过完全重写,旨在提高它的速度和准确度。它甚至还提供了更宽容的搜索体验,即可以处理拼写错误。

无论要查找的是命令、设置、可安装组件,还是其他实用内容,都可以使用全新的搜索功能在 IDE 中查找所需内容,这都不再是难事。命令搜索结果旁边显示键盘快捷键,因此它们更容易被记住,以供今后使用,如图 2 所示。

全新的搜索功能
图 2:全新的搜索功能

全新的搜索功能在你键入查询的同时动态显示结果,这样有助于加快速度。此外,它还使用模糊搜索算法来适应拼写错误和更自然的语言。最后,显示结果已更新为提供更多相关信息,包括面向键盘驱动型开发人员的任何相关快捷键。

最初,可以跨菜单、命令、选项和可安装组件进行搜索。Visual Studio 团队将继续进一步提高搜索准确度,并纳入其他搜索提供程序,以提供集中式搜索体验。此外,还会注意到,搜索功能已移至标题栏,这样不仅位置更醒目、易于查找,还能在没人使用时腾出空间。

AI 辅助 IntelliCode

IntelliCode 是一组提高开发人员工作效率的 AI 辅助功能,包括上下文 IntelliCode、代码格式设置和样式规则推理等功能。更多改进还在开发中,包括在今后推出的更新中提供重点评审拉取请求的功能。IntelliCode 是 Visual Studio 2017 和 2019 的可选扩展。为了改进它,我们推出过几个有关它的重要更新。可以从 aka.ms/vsintellicode 下载更新后的 IntelliCode 扩展。若要详细了解 IntelliCode 及其改进,请参阅 Visual Studio 博客文章 (aka.ms/vsicblog)。

到目前为止,IntelliCode 提供建议的依据一直是,数千个开放源代码 GitHub 存储库中的学习模式。不过,如果使用的代码不在这一组存储库中,该怎么办?使用的可能是大量内部实用工具和基类库,也可能是在开放源代码中不常用的域专用库,但你仍想查看针对它们的 IntelliCode 建议。如果使用的是 C#,可以让 IntelliCode 从代码中学习模式,因此它便能针对不在开放源代码域中的内容提供建议。

如果在安装更新后的 IntelliCode 扩展后打开 Visual Studio,便会看到代码定型通知提示,并将你转到全新的 IntelliCode 页以开始使用。也可以在“视图 | 其他 Windows | IntelliCode”下找到此新页。定型完成后,它会指出查找其使用情况的顶级类,因此只需打开 C# 文件并开始键入,以试用新建议。已定型模型受保护,因此只有你和已收到模型共享链接的人员,才能访问它们。模型及其从代码中学习到的内容一直为你私有。

许多开发人员都请求获取过常用语言的 IntelliCode 建议。在此更新中,Microsoft 非常高兴能够添加另外四种可获取 AI 辅助 IntelliSense 建议的语言。C++ 和 XAML 已添加到 Visual Studio 扩展中,而 TypeScript/JavaScript 和 Java 则已添加到 Visual Studio Code 中。

CodeLens 适用于每个人

一直以来,CodeLens 都是 Visual Studio Enterprise 独有的功能。但在即将推出的 Visual Studio 2019 预览版中,这一情况将有所改变,我们还将在 Community 版本中(可能在 2019 年)提供此功能。CodeLens 显示类型或方法的引用数、涉及方法的单元测试的相关信息,以及直接来自 Application Insights 的数据。

此外,Microsoft 还让 CodeLens 完全可扩展,这样第三方扩展就能开始在其基础之上添加自己的体验。使用 CodeLens,无需离开源代码,便能轻松找到类型的关键信息。用于源代码管理历史记录和 IntelliTrace 的滤镜仍是 Enterprise 独有的功能。

代码清理

有时,可能很容易就忽视代码中的错误、警告或建议,因为它已滚动到视野范围之外或“错误列表”窗口不可见。通常,直到下次生成项目时,才会注意到这些问题。除此以外,.editorconfig 文件或代码分析器中以代码样式规则为依据的警告和建议可能不会被注意和察觉到,直到在向源代码管理提交代码更改前进行代码评审时才会被注意到。

如果有始终可见的指示器指明代码文件何时包含错误、警告和建议,可以避免此类情况发生。如果旨在处理警告和建议的可用代码修复可以一下子应用于整个代码文件或甚至整个项目,当然更好。

正因为此,Visual Studio 2019 在编辑器右下角(在今后推出的更新中很可能会重定位)添加了文档运行状况指示器图标。图标通过红色、黄色或绿色来指明代码文件或文档的运行状况级别。图 3 展示了此图标的外观。

文档运行状况指示器
图 3:文档运行状况指示器

右键单击指示器图标会显示处理文档中任何问题的快捷键,并在全文档范围内运行清除进程。清除进程会设置代码格式,并应用由当前设置、.editorconfig 文件或 Roslyn 分析器建议的任何代码修复。

这能够极大地提升工作效率,旨在帮助你更快地编写更多可维护代码,并在进入代码评审前及早处理代码中的问题。请务必注意,虽然在今后推出的更新中,此功能还会发生某 UI 变化,但 Visual Studio 团队已决定在预览版 1 中发布此早期 UI,以最大限度地提高工作效率,并有望通过获取用户反馈来进一步优化此功能。

调试程序更新

Visual Studio 2019 旨在提高日常任务的工作效率,同时减少日常不利因素。有助于减少不利因素的新功能之一是,支持在各种监视窗口(调试期间的本地、自动和监视窗口)中搜索。以前可能已遇到过这样的问题,即在监视窗口中从海量值里查找字符串。现在,Visual Studio 可以为你执行此搜索!

图 4 展示了在监视“名称”、“值”和“类型”列中搜索“pork”。搜索时,软件会根据搜索深度,在整个窗口中突出显示任何可见的文本匹配项和搜索。可使用“查找下一个”(F3) 命令,浏览找到的所有匹配项。搜索监视时的挑战之一是,所呈现的数据可能是递归数据,或者父链可能非常深。为了避开此限制,默认只搜索三个级别的深度。如果找不到匹配,可以直接使用“深入搜索”按钮,搜索更深的两个级别。也可以在“工具 | 选项”中更改默认搜索深度。

在监视窗口中搜索
图 4:在监视窗口中搜索

因此,现在第一次可以轻松搜索任何类型的数组,以找到所需的项。这之前一直是个难题,因为需要手动查看数组中的每一项,以找到所需的项。现在,真的很简单,只需键入搜索字符串,即可搞定。

为了提升性能,此版本进行了大量改进。监视窗口和其他调试工具窗口(如“本地”和“调用堆栈”)都已经过重新设计,以便能够异步加载。现在,Visual Studio 中在 UI 线程上运行的许多进程都是在非阻止后台线程上运行。因此,性能显著提升,而且调试期间的 UI 延迟或挂起也变少了。

调试性能也得到了提升。除了提升调试程序的响应速度以外,我们还一直在努力完成在 Visual Studio 2017 中启动的工作,以将占用大量内存的组件和工作负载移到单独进程中。借助 Visual Studio 2019,C++ 调试程序的组件可以在单独进程中运行。也就是说,可以调试占用大量内存的程序,而不会导致 Visual Studio 内存不足。此外,单步执行调试现在提供更快、更顺畅的单步执行代码,使其成为迄今为止最好的整体调试体验。

在新功能和性能提升方面,今后发布的版本还会对调试程序进行更多改进。

总结

除了本文中提到的功能以外,还将推出功能强大的新团队协作功能,旨在彻底改变开发人员交互。有关详细信息,请阅读本期中 Julie Lerman 的文章“使用 Visual Studio Live Share 开展远程协作”。

本文中介绍的功能只是 Visual Studio 2019 预览版 1 的一部分功能。除了已阅读的内容外,还有更多修复、调整和其他功能,包括 .NET Core 3 预览工具、移动开发、跨平台 C++ 和 Azure 功能。

在本文撰写时,Visual Studio 2019 预览版的功能尚不完整,但它明确了此产品的最终版本的发展方向。如果尚未用过,现在正是时候转到 visualstudio.com 下载预览版,并亲自试用这些新功能。


Mads Kristensen 是 Visual Studio 扩展性团队的高级项目经理。他热衷于扩展创作,多年来他编写过一些最热门的扩展(数百万次下载量)。**

衷心感谢以下 Microsoft 技术专家对本文的审阅:Gordon Hogenson、Rajen Kishna
Rajen Kishna 是 Visual Studio 高级产品营销经理

Gordon Hogenson 是 Microsoft 开发人员关系团队中的内容开发人员。他主要负责 docs.microsoft.com 上的 Visual Studio 和 Azure 内容。


在 MSDN 杂志论坛讨论这篇文章