Visual Studio 2017(版本 15.0)发行说明

Last Update: 2017/5/15

请注意:该版本不是最新版本的 Visual Studio 2017。 若要下载最新版本,请访问 Visual Studio 2017 的当前发行说明或者下载页。

本文介绍了 Visual Studio 2017(版本 15.0)发行的相关信息。

反馈

我们期待你的宝贵意见和建议! 可通过安装程序或 Visual Studio IDE 中的报告问题选项报告问题。 可在右上角找到该选项。 可在开发人员社区门户中跟踪自己的反馈。 如有任何建议,请通过 UserVoice 网站告知我们。


发布日期:2017 年 3 月 31 日 - 版本 15.0 (26228.12)

更新摘要

  • 现在 Visual Studio 2017 的 Xamarin.VS 扩展中支持 Xcode 8.3、iOS 10.3、watchOS 3.2 和 tvOS 10.2 工具和 API。

发布日期:2017 年 3 月 28 日 - 版本 15.0 (26228.10)

已修复的问题

这些是在内部版本 26228.10 中解决的客户报告的问题:


发布日期:2017 年 3 月 14 日 - 版本 15.0 (26228.09)

已修复的问题

这些是在内部版本 26228.09 中解决的客户报告的问题:


发布日期:2017 年 3 月 7 日 - 版本 15.0 (26228.04)

更新摘要

开发:快速导航、编写并修复代码

  • 新的安装体验降低了最小内存需求量,可以实现更快速、更定制化的安装,并且支持脱机安装。
  • Visual Studio IDE 大幅改进了 Visual Studio 2017,包括减少启动和解决方案加载时间、改进登录和标识、改进代码导航以及增添打开文件视图和链接的服务,实现了应用和任意本地服务或云端服务之间的连接。
  • 2015 和 2017 之间在 Visual C++ 方面没有重大更改。 更佳的 C++14 一致性级别、CMake 支持、生成吞吐量和编辑器效率。
  • C# 和 Visual Basic 扩展了对新的 C# 7.0 和 Visual Basic 15 语言功能的支持,引入了新的重构,只需一个操作即可整理源代码。
  • F# 支持 F# 4.1 语言功能、对 F# 编译器和 FSharp.Core 的改进,以及基于 Roslyn 工作区的新编辑器。
  • JavaScript 和 TypeScript 拥有 TypeScript 2.1,可用于 Visual Studio 中的所有 TypeScript 项目。 提供新的 JavaScript 语言服务,并默认启用。

调试:轻松调试、探查和诊断

  • 调试和诊断对异常帮助器进行了大改造,且可以通过“运行时单击”更快地导航代码。 此外,“诊断工具”窗口中增添了应用程序事件摘要,并对 CPU 工具实施了多项改进。

测试:使用全面的测试工具编写高质量代码

  • 实时单元测试现在可以在编辑器中将单元测试结果和代码覆盖率可视化。
  • 测试工具使用测试资源管理器将自动化与测试用例工作项关联。

协作:使用版本控制、具备敏捷性且高效协作

  • 通过团队资源管理器中的新增 Git 功能和更新的连接体验,可以在 Visual Studio 2017 中使用 Git 完成更多工作,并可轻松找到要连接到的项目和存储库。
  • 增强的 Visual Studio 反馈工作流报告问题协作性更佳。 搜索、跟进和投票,获取所有反馈的最新更新。

扩展:构建自己的扩展,根据自身喜好进行自定义

  • Visual Studio 扩展:通过构建自己的扩展来按照自身喜好对 Visual Studio 进行自定义。
  • 项目和项模板的可发现性:突破性地改进了 Visual Studio 使用项目和项模板的方式,提升了模板发现的性能。

装备:利用工具提高工作效率并探索新功能

  • .NET Core 和 ASP.NET Core:这包含新的基于 MSBuild 的 .NET Core 工具的 1.0 最终版本。 使用 Visual Studio 2017 可创建 .NET Standard 库、.NET Core 应用/库和使用新 csproj 格式的 ASP.NET web 项目。
  • 通用 Windows 应用开发工具:此版本包括对 .NET Native 本机工具链、.NET Core NuGet 框架的更新、新的效率工具以及对即将推出的 Windows 10“创作者更新”SDK 的预览支持。
  • Xamarin:Xamarin 4.3 添加了对 tvOS 的支持,同时改进了 iOS 资产目录支持和 XML 编辑体验。
  • Visual Studio Tools for Apache Cordova:基于浏览器的新模拟器可实现快速编码并即时查看结果。
  • 针对 Visual Studio 的 Node.js 工具:更新侧重于稳定性、性能和总体产品质量。
  • Visual Studio Tools for Unity:现可通过新的 Visual Studio 安装程序中的“使用 Unity 的游戏开发”工作负载安装 Visual Studio Tools for Unity 3。
  • Redgate 数据工具:为了将 DevOps 功能扩展到 SQL 数据库开发,Visual Studio 现在包含 Redgate 数据工具,其中包括 Redgate ReadyRoll Core、SQL 搜索和 SQL Prompt Core。
  • NuGet:NuGet 现在支持将包依赖项信息作为包引用直接存储在项目文件中,同时保持包引用的可传递优势。
  • 用于 XAML 应用的工具:现在可以通过 XAML 运行时工具栏跟踪焦点。 通过 XAML“编辑并继续”功能、XAML 编辑器改进和性能优化,提升了 XAML 的工作效率。
  • Data Tools 和 SQL Server:SQL Server Data Tools 的最新更新实现了对 Azure SQL 数据库和 SQL Server 2016 的最新功能的支持。
  • 开发人员分析工具:Visual Studio 2017 包括开发人员分析工具 v8.6,对 Visual Studio 中的 Application Insights 和 HockeyApp 功能做出了许多改进。
  • Visual Studio 的 Office 开发人员工具:包含了附带最新功能和更新的 Office 开发人员工具。
  • 体系结构依赖关系的实时验证:依赖关系验证关系图(又称层关系图)的实时通知。
  • 开发人员命令提示符:重构了脚本以支持新的安装体验。
  • 用于 .NET 的 Azure SDK:现可通过新的 Visual Studio 安装程序获取。

此版本中的新增功能

安装体验

我们很高兴推出新款全新设计的安装程序:

  • 减少 Visual Studio 的最小内存占用量。
  • 安装速度更快、系统影响更小和完全卸载。
  • 方便你更轻松地选择并仅安装所需功能。

首次安装 Visual Studio 2017 时,会获得新体验(图 1):

(图 1)Visual Studio 2017 中新的安装体验

最小的安装仅为数百兆字节,但仍然支持针对超过 20 种语言的基本代码编辑(包括源代码管理)。 大部分用户会想安装更多功能。 可添加一个或多个代表常见框架、语言和平台的“工作负载”,涵盖从 .NET 桌面开发到使用 Unity 的游戏开发等一切事务。

如何更新 Visual Studio

若要更新 Visual Studio,请运行 Visual Studio 安装程序并单击“更新”按钮。

对新的安装程序提出反馈

可使用标题栏右上角处新安装程序客户端的“报告问题”和“提供建议”命令来报告问题或给出好评。 我们想知道你在安装、卸载或修改安装时是否遇到错误,是否遇到异常安装时间(例如挂起)或意外错误消息。

创建用于脱机安装和新命令行安装支持的布局

系统管理员和其他用户现在可以创建 Visual Studio 的脱机布局,其中包含了安装产品所需的所有内容,无需访问 Internet。 此布局可以是完整的产品、工作负荷和/或组件的一个子集,以及一个或多个产品区域设置。 请注意,创建脱机布局需要 Internet 访问。 有关详细信息,请参阅 Create an offline installation of Visual Studio 2017(创建 Visual Studio 2017 的脱机安装)。

安装别名

Visual Studio Enterprise 和 Community(以及其他产品)现在可以并行安装在同一台计算机上。 若要使标识这些安装更加容易,可以指定短名称或“别名”。 例如,如果要安装 Visual Studio Enterprise,然后安装 Visual Studio Community,这两个程序在开始菜单上的显示是一样的。 可以为第二个程序提供别名,如“community”,开始菜单项中将显示诸如“Visual Studio 2017 (community)”和“Visual Studio 2017 (community) 开发人员命令提示”这样的名称。


Visual Studio IDE

IDE 改进

  • 已对 Visual Studio 进行优化以减少启动时间和解决方案加载时间。 首次启动 Visual Studio 提速 50%。
  • Visual Studio 现可监视影响启动、解决方案加载或编辑的扩展性能。 通过 IDE 中的通知栏,将收到有关执行效果不佳的扩展的警报。 借助新的性能中心(也可通过“帮助”>“管理 Visual Studio 性能”使用),可查看影响性能的扩展,还可发现影响启动性能的工具窗口并更改其启动加载行为。
  • 可在新的 Visual Studio 安装程序中选择 Visual Studio 适用的 GitHub 扩展。
  • 已将“重载所有项目”替换为“重载解决方案”,以在切换 VS 外部分支时获得更佳性能。 使用 Git 命令行切换分支时,请在切换分支后选择“重载解决方案”以最大程度地提升性能。
  • 增强了用于 .NET Core 和 ASP.NET Core 项目的文件通配功能。 请参阅项目文件通配,以获取更多详细信息。
  • 即将自动转到克隆后的存储库的文件夹视图。 可查看文件或使用新解决方案选择列表在解决方案资源管理器中打开解决方案。
  • 引入了新的外部服务主机,它将替代 VSHub。 此新的服务主机是一个外部进程,将在任务管理器中显示为 ServiceHub.Host.CLR.*.exe 和 ServiceHub.Host.Node.x86.exe。 此主机将最终消除与 VSHub 一起引入的 localhost http 流量,前者应可解决用户报告的产生干扰的 Fiddler 问题。
  • 预发布许可证到期消息更明确地说明了当前的许可证状态。
  • 现在,屏幕阅读器可以更轻松地访问“帐户设置”对话框。
  • 现在,通过从 Visual Studio 安装程序中安装帮助查看器组件,可使用脱机帮助。
  • 现在可以使用 Visual Studio 安装程序的“语言包”选项卡随时添加和删除多个用户界面语言。 可以使用“工具”>“选项”>“国际设置”,在那些已安装的用户界面语言之间选择当前的用户界面语言。
  • 通过版本控制状态栏,你可以更轻松地将本地存储库发布到 SCC 主机,并跟踪未提交(图 2)和未推送(图 3)的工作。

Version Control - Unpublished commits example

(图 2)版本控制 - 未发布的提交示例

Version Control - No pending changes example

(图 3)版本控制 - 未挂起的更改示例

登录和标识改进

推出了一种新的标识服务,可用于跨 Microsoft 开发人员工具共享用户帐户。 在 Visual Studio 中,此共享包括团队资源管理器、Azure Tools 和 Windows 应用商店发布等功能。 现在,这些功能的登录体验共有且一致。

除了改进 Visual Studio,我们还在服务端部署了部分改进功能,让用户可安全保持登录状态,消除了每 12 小时便强制登录的要求。 这解决了最常报告的登录问题。 深入了解如何减少 Visual Studio 提示

起始页

重新设计的起始页拥有新的“打开”和“创建”功能:

  • 从 VSTS 获取远程存储库或使用我们更加醒目的 MRU,以轻松地打开本地项目和解决方案。
  • 起始页 MRU 会显示在其他计算机上克隆的存储库,因此可在当前计算机上轻松克隆这些库。
  • 通过可搜索的模板和最近使用的模板列表,直接从起始页新建项目。 最近使用的模板也会在具有个性化帐户的 Visual Studio 实例间漫游。
  • 通过起始页上的“从 VSTS 签出”选项,快速启动 VSTS 体验的新克隆。
  • 可删除的“入门”部分。
  • “新闻”部分现可折叠:
    • 更新了新闻源中新添加的项上的徽章。
    • 在新闻源处于折叠状态时,如果出现新项,则对新闻源扩展器设置徽章。
  • 优化了视觉设计,由此解决了反馈的有关屏幕较小时元素截断的问题,同时提升了空间利用率。

下方显示了新的起始页(图 4):

Start Page with Get Started and News

(图 4)带“入门”和“新闻”的起始页

改进了代码导航

Visual Studio 2017 中的代码导航功能有了显著改进:

  • 通过“转到所有”功能(Ctrl+ 或 Ctrl+T),可快速查找并转到代码中的文件、类型、方法和其他元素。 通过它可找到任何类型的项,甚至在大型基本代码中亦可如此。 此外,若知道要查找的项类型,便可轻松进行筛选。 在 C#、Visual Basic 和 F# 中,我们还添加了模糊匹配,因此即使某个类型名称拼写错误,也仍然可获得结果。 还优化了“转到行”(Ctrl + G)体验。 “转到”系列命令位于“编辑”菜单的顶部(图 5)和(图 6)。

Go To Results Filtered

(图 5)转到筛选的结果

Go To Line

(图 6)转到行

  • “查找所有引用”(Shift+F12) 已大幅改进(当前针对 C#、Visual Basic、F# 和 C++),可实现高级分组、筛选、分类、在引用结果中搜索以及结果着色(针对 C# 和 VB),让用户清晰了解引用并自信地找到所需的代码行。 鼠标悬停在引用项上时,会显示一个工具提示,其中显示源代码中该引用的上下文(针对 C# 和 VB)。 通过切换工具栏中的“保存结果”按钮,“查找所有引用”的下一个调用将在新窗口中填充引用结果。 通过此操作,可将当前结果保留在现有窗口中(图 7)。

Find All References

(图 7)查找所有引用

  • 结构参考线现在编辑器中绘制,以便可轻松可视化正在处理的代码的结构。 鼠标悬停时,会显示一个工具提示(图 8),其中包含当前代码块(相对于其上级块)的上下文。 结构参考线当前支持 C#、Visual Basic、F# 和 XAML 文件,以及通过 TextMate 语法支持的任何文件。 可通过取消选中“文本编辑器” > “常规”类别下的“显示结构参考线”复选框,在“工具”>“选项”对话框中禁用此功能。

Structure Guide Lines

(图 8)结构参考线

通过 EditorConfig 支持编码约定

Visual Studio 编辑器现支持 EditorConfig,它允许开发人员定义编码样式约定并使其在不同编辑器和 IDE 之间保持一致。 请参阅文档获取更多详细信息,请参阅 .NET 文档获取有关如何使用 .editorconfig 文件管理 .NET 代码样式的信息。 请参阅已知问题,了解此版本中有关 EditorConfig 支持的限制。

打开文件夹

“打开文件夹”是使用不含项目和解决方案的基本代码的简便方法。 通过“文件”>“打开”>“文件夹”打开文件夹视图,然后选择要导航的文件夹。 可使用解决方案资源管理器打开和编辑文件(图 9)。 许多常用语言具有语法突出显示和符号导航(GoTo)支持。

The new Open Folder feature in the Visual Studio IDE

(图 9)Visual Studio IDE 中新的“打开文件夹”功能

此外,某些语言可直接由文件夹获得高级 IntelliSense 和调试支持:

  • C++ (CMake)。
  • Node.js - JavaScript/TypeScript。
  • C# 和 VB。

可使用 F5 和解决方案资源管理器中的文件上下文菜单实现生成或调试操作。 要获得最佳体验,请确保安装所使用语言的工作负荷。

文件夹视图也支持以下操作:

  • 使用 GoTo (Ctrl+,) 在文件夹中的代码中进行搜索。
  • 将解决方案资源管理器文件夹视图的范围设置为子文件夹。
  • 在资源管理器中或解决方案资源管理器的命令提示符下打开文件夹。
  • 利用解决方案选择下拉列表,在打开的文件夹/存储库的解决方案之间轻松切换。
  • 使用 launch.vs.json 配置调试和启动设置。 右键单击可调试的文件并选择“调试和启动设置”。
  • 使用 tasks.vs.json 配置任务和自定义生成。 右键单击任何文件,并选择“配置任务设置”。
  • Launch.vs.json 和 tasks.vs.json 在 JSON 编辑器中具有 IntelliSense。

大幅提升了打开文件夹和在文件夹视图与解决方案视图之间切换时的效果。

轻量级解决方案加载

轻量级解决方案加载可让大型解决方案的加载速度更快。 它可大幅节省大型解决方案的加载时间和内存使用量。 此功能并非默认启用,可按解决方案逐一启用,也可在 IDE 中全局启用。 若要全局启用,可导航到“工具”>“选项”,选择“项目和解决方案”下的“常规”(图 10),或通过使用“快速启动”搜索“轻量级解决方案加载”。 可在解决方案属性窗格中,为单个解决方案开启和关闭该功能。

The new Lightweight Solution load feature in the Visual Studio IDE

(图 10)Visual Studio IDE 中的轻量级解决方案加载的新增功能

轻量级解决方案加载最适合包含 C# 项目或包含混用 C# 和 C++ 的项目的大型解决方案。 如果检测到正在使用大型解决方案,系统可能会提示启用此功能。 有关此功能的更多详细信息,可访问 Visual Studio 博客

大幅改进了完整解决方案生成的性能,现在与常规的解决方案加载拥有同等性能。

语法着色、自动完成、代码段和对更多语言的“导航到”搜索支持

基于在 Visual Studio 2015 更新中添加的支持,Visual Studio 2017 现支持对更多语言进行语法着色和自动完成。 此外,这些语言中的其中一些语言也支持通过“导航到”(Ctrl+) 和/或代码段导航。

以下所示的语言文件支持新“Visual Studio 核心编辑器”中的这些功能(即使并未安装显式支持有问题的语言的工作负载)。 如果安装了提供语言支持的工作负载(例如 .NET 桌面应用程序开发工作负载、使用 C++ 的 Windows 桌面应用开发工作负载等),会提供更广泛的语言支持,包括 IntelliSense 和其他高级语言功能(例如灯泡)。

按支持级别列出的语言文件类型:

  • 仅支持语法着色和自动完成:
    • Bat、Clojure、CoffeeScript、CSS、Docker、F#、Groovy、INI、Jade、Javadoc、JSON、LESS、LUA、Make、Markdown ++、Objective-C、Perl、PowerShell、Python、Rust、ShaderLab、SQL、Visual Basic .NET、YAML。
  • 支持代码段(除了语法着色和自动完成以外):
    • CMake、C++、C#、Go、Groovy、HTML、Java、Javadoc、JavaScript、Lua、Perl、PHP、R、Ruby、Shellscript、Swift、XML。
  • 支持导航到(除了语法着色和自动完成以外):
    • C++、C#、Go、Java、JavaScript、PHP、TypeScript、Visual Basic。

项目概述页入门

针对新创建的项目,我们引入了全新的入门体验。 我们已将当前的入门页替换为新应用配置设计器中的“概述”选项卡,此页面侧重于能够让你快速入门并开始运行的操作! 在 4.x ASP.NET Core 和 Cordova 项目中已启用此选项(图 11)。

Project Overview

(图 11)项目概述

使用连接的服务连接到服务

在以前的版本中,此功能被命名为“服务功能”。 我们已将该名称更改为“连接的服务”。

连接的服务即 Visual Studio 2017 中新式的“添加连接的服务”功能或“添加服务引用”功能。 连接的服务功能可使应用与服务间的连接更轻松。 解决方案资源管理器中提供了一个用于 Web 和移动项目类型的名为“连接的服务”的新节点。 双击此节点会在 Visual Studio 中打开一个新的整页选项卡,可在其中发现可连接到的热门 Microsoft 服务。

在“连接的服务”页(图 12)上选择一个服务将调用“连接的服务向导”,该向导会配置项目、下载必要的 NuGet 数据包,从而帮助快速轻松地根据服务需要进行编码。

Connected Services

(图 12)连接的服务

产品随附的工具和功能

通过 Visual Studio 2017 可轻松获取其他工作负载和组件,而无需离开 IDE(图 13)。 利用“快速启动”可查找并启动任何工作负荷或单个组件的 Visual Studio 安装程序。

In-product acquisition via Quick Launch

(图 13)通过快速启动在产品内获取

如果找不到正在寻找的模板,也可以从“新建项目”对话框中打开 Visual Studio 安装程序(图 14)。

In-product acquisition via New Project Dialog

(图 14)通过快速启动在产品内获取


Visual C++

Visual Studio 2017 向 Visual C++ 环境引入了许多更新和修补程序。 感谢你报告 bug! 我们修复了编译器和工具中的 250 多个 bug 和已报告问题,其中很多是客户通过 Microsoft Connect 提交的。 我们在此版本中着手了 STL 的性能改进。 现在默认使用全新的基于 SQLite 的数据库引擎。 这将提高数据库操作(如“转到定义”和“查找所有引用”)的速度,并将极大地缩短初始解决方案分析时间。 现提供原始 C++ 工作流的更细化的安装体验。 我们添加了可选组件,使你能够仅安装所需工具。 Visual Studio 中的 CMake 支持已准备好展现它的强大功能! 直接将 CMake 项目加载到 VS 中并立即开始编写代码。 改进了“打开文件夹”C++ 体验,因此可以直接将源代码编入 VS 中,而无需创建任何 VS 解决方案和项目。 “导航到”现称为“转到”,这个涵盖性术语针对一组新的导航筛选器。 这使用户可更轻松地找到正确结果,尤其在较大代码库中。

C++ 代码分析

用于强制执行 C++ 核心准则 的 C++ 核心检查器现已通过 Visual Studio 分发。 只需在项目“属性”页(图 15)的“代码分析扩展”对话框中启动检查器,即会在运行代码分析时包含扩展。

CppCoreCheck properties page

(图 15)CppCoreCheck 属性页

C++ 编译器

我们更新了 C++ 编译器和标准库,不仅增强了对 C++11 和 C++14 功能的支持,还引入了对预期推出的某些 C++17 标准功能的初步支持。 编译器支持通用 constexpr 和聚合的 NSDMI,具有 C++14 标准版中的全部新增功能。 请注意,编译器仍缺少 C++11 和 C++98 标准版中的一些功能。 Visual Studio 2017 允许结合使用 /sdl 和 /await。 删除了协同程序的 /RTC 限制。

此版本在优化和代码生成方面做出了若干改进。 显著改进包括:

  • 改进了循环的代码生成:支持常量整数除法的自动矢量化,优化了 memset 模式的识别。
  • 提高了代码安全性:改进了缓冲区溢出编辑器诊断的显示,/guard:cf 现可保护生成转移表的切换语句。
  • /Debug:fastlink 选项得到改进,相较 Visual Studio 2015,大组件上的链接速度提升了 30%。
  • 使用协同例程时,实验关键字 "yield"(在 /await 开关下可用)已被删除。 应更新你的代码,以改为使用 "co_yield”。 有关详细信息,请参阅 Visual C++ 团队博客

C++ 库

  • [STL] basic_string 的性能改进。
  • [STL] 增添了 <any>、<string_view>、apply()、make_from_tuple()。
  • [STL] std::vector 已经过全面检修,以提高正确性和性能。
  • [STL] 现在 STL 会避免取消引用 null 复杂精致指针。
  • [STL] 增添了 <optional>、<variant>、shared_ptr::weak_type 和 <cstdalign>。
  • [STL] 在 min/max/minmax(initializer_list) 和 min_element/max_element/minmax_element() 中启用了 C++14 constexpr。
  • [STL] 将 std::string/std::wstring 的移动构造函数的性能提升了超过 3 倍。
  • [STL] 有关 STL 改进的完整列表,请参阅:Visual C++ 团队博客
  • [ATL] 还进行了另一组名称查找一致性修复。
  • [ATL] 现有的移动构造函数和移动赋值运算符现已正确地标记为非引发。
  • [ATL] 取消禁止有关 atlstr.h 中本地静态变量的线程安全初始化的有效警告 C4640。
  • [ATL] 在[使用 ATL 和生成 DLL] 时,本地静态变量的线程安全初始化在 XP 工具集中自动关闭。 这种情况不会再出现。 如果需要关闭线程安全初始化,则可以在项目设置中添加 /Zc:threadSafeInit-。
  • [AMP] 审核了库并修复了拼写错误。
  • [VCRuntime] 控制流防护符号新增了标头“cfguard.h”。

C++ IDE

现针对 C++ 本机项目和 C++ /CLI 项目有了更佳的配置更改性能,后者的性能增加更为明显。 第一次激活解决方案配置时,现在的速度会更快,且此解决方案配置的所有后续激活几乎可瞬时完成。

现在默认使用全新的基于 SQLite 的数据库引擎。 这将提高数据库操作(如“转到定义”和“查找所有引用”)的速度,并将极大地缩短初始解决方案分析时间。 设置已移至“工具”>“选项”>“文本编辑器”>“C/C++”>“高级”下(之前位于...“C/C++”>“实验”下)。

我们改进了不使用预编译标头的项目和文件的 IntelliSense 性能 - 为当前文件中的标头创建自动预编译标头。

其他更新包括:

  • 还为错误列表中的 IntelliSense 错误添加了错误筛选和帮助(图 16)。 单击错误列现在允许进行筛选(图 17)。 此外,单击特定错误或按 F1 将启动错误消息的联机搜索。

Error List

(图 16)错误列表

Error List Filtered

(图 17)筛选的错误列表

  • 增添了按类型筛选“成员列表”项的功能(图 18)。

Member List Filtered

(图 18)筛选的成员列表

  • 添了新的实验性预测 IntelliSense 功能,此功能可根据上下文筛选成员列表中的所示内容。
  • 在新的“查找所有引用”UI 中,可了解是否要从 C++ 代码结果中的变量进行读取或向其写入。

  • 已将“点到箭头”IntelliSense 功能从实验级提升为高级,且现在为默认启用。 编辑器功能“展开作用域”和“展开优先级”也已从实验级提升为高级。

  • 实验性的重构功能“更改签名”和“提取函数”现默认可用。

  • 我们启用了用于 C++ 项目的新实验性功能“快速项目加载”。 下次打开 C++ 项目时,加载速度将更快,而再下一次的加载速度甚至还会更快!

  • 改进了“打开文件夹”体验。 通过“打开文件夹”加载源,可编辑、生成和调试非 MSBuild C++ 项目。 通过以下 json 文件自定义体验:

    • 使用 CppProperties.json 可自定义 IntelliSense 和浏览体验。
    • 使用 Tasks.vs.json 可自定义生成步骤。
    • 使用 Launch.vs.json 可自定义调试体验。
  • 无需在根文件夹中创建 CppProperties.json 文件,C++ IntelliSense 便可正常工作。 此外,我们增添了一个新的下拉列表,允许用户在分别由 CMake 和 CppProperties.json 文件提供的配置之间轻松切换。 “打开文件夹”中的 CMake 支持:在使用“打开文件夹”打开 CMake 项目时会自动配置用于 C++ 编辑、生成和调试的环境。

  • 通过 CMakeLists.txt 文件所在的同一文件夹中的 CMakeSettings.json 文件提供进一步的配置支持(图 19)。

CMake Open Folder

(图 19)CMake 打开文件夹

C++ 安装工作负荷

  • 使用 C++ 的 Windows 桌面开发:

    • 现提供原始 C++ 工作流的更细化的安装体验。 我们添加了可选组件,使你能够仅安装所需工具。 请注意,在安装程序用户界面中列出的组件的安装大小的指示并不准确,而且它低估了整个大小。

    • 若要在 C++ 桌面工作负载中成功创建 Win32 项目,则必须安装工具集和 Windows SDK。 安装推荐(选中)的组件“VC++ 2017 v141 工具集(x86、x64)”和“Windows 10 SDK (10.0.14393)”可以确保正常运行。 如果未安装所需工具,将无法成功创建项目,且向导将挂起。

  • 使用 C++ 的 Linux 开发:

    • 热门扩展“用于 Linux 开发的 Visual C++”现已纳入 Visual Studio。 此安装提供开发和调试运行在 Linux 环境中的 C++ 应用程序所需的一切信息。
  • 使用 C++ 的游戏开发:

    • 以 DirectX 或 Cocos2d 为后盾,利用 C++ 的强大功能构建专业游戏。
  • 使用 C++ 的移动开发(Android 和 iOS):

    • 现可利用 Visual Studio 创建和调试面向 Android 和 iOS 的移动应用。
  • 通用 Windows 平台开发:

    • C++ 是通用 Windows 平台开发工作负荷的可选组件。 当前必须手动完成 C++ 项目的升级。 如果在 Visual Studio 2017 中打开面向 v140 的 UWP 项目,且如果没有安装 Visual Studio 2015,则需要在项目属性页中选择 v141 平台工具集。

Clang/C2 平台工具集

Visual Studio 2017 附带的 Clang/C2 工具集现在支持 /bigobj 开关,这对生成大项目来说至关重要。 它还在编译器的前端和后端进行了多项重要的 bug 修复。


C# 和 Visual Basic

语言扩展

此版本引入了对 C# 7.0 和 Visual Basic 15 语言功能的支持,包括:

对于 C#:

对于 Visual Basic:

  • 值元组引入使用元组临时对一组类型化的值分组时的语言支持:Dim point As (x As Integer, y As Integer) = GetOffset()
  • ByRef 返回消耗可扩展语言,支持使用具有 ByRef 返回的库中的函数和属性。
  • 二进制文本和数字组分隔符允许二进制数的本机表示形式。 这对位掩码和标志枚举非常方便:&B1001_0011

有关详细信息,请关注我们在 CSharpLang GitHubVBLang GitHub 上的语言设计,以详细了解这些设计及其他建议的语言扩展。

快速操作和重构

Visual Studio 提供许多重构,帮助提高工作效率并使代码更易读。 下面列出了部分重构:

  • 使用初始值设定项简化对象初始化(图 20)。

Use object initializer

(图 20)使用对象初始值设定项

  • 利用新的 C#7 功能以内联方式移动 out 变量声明(图 21)。

Move out variable inline

(图 21)以内联方式移出变量

  • 利用新的 C#7 功能,使用 null 合并运算符简化 null 检查和引发表达式(图 22)。

Use throw expression with null-coalescing operator

(图 22)配合使用引发表达式和 null 合并运算符

  • 将类型移动到匹配文件:通过 Ctrl+. 单击一下,提取某文件中的类型并将其置于带匹配名称的另一文件。
  • 同步文件和类型名称:如果文件和类型名称不同步,可使用 Ctrl+.
  • String.Format 转换为字符串插值:借助此“快速操作”利用 C# 6 语言功能
  • 将缺少的大小写添加到 C# 开关或 Visual Basic Select。
  • 将属性转换为方法,反之亦然。
  • 添加包引用:可对无法识别的类型自动检索和安装 NuGet 包(以及添加 using/Import)。 若要启用此功能,请转到“工具”>“选项”>“文本编辑器”>“[C# / Basic]”>“高级”>“建议对引用程序集中的类型使用 using”/“建议对 NuGet 包中的类型使用 using”。
  • 根据需要同步异步方法。
  • 支持对拼写错误的类型执行“模糊”匹配。
编码约定配置和强制

以 Visual Studio 对 EditorConfig 的支持为基础,我们与社区协作,将 .NET 代码样式设置添加到了文件格式。 这意味着你可以配置团队的代码样式约定、将其签入源控件,并在开发人员键入时让冲突实时显示在编辑器中。 可以在 Roslyn 存储库的 .editorconfig 中或此文档中查看所有代码样式选项。 可通过“工具”>“选项”>“文本编辑器”>“[C#/Basic]”>“代码样式”继续配置特定于计算机的代码样式设置,并且这些规则会在 EditorConfig 存在且与之冲突时被覆盖。

我们还添加/更新了样式分析器,以帮助你自定义和强制执行团队的编码约定,包括:

  • 命名样式规则。
  • 使用“var”或显式类型。
  • 对访问成员 使用“this.” 或“Me.”。
  • 使用表达式主体或块。
  • 对 'cast' 和 'null' 检查使用模式匹配。
  • 使用显式元组名称。
  • 通过引发表达式、条件委托、合并表达式和 null 传播简化 null 检查。
  • 需要大括号。

注意:其中部分代码样式规则在编辑器中默认配置为“建议”(图 23)。

Configure code style preferences and enforcement from EditorConfig

(图 23)在 EditorConfig 中配置代码样式首选项和强制实施

IntelliSense 改进

此版本还改进了 IntelliSense,可帮助在处理较大解决方案或不熟悉的代码库时提高工作效率。 我们为 IntelliSense 添加了图标任务栏,可供你按类型(如方法、属性、类等)筛选成员列表。 每个筛选器切换都具有关联的键盘快捷方式,可以通过将鼠标悬停在该图标上来发现。 若要启用此功能,请转到“工具”>“选项”>“文本编辑器”>“[C# / Basic]”>“IntelliSense”,选中筛选选项并突出显示(图 24)。

IntelliSense Completion Filtering

(图 24)IntelliSense 完成筛选

其他编辑器改进

  • 你现在可以通过定位游标中间字符串并按 Enter 键,将一个长字符串拆分为多个串联字符串。
  • 我们投入了大量工作来提高存在用于计算诊断和 CodeLens 信息的后台操作时的 IDE 响应。

F# 

对 F# 4.1 语言功能的支持

  • 与 C# 7/VB 15 元组互操作的结构元组。
  • 支持使用 C# 7 ref 返回的 Byref 返回。
  • 使用 [<Struct>] 属性的结构记录支持(由 Will Smith 完成)。
  • [<Struct>] 属性的结构可区分联合支持。
  • 新的 Result<'TSuccess, 'TFailure> 类型,带有 FSharp.Core 中的支持函数(由 Oskar Gewalli 完成)。
  • fixed 关键字,其支持在堆栈上本地固定指针类型。
  • 数值文本中的下划线(由 Avi Avni 完成)。
  • 调用方信息属性参数(由 Lincoln AtkinsonAvi Avni 共同完成)。
  • 同一文件中通过 namespace recmodule rec 的相互引用类型和模块。
  • 模块上与类型共享同一名称的隐式“Module”后缀。

对 F#  编译器和 FSharp.Core 的改进

(许多改进通过 F # 社区实现)

基于 Roslyn Workspaces 的新编辑器

(许多新 IDE 功能由优秀的 F# 社区提供)

F#  社区的其他贡献

我们要特别感谢整个 F# 社区为 Visual Studio 2017 中 F# 工具版本进行内部测试、归档 bug、促进讨论以及实现 bug 修复和功能所作出的努力。 没有 F# 社区,就不会有 Visual Studio 2017 的成功。 请查看完整的参与者列表。


JavaScript 和 TypeScript

TypeScript 2.1

TypeScript 2.1 适用于 Visual Studio 中的所有 TypeScript 项目。 TypeScript 2.1 提供下层 async/await、更好的类型推理、本地对象扩展及更多功能! 若要详细了解此版本,请查看 发布博客文章完整更改日志

JavaScript 语言服务

提供新的 JavaScript 语言服务(图 25),并默认启用。 新服务提供更强大的 IntelliSense,并增添了对 JSDoc 注释批注、ES6 和常见 JS 模块格式的 IntelliSense 支持。 此外,它还支持 JSX 语法和 ES2016 的功能,如生成器、模块和修饰器。 有关详细信息,请参阅此博客文章或 GitHub 上的 JavaScript IntelliSense 文档

Rich JavaScript IntelliSense for jQuery

(图 25)适用于 jQuery 的大量 JavaScript IntelliSense

性能改进

改进性能是此版本的一个重点所在。 除对提高内存和响应作出一些优化外,整个 JavaScript/TypeScript 语言服务也已移到 devenv.exe 之外的附属进程,从而降低较大 VS 项目的内存占用。 如此一来,在处理较大的 JavaScript 项目时,Visual Studio 进程的内存消耗更低,内存崩溃的可能性更小。 若要阅读有关这些改进的详细信息,请参阅此博客文章


调试和诊断

运行时单击

只需在调试运行到此行时单击代码行旁边的图标(图 26)。 无需再设置临时断点,也不必再执行多个步骤来执行代码和在所需行停止。 现在,调试器下停在中断状态时,“运行时单击”图标会在鼠标悬停位置的代码行旁边巧妙显示。 将鼠标移动到图标,然后单击按钮,代码即会运行并在下次于代码路径中命中时停在该行。 可通过“调试”>“选项”>“启用‘运行时单击’”将其关闭。

Run to Click Icon

(图 26)运行时单击图标

“附加到进程”筛选器

在“附加到进程”对话框(图 27)中轻松搜索,快速查找要将调试器附加到的进程。 将对正在运行的进程列表进行筛选,以筛选出与搜索条件匹配的项。 搜索筛选器具有记忆功能,会在重新打开对话框时提供之前的搜索内容。

Attach to Process Filter

(图 27)“附加到进程”筛选器

重新附加到进程

现可快速重新附加到之前调试的进程。 触发新的“调试/重新附加到进程”(Shift+Alt+P) 命令会立即尝试将调试器附加到通过“附加到进程”对话框调用的上一个调试会话的最后若干进程中。 调试器将通过先尝试匹配上一个进程 ID,然后匹配上一个进程名称,再次附加到进程。 如果没有找到匹配项,或找到多个具有相同名称的进程,则会出现“附加到进程”对话框,可通过它选择所需的进程。

新的异常帮助器

新的“异常帮助窗口”(图 28)可用于查看异常信息,该信息显示在非模式对话框中,可对内部异常进行即时访问。 诊断 NullReferenceException 时,现可从异常帮助器的右侧快速查看哪些内容是 null。 现可在引发的异常处停止时单击复选框添加条件,排除特定模块引发的异常类型。 请阅读此博客文章,更详细地了解新的异常帮助器优势。

The New Exception Helper dialog

(图 28)新的“异常帮助程序”对话框

将条件添加到异常设置

如果你将调试程序设置为在引发时中断,则可以添加条件,以便调试程序仅在指定模块中引发异常时才中断(图 29)。

Edit Conditions dialog box

(图 29)“编辑条件”对话框

调试器辅助功能的改进

现可更有效地将多个调试器窗口(调用堆栈、局部变量、自动、监视和快速监视)与屏幕阅读器配合使用以及用于满足其他辅助功能需要。

.NET Core 的 IntelliTrace 事件

IntelliTrace 现在支持 ASP.NET Core 应用的 MVC、ADO.NET 和 HttpClient 事件。 这些事件将显示在“诊断工具”窗口中的“事件”选项卡中。

“诊断工具”窗口更新

启动调试会话后,将在“诊断工具”窗口中看到应用程序新的“摘要”视图(图 30)。 从此处,将能够:

Summary tab in Diagnostics Tools Window

(图 30)“诊断工具”窗口中的“摘要”选项卡

性能探查器更新

性能探查器现可附加到正在运行的进程。 CPU 使用率工具、GPU 使用率工具和性能向导现可附加到正在运行的进程。

CPU 使用率工具更新

CPU 使用率工具作出了几处改进:

  • 更好的外部代码支持 - CPU 工具现在可以使你更深入地了解库和框架函数被用户代码调用时的成本。
  • 函数视图(图 31)- 通过函数的 CPU 成本对函数进行排名的视图。

Functions List

(图 31)功能列表

  • 调用方/被调用方视图(图 32)可用于调查所选函数调用和被调用的成本。

Caller / Callee View

(图 32)调用方/被调用方视图

  • 当在 CPU 工具中选定函数时,源视图将显示函数的源代码。

Chrome 调试支持

当开始调试 ASP.NET 项目并选择 Google Chrome 作为浏览器后,Visual Studio 将调试在 Chrome 中运行的 JavaScript。 如果想要改为使用浏览器内的开发工具,可以在“工具”>“选项”>“调试”下禁用此功能。


实时单元测试

Visual Studio 2017 Enterprise 版中的实时单元测试(图 33)功能会在编辑器中实时显示单元测试结果和代码覆盖率。 它支持 MSTest、xUnit 和 Nunit for C# 以及面向 .NET Framework 的 VB 项目。

Live Unit Testing

(图 33)实时单元测试
有关详细信息,请参阅实时单元测试博客


测试工具

使用测试资源管理器将自动化与测试用例工作项关联

现在可通过在测试资源管理器中选择一种测试方法将自动化和测试用例工作项(图 34)关联。 通过这种新体验还可查看所选择的测试方法的现有关联。

只需在测试资源管理器中右键单击测试,

Test Explorer Associate Automation

(图 34)测试资源管理器关联自动化

并提供测试用例 ID 即可创建关联(图 35)。

Associate Automation

(图 35)关联自动化

在 Visual Studio 的先前版本中,可使用工作项窗体完成此操作。 可使用“工具”|“选项”打开兼容模式来启用基于工作项窗体的体验(图 36)。

Work Item Form Compatibility mode

(图 36)工作项窗体兼容模式


团队资源管理器

新增 Git 功能

我们已在 Visual Studio 2017 中添加了新的 Git 功能,用户现在可在不离开 IDE 的情况下执行更多端到端工作流。 可轻松查看传出提交的差异、执行强制推送来完成变基或推送修改提交、复原上游分支以及从 VS 继续修补程序变基。 此外,迁移到了 git.exe。 这使我们可提供最新功能。 我们支持 SSH、尊重你的配置选项,并在团队资源管理器中精确显示命令行中所示的内容。 若要了解有关这些功能的详细信息,请查看博客文章

连接到 VSTS/TFS

在 Visual Studio 起始页和团队资源管理器中,已个性化和简化了在 VSTS/TFS 中连接到项目和克隆存储库的过程,从而使得能够更快速且更轻松地找到要连接到的项目和存储库。 全新的“连接”页面仅显示已在所有 VSTS/TFS 服务器中映射和克隆的项目和存储库(而非显示每个项目的每个存储库)。 此外,你在克隆存储库前不再需要连接到某个项目。

当启动对话框以连接到 VSTS 和 TFS 时,将看到经过重新设计的用户体验。 可以看到添加的 TFS 服务器,然后是所选用户帐户的所有 VSTS 服务器、项目和存储库。 结果以树形列出,以改善导航效果。 除了存储库外,还可以连接到集合或项目。 有关详细信息,请参阅 Connect to Team Projects(连接到团队项目)。

工作项窗体

如果从 Visual Studio 2017 连接到 Visual Studio Team Services 并打开工作项,Web 浏览器中会显示工作项窗体(图 37)。 不过,如果你连接到的是 Team Foundation Server 2015 或更早版本,则看到的是旧版工作项窗体。

Work Item Form in Team Explorer

(图 37)团队资源管理器中的工作项表单


增强的 Visual Studio 反馈工作流

Visual Studio 2017 包括升级反馈体验,可改善信息跟进和协作。 作为此次升级的一部分,你将注意到 Visual Studio 中“问题报告”体验的协作性增强,且补充了复合式 Web 门户,形成完全端对端反馈解决方案。 现在,可以搜索、关注、投票并获取之前通过 Visual Studio IDE 的“报告问题”功能提供的所有反馈的最新更新。 这些增强的体验针对我们收到的众多用户反馈,且让用户能够与我们的团队进行双向交流。


Visual Studio 扩展性

新的扩展性格式

借助 Visual Studio 2017 中新的安装程序技术,用户可更好地掌控所安装的工具。 一些用户可能仅安装核心 Visual Studio 编辑器,而另一些可能安装若干工作负荷。 现在,扩展作者可在清单中指定扩展所需的单独组件,以便确保安装了扩展所需的必备功能。

如果扩展不是使用新的 VSIX 格式生成的,用户在尝试安装此扩展时,将会收到警告。 旧的 VSIX 格式不会指定所需实现的先决条件,因此当 Visual Studio 2017 中不具备这些先决条件时,该格式可能无法正常工作。 新的 VSIX 格式是向后兼容的,适用于 Visual Studio 2012 及之前的所有版本。

更新了 VSIX 清单设计器,以反映对清单的更改。 在先决条件选项卡(图 38)中,扩展开发人员可找到用于指定为扩展先决条件的已安装组件的列表。

Prerequisite

(图 38)先决条件选项卡

在扩展安装期间,VSIX 安装程序(图 39)将指示缺少哪些组件,并会将其与扩展一并安装。

VSIXInstaller

(图 39)VSIXInstaller

批量修改扩展

在“扩展和更新”对话框(图 40)中,现可计划在需要重新启动 Visual Studio 之前,要进行安装、更新和卸载的多个扩展。 右下角有一个计划任务的摘要。 若要删除计划内修改,请单击当前计划安装的扩展旁边的 X 符号。

Extensions and Updates Dialog

(图 40)“扩展和更新”对话框

当 VSIX 安装程序检测到所有 Visual Studio 窗口已关闭后,便会启动以完成计划的修改(图 41)。

Batched Modification Installer

(图 41)批量修改安全程序

Ngen 支持

现可选择使用 Ngen(图 42)安装程序集。

NGEN Properties

(图 42)NGEN 属性

  • Ngen - 是否对程序集使用 Ngen。
  • Ngen 应用程序 - 经由 /ExeConfig 切换传递到 Ngen 的应用程序。
  • Ngen 体系结构 - 本机映像的目标体系结构。 选项有:x86、x64 以及全部。
  • Ngen 优先级 - Ngen 优先级别。

在扩展目录外安装文件

现在,可选择将文件安装到位于扩展目录之外的一系列所选文件夹(图 43)。

VSIX Properties

(图 43)VSIX 属性

  • 包括在 VSIX 中 - 将文件包括在 VSIX 中。
  • 安装根目录 - 要将文件安装在其中的根目录。 选项包括:默认(安装在扩展目录内)、PublicAssemblies、ReferenceAssemblies、MSBuild、Schemas、Licenses、RemoteDebugger 和 VSTargets。
  • 目标路径 - 要安装在用户计算机上的文件的名称。
  • VSIX 子路径 - 根目录下安装文件时所用的子路径。

漫游扩展管理器

在新的 Visual Studio 2017 中,漫游扩展管理器可帮助跟踪开发环境中你喜欢的所有扩展。 漫游扩展可在云中创建同步列表,从而跟踪已安装的扩展。

登录到 Visual Studio 时,从“工具”>“扩展”和“更新”,单击“漫游扩展管理器”可快速查看扩展列表(图 44)。 它可跟踪已安装的扩展,并让你选择要添加到漫游列表的扩展。 库中的新扩展与日俱增,此工具可让你快速轻松地使用钟爱的扩展设置每个开发环境。

The new Roaming Extension Manager in the Visual Studio IDE

(图 44)Visual Studio IDE 中的全新漫游扩展管理器

使用此功能时将注意到 3 种图标类型:

  • “漫游”图标“漫游”图标 - 表示存在于漫游列表中、但未在此计算机上安装的扩展。 可通过“下载”按钮安装这些扩展。
  • “漫游且已安装”图标“漫游且已安装”图标 - 表示存在于漫游列表中且已在此环境中安装的所有扩展。 如果你确定不希望漫游,可通过“停止漫游”按钮删除它们。
  • “已安装”图标“已安装”图标 - 表示此环境中已安装、但不属于漫游列表的所有扩展。 扩展可通过“开始漫游”按钮添加到漫游列表。

这些图标将显示列表当前的状态。 可使用处于任何状态的任何扩展,因此可自定义你心中所想的内容! 或者,让我们为你代劳! 登录时下载的所有扩展都将作为“漫游且已安装”的内容添加到列表,因此将包含在漫游列表中,使你可在任意计算机上进行访问!

发现项目和项模板

自 Visual Studio 2017 起,突破性地改进了 Visual Studio 使用项目和项模板的方式,提升了模板发现的性能。 新的发现机制现在要求所有项和项目模板均遵循模板清单文件中定义的以下“vstemplate”架构。 模板清单文件中未定义的 Visual Studio 模板在“新建项目”或“新建项”对话框中将不再可见。 新的扩展性工具将在 VSIX 生成期间生成清单;如果你具备随附 MSI 包发布的 Visual Studio 模板,则必须为这些模板手动生成模板清单文件。 有关详细信息,请参阅 Upgrading Custom Project and Item Templates for Visual Studio 2017(升级 Visual Studio 2017 的自定义项目和项模板)MSDN 页面。


.NET Core 和 ASP.NET Core

这包含新的基于 MSBuild 的 .NET Core 工具的 1.0 最终版本。 使用 Visual Studio 2017 可创建 .NET Standard 库、.NET Core 应用/库和使用新 csproj 格式的 ASP.NET web 项目。

在安装程序中,.NET Core 工具自动包含在“ASP.NET 和 Web 开发”工作负载中,且在“.NET 桌面开发”工作负载中作为可选组件。 如果仅要开发跨平台使用的 .NET Core 应用程序,可使用安装程序的“其他工具集”部分中的“.NET Core 跨平台开发”工作负载来仅安装 .NET Core 和 ASP.NET Core 工具。

此版本中的高级功能包括:

  • .NET Core 项目的 MSBuild 支持和简化的 csproj 项目格式,使用该格式可轻松实现手动编辑,而无需卸载项目。
  • 编辑 .NET Core .csproj 文件非常简单,只需在解决方案资源管理器中右键单击项目然后选择“编辑”即可。
  • 支持项目文件中的文件通配符,可无需枚举所有源代码文件名,从而使 csproj 文件大小保持精简。
  • NuGet 包引用现在是 csproj 文件的一部分,这样可将所有项目引用合并在一个文件中。
  • NET Core、.NET Standard 和 .NET Framework 项目之间的互操作。 例如,.NET Core 项目可向 .NET Standard 项目添加项目到项目引用。
  • 一个项目中跨目标的多个目标框架。
  • 现有 project.json .NET Core 项目在 Visual Studio 中打开时会自动迁移到 csproj,或者可 使用 .NET 命令行接口 (CLI) 手动迁移。
  • 轻松配置 ASP.NET Core 应用程序与 Docker 支持的持续生成集成和配置从 Visual Studio IDE 内部到 Azure 容器服务的持续生成交付。

请参阅 .NET 博客以了解更多详细信息。


通用 Windows 应用开发工具

更新了 .NET Native 工具链

此更新的 .NET Native 工具链添加了好几个优化功能,可提高 Visual Studio 中托管的 UWP 应用的运行时性能。 此版本包含 600 多个 bug 修复和功能,不仅解决了客户的主要反馈问题,而且还提高了工具链的总体质量。

5.3.0 Microsoft.NETCore.UniversalWindowsPlatform 包

.NET Core NuGet 框架库的此次更新解决了客户报告的许多关键问题。 现有的 UWP 项目可以使用 NuGet 引用管理器更新到此新版本。 此外,新的 .NET Core 包中包含 .NET Native 工具链。

Windows 10 周年更新 SDK 和仿真器

此版本中包括 Windows 10 周年更新的 Windows SDK 和 Windows Phone 仿真器。

  • 现可使用较少的 XAML 标记从工具箱创建 UI 元素,让 XAML 更简洁、更易读。
  • 通过 XAML 设计器上的新选项工具,开发人员可选择要在设计图面上预览的 UI 主题和高对比度设置。
  • “属性”窗口中的值编辑器现接受简单的数学公式,如“60 + 20”。 将立即计算公式(本例中等于 80),生成的值放入 XAML。

用于创建视觉资产的清单设计器功能

清单设计器(图 45)进行了可视化刷新,现还可生成 UWP 应用的视觉资产。 现可使用单个源映像创建各种尺寸的磁贴、徽标、图标和初始屏幕,以适合应用针对的每种设备的大小。

Manifest Visual Asset Generator

(图 45)清单视觉资产生成器

UI 分析

现在,通用 Windows 平台工具可检测一些与辅助功能和性能相关的常见问题。 通过在“诊断工具”窗口的“选择工具”菜单中启用“UI 分析”工具,可报告这些问题,并随附有关阐释问题原因和解决方法的有用文章的链接。 开发时启用 UI 分析可使 UI 性能和辅助功能处于应用程序开发前沿。


Xamarin

Visual Studio 2017 中包括 Xamarin 4.4。 有关更多信息,请参阅 Xamarin 发行说明

此 Xamarin for Visual Studio 4.4 发布版本更新了 Xamarin.iOS 10.8Xamarin.Android 7.2 版本。

Bug 修复

此版本包括以下修复:

  • iOS Extension 应用未能构建,出现“无法读取授权数据”错误。(4.4.0.31)
  • 包括针对 Watson 报告的符号。(4.4.0.6)
  • 如果解决方案还包含 Wix 项目,则 Android 部署失败。(4.3.1.39)
  • 打开某些 iOS 项目时出现死锁。(4.3.1.39)
  • 断点不会命中第二层 PCL 引用。(4.3.1.39)
  • 解决因缺少 CodeSignNativeLibraries 任务而导致的 iOS 问题。(4.3.1.39)
  • 连接到 Mac 服务器后打开情节提要时出错。(4.3.1.39)
  • Android 类库项目的属性页面上应仅包含“使用 Android 版本编译”。(4.3.1.39)
  • 转到“工具”->“选项”->“Xamarin”->“其他”选项卡时,Visual Studio 挂起。(4.3.1.39)
  • 在某些环境中加载跨平台解决方案时,Visual Studio 挂起。(4.3.1.1)
  • VS 项目模板中未引用 Microsoft.Csharp。(4.3.1.1)
  • 若配置的用户 Shell 没有使用 bash 语法,则无法连接到 Mac 服务器。(4.3.1.1)
  • 缺少“提交到测试云”选项(已在 VS2013 和 VS2015 中修复)。(4.3.1.1)
  • 变量/属性名称与其他内容的类名称相同时,调试程序开始混淆。(4.3.1.1)
  • 无法重命名从资产目录中设置的映像。(4.3.1.1)
  • 监视扩展项目中强制隐藏了“资源”文件夹。(4.3.1.1)
  • 对 tvOS 项目而言,“资源”中的“Assets.xcasset”文件夹不会隐藏。(4.3.1.1)

Visual Studio 用于 Apache Cordova 的工具

此 Visual Studio 2017 版包括以下改进:

  • Cordova 模拟 - 基于浏览器的新模拟器可实现快速编码并即时在浏览器中查看结果(图 46)。 实时重新加载、插件模拟和 Ionic 框架支持使 Visual Studio 拥有市场中最快的开发人员工作流。

Cordova simulate

(图 46)Cordova 模拟

  • 对 iOS 10 和 XCode 8 的支持 - 用于 iOS 开发的 remotebuild 服务器代理的更新现包括 XCode 8 支持。

  • 错误着色 - 诊断生成故障经常需要开发人员通读生成输出,因此我们开始在生成输出窗格中将错误着色,让读取变得更轻松(图 47)。 此外,还添加了标头来描述生成进度中的步骤,帮助开发人员识别生成进度中出现故障的位置。

Pretty printing

(图 47)着色错误

  • 产品内获取 - 除了用于加速 Cordova 应用构建的轻量级安装,现在添加了来自 Visual Studio 内的路径以在开发过程中获取额外的生成块(图 48)。 如果未安装 Android 或 Windows 组件,可通过部署栏获取它们,部署栏将启动 Visual Studio 安装程序,在安装过程中为用户提供指导。

In-product acquisition

(图 48)产品随附

  • 快速、可靠的生成 - 新的 Visual Studio 安装程序,结合经过完全验证的第三方组件工具链的脱机安装,可加快生成速度,且这些生成更易于进行故障排除和修复。
重要事项

适用于 Android 和 Windows 的生成工具和仿真程序现在是可选的。 可通过生成/部署菜单栏动态获取它们。 此版本的 Visual Studio 不支持 Windows Store 8.1 项目。 建议你以 Windows 10 为目标来更新 Cordova 项目。 最低的受支持 Cordova 版本提升至 6.0.0。 面向低于 6.0.0 的 Cordova 版本的项目只有在 config.xml 中升级其项目才能在 Visual Studio 2017 中进行生成和部署。


适用于 Visual Studio 的 Node.js 工具

适用于 Visual Studio 的 Node.js 工具将 Visual Studio 变成功能强大的 Node.js 开发环境。 此版本侧重稳定性、性能和总体产品质量,包括:

  • 优化了与新的 Salsa JavaScript 语言服务之间的集成。
  • 降低了内存和 CPU 使用率,缩短了项目加载时间。
  • Pug 模板文件支持。
  • 更多最新式的项目模板。
  • Mocha 3.x 测试框架支持。
  • 大量 Bug 修复。

感谢你与所有参与者们为此版适用于 Visual Studio 的 Node.js 工具的推出所做出的积极贡献。 有关详细信息,请查看开放源 GitHub 上的 Node.js 工具项目


适用于 Unity 的 Visual Studio 工具

使用 Visual Studio 编写和调试适用于所有平台的 Unity 游戏。 Visual Studio Tools for Unity 3(图 49)现已可通过新的 Visual Studio 2017 安装程序中的“使用 Unity 的游戏开发”工作负载进行安装。 Visual Studio Tools for Unity 3 侧重于改进 Unity 开发人员的代码编辑和调试体验,以及总体产品质量,包括:

  • Unity 消息的 Intellisense 支持。
  • Unity 消息的代码着色。
  • 改进了 Unity 调试器中的表达式计算。
  • 改进了 Unity 消息向导,支持所有可接收消息 Unity 类型。
  • 大量 Bug 修复和优化。

Code completion session for Unity messages

(图 49)Unity 消息的代码完成会话


Redgate

Visual Studio 随附 Redgate 数据工具

为了将 Visual Studio 2017 DevOps 功能扩展到 SQL Server 数据库开发,Redgate 数据工具(包含 Redgate SQL Prompt Core、Redgate SQL 搜索和 Redgate ReadyRoll Core)现可用于数据存储和处理工作负荷。

  • Visual Studio Enterprise 2017 中包含的 Redgate ReadyRoll Core 有助于开发迁移脚本、使用源控件管理数据库更改,并安全地自动部署 SQL Server 数据库更改和应用程序更改。
  • 利用 Visual Studio Enterprise 2017 附带的 Redgate SQL Prompt Core,可在智能代码完成功能的帮助下更快、更准地编写 SQL。 SQL Prompt 可自动完成数据库、系统对象和关键字,并在你键入时提供列建议。 无需记住每个列名或别名,因此代码更简洁,错误更少。
  • Visual Studio 2017 各个版本中包含的 Redgate SQL 搜索可帮助用户在多个数据库之间快速找到 SQL 片段和对象,从而提高工作效率。

NuGet

Visual Studio 2017 包括 NuGet 4.0。 此版本侧重于支持大多数项目类型的包引用、质量改进和性能改进:

  • 在 WPF、WindowsForms 和 UWP 项目中,现可使用包引用对包进行管理。
  • 已改进轻量级解决方案还原的 NuGet 还原支持。 现在无需加载任何项目即可执行还原。
  • 在 .NET Core 和 ASP.NET Core 项目中,现使用包引用管理包。
  • 在 Visual Studio 2017 及更高版本中,计算机范围内的 NuGet.config 现位于 %PROGRAMFILES(X86)%\NuGet\Config\NuGet.config。 今后 nuget.exe v4.0.0 + 也将考虑为计算机范围内的配置使用新位置。 将不再隐式引用程序数据中的 NuGet.config 或考虑将其用于 nuget.config 的层次结构合并。

用于 XAML 应用的工具

XAML 编辑和继续

Visual Studio 中现在允许在运行 WPF 或通用 Windows 应用的同时编辑 XAML。 在 Visual Studio 中调试应用时,可在 XAML 代码编辑器中对标记作出更改,且所做的更改会反应在运行的应用中,而无需重新进行编译。

增强 XAML 编辑器的生产力

  • IntelliSense 筛选 - 键入 XAML 时,完成列表将仅显示匹配的类型,且选中匹配度最高的项。
  • IntelliSense for x:Bind - 绑定到路径和事件时对 x:Bind 启用了 IntelliSense 完成。
  • 命名空间完成 - 如果不存在命名空间引用(图 50),则在键入时不会获得 IntelliSense 支持。 键入完成后会获得灯泡建议支持,可为键入内容生成和插入前缀并在 XAML 文档中添加命名空间定义。

IntelliSense_without namespace

* 对于需要前缀的类型,如果已存在对命名空间的引用,IntelliSense 将自动完成前缀。

(图 50)IntelliSense_without 命名空间

  • 命名空间前缀重命名重构 - 可从上下文菜单或在光标位于前缀上时使用键盘快捷方式 Ctrl+R+R 调用重命名操作(图 51)。 还可在应用更改之前预览更改。

Namespace Prefix Rename

(图 51)命名空间前缀重命名

  • 删除命名空间和对其进行排序 - 现可从上下文菜单或通过键盘快捷方式 Ctrl+R+G 删除不必要的命名空间(图 52)并对其进行排序。 如果 XAML 文档具有不必要的命名空间,还将看到一个可用于删除这些命名空间的灯泡标记。

Lightbulb_remove unnecessary namespace

(图 52)lightbulb_remove 不必要的命名空间

  • 对 XAML 编辑器的 .editorconfig 支持 - 可在 .editorconfig 文件中定义 indent_style、indent_size 和 tab_width 的设置,将用此设置替代“工具”>“选项”中定义的设置。

  • 用于 XAML 编辑器的结构可视化工具 - 结构可视化工具(即缩进参考线)(图 53)现已内置到 Visual Studio 中,无需单独扩展。 此功能提供当前所处理的代码块的上下文,一眼便能看到,无需滚动。

Structure Visualizer for XAML editor

(图 53)用于 XAML 编辑器的结构可视化工具

XAML 性能改进

  • 改进了 XAML 选项卡切换性能:XAML 选项卡切换性能得到显著改进。 在示例客户项目中,我们已看到切换时间缩短了超过 90%。
  • 解决 XAML 编辑器键入延迟问题 - 现在,XAML 键入变得前所未有的快速。 我们在降低 XAML 编辑器键入延迟方面作出了许多努力,现在大多数开发人员会发现 XAML 编辑器和 XAML IntelliSense 响应性更高。 在使用第三方控件或大型控件库的项目中编辑 XAML 文件时,这一点非常明显。

Data Tools 和 SQL Server

SQL Server Data Tools

Visual Studio 2017 包含了 SQL Server Data Tools 的最新更新,该更新支持 Azure SQL 数据库SQL Server 2016 的最新功能。

此版本通过使用 Visual Studio,在所有 SQL Server 支持版本和数据库平台上(本地和云),汇集开发、测试和部署数据库的简便性于一体。 版本还包括了数据库可编程性外围应用增强功能,并改善了 SQL Server Data Tools 中的 SQL 连接体验。现在只需轻松地单击一下,即可自动发现可连接到的 SQL Server 和 Azure SQL 数据库。

此外,Visual Studio 2017 解决了新的 Azure SQL Database 身份验证类型、Azure Active Directory 集成和密码身份验证问题。


开发人员分析工具

Visual Studio 2017 包括开发人员分析工具 v8.6,其中包含以下改进:

  • 现在 CodeLens 可显示将数据发送到 Application Insights 资源的项目中的调试和实时遥测数据。
  • 异常的 CodeLens 链接到应用程序分析,可显示异常对用户的影响。
  • 在使用 Application Insights SDK 的项目中,CodeLens 可显示来自本地调试会话的请求。
  • 现在 Visual Basic 项目可提供请求和异常的 CodeLens。
  • 从 Visual Studio 发布应用后,实时指标现在会显示在消息条通知中。
  • “配置”窗口中现在可显示 Application Insights 定价的信息。
  • “搜索和趋势”工具现在可显示可用性事件。
  • “搜索和诊断”工具中的“事件”现在可基于 SDK 中的自适应采样显示事件发生频率的计数。
  • CodeLens 显示使用 Application Insights SDK 本地调试项目的会话期间所发生的异常。
  • “Application Insights 配置”窗口的新设计。
  • CodeLens 发现的异常现在有一个指向 Application Analytics 的链接,可查看异常已对用户产生的影响。
  • 将 Application Insights 添加到项目时,现在会添加用于收集页面视图遥测的 Application Insights JavaScript SDK。
  • 从 Visual Studio 发布应用时,发布注释现在会发送到 Application Insights 资源中。
  • 现在会对红色和黄色 Application Insights CodeLens 指示器显示滚动条标记。

有关 Application Insights 的详细信息,请参阅 Microsoft Azure 文档


Visual Studio 的 Office 开发工具

此版包含了附带最新功能和更新的 Office 开发人员工具,具体如下:

  • 新增了特定于 Excel、Word、PowerPoint 和 Outlook 的新 Office 外接程序模板。
  • 支持新增的 Office 外接程序功能,如外接程序命令、Fabric UI 和 Office.js 的新版本。
  • 模板中新增了起始代码,用于展示如何开始使用新的 Office 外接程序功能。
  • 支持 SharePoint 解决方案中的 SharePoint 2016 和外接程序模板。

体系结构依赖关系的实时验证

如果在 Visual Studio Enterprise 中设置了依赖关系验证关系图(又称层关系图),则在代码编辑器中键入代码时可实时获得体系结构依赖关系规则的任何违反行为的通知(图 54)。 “错误列表”中显示错误,文本编辑器中的波形曲线显示此违反行为的精确位置。 现在降低了引入非必需依赖关系的可能性。

Live Architecture Dependency validation

(图 54)体系结构依赖关系的实时验证


开发人员命令提示符

重构了 Visual Studio 2017 开发人员命令提示符脚本,支持新的安装体验:

  • 环境变量仅影响已安装的工作负载。
  • Visual Studio 开发人员命令提示符快捷方式应与以前的版本兼容。
  • 现在,你可以通过命令行参数来配置开发人员命令提示符脚本:
    • 在命令提示符处,调用 common7\tools\vsdevcmd.bat -help(从 Visual Studio 安装目录)以获取详细信息。

用于 .NET 的 Azure SDK

现可使用新的 Visual Studio 安装程序安装 Azure SDK for .NET Visual Studio。 如果以前已使用 Web 平台安装程序安装 Azure SDK for .NET,现则可使用新的 Visual Studio 安装程序安装 Azure 工作负荷以获取相同组件。 安装的包与 SDK 2.9.5 版本具有相同的功能级别。 对于此版本和所有未来版本的 Visual Studio,只能通过 Visual Studio 安装程序获得 Azure SDK for .NET。


访问当前发行说明

访问 Visual Studio 2017(版本 15.1)发行说明

The Developer Community Portal请参阅 Visual Studio 2017(15.1 版)中已解决的客户所报问题。

已知问题

查看 Visual Studio 2017 中所有现有已知问题和可用解决方法。