Visual Studio 2017 更新内容大全(上)

我们非常荣幸地宣布 Visual Studio 2017 现已推出! 此次发布提供新的轻量模块式安装体验,可根据自身实际需求进行调整。

使用 Visual Studio 2017 开发适用于 Android、iOS、Windows、Web 和云的应用。 快速编码、轻松调试和诊断、时常测试,并且可以放心地进行发布。 还可通过构建自己的扩展,以便扩展和自定义 Visual Studio。 此新版本发布之后,可使用版本控制、更具敏捷性且可高效协作!

下载:Visual Studio Enterprise 2017

若要了解有关其他相关下载的详细信息,请参阅下载页。 另请参阅Visual Studio 2017 系统要求Visual Studio 2017 平台目标以及兼容性

反馈

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

发布历史记录

2017 年 3 月 7 日

已知问题

请参阅已知问题部分。

若要深入了解此发布版中已解决的问题,请访问开发人员社区门户

发布日期:2017 年 3 月 7 日

摘要

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

新的安装体验- 降低了最小内存需求量以实现更快、更定制化的安装,并且支持脱机安装。

Visual Studio IDE- 大幅改进了 Visual Studio 2017,包括减少启动和解决方案加载时间、改进登录和标识、改进代码导航以及增添打开文件视图和链接的服务,实现了应用和任意本地服务或云端服务之间的连接。

Visual C++- 版本 2015 和 2017 之间没有重大更改。 更佳的 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 使用项目和项模板的方式,提升了模板发现的性能。

增强的工具

.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 开发人员工具 Core Edition- 为了将 DevOps 功能扩展到 SQL 数据库开发,Visual Studio 现在包含 Redgate 开发人员工具 Core Edition,其中包括 Redgate ReadyRoll、SQL 搜索和 SQL Prompt。

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 中的新增功能

安装体验

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

减少 Visual Studio 的最小内存占用量。

安装速度更快、系统影响更小和完全卸载。

方便你更轻松地选择并仅安装所需功能。

首次安装 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 主机,并跟踪未提交和未推送的工作。

登录和标识改进

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

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

起始页

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

从 VSTS 获取远程存储库或使用我们更加醒目的 MRU,以轻松地打开本地项目和解决方案。

起始页 MRU 会显示在其他计算机上克隆的存储库,因此可在当前计算机上轻松克隆这些库。

通过可搜索的模板和最近使用的模板列表,直接从起始页新建项目。 最近使用的模板也会在具有个性化帐户的 Visual Studio 实例间漫游。

通过起始页上的“从 VSTS 签出”选项,快速启动 VSTS 体验的新克隆。

可删除的“入门”部分。

“新闻”部分现可折叠:

更新了新闻源中新添加的项上的徽章。

在新闻源处于折叠状态时,如果出现新项,则对新闻源扩展器设置徽章。

优化了视觉设计,由此解决了反馈的有关屏幕较小时元素截断的问题,同时提升了空间利用率。

下方显示了新的起始页。

改进了代码导航

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

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

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

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

通过 .editorconfig 支持编码约定

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

打开文件夹

“打开文件夹”是使用不含项目和解决方案的基本代码的简便方法。 通过“文件”>“打开”>“文件夹”打开文件夹视图,然后选择要导航的文件夹。

可使用解决方案资源管理器打开和编辑文件。 许多常用语言具有语法突出显示和符号导航(GoTo)支持。 此外,某些语言可直接由文件夹获得高级 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 中全局启用。 若要全局启用,可导航到“工具”>“选项”,选择“项目和解决方案”下的“常规”,或通过使用“快速启动”搜索“轻量级解决方案加载”。 可在解决方案属性窗格中,为单个解决方案开启和关闭该功能。

轻量级解决方案加载最适合包含 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。

项目概述页入门

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

在 ASP.NET 4.x ASP.NET Core 项目中启用。

在 Cordova 项目中启用。

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

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

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

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

产品随附的工具和功能

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

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

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 分发。 只需在项目“属性”页的“代码分析扩展”对话框中启动检查器,即会在运行代码分析时包含扩展。

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] 增添了 、、apply()、make_from_tuple()。

[STL] std::vector 已经过全面检修,以提高正确性和性能。

[STL] 现在 STL 会避免取消引用 null 复杂精致指针。

[STL] 增添了 、、shared_ptr::weak_type 和 。

[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 错误添加了错误筛选和帮助。 单击错误列现在允许进行筛选。 此外,单击特定错误或按 F1 将启动错误消息的联机搜索。

增添了按类型筛选“成员列表”项的功能。

添了新的实验性预测 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 文件提供进一步的配置支持。

CMake 支持:

有关 CMake 支持的概述,请参阅:Visual C++ 团队博客

通过 10 分钟时长的CMake 视频了解 CMake 支持。

有关使用 C++ 进行 Linux 开发的信息,请观看Linux 视频

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#:

类似任务的异步方法返回类型:这可从异步方法中返回任何类似任务的类型。 以前,这些返回类型限制为Task和Task。

值元组引入使用元祖临时对一组类型化的值分组的语言支持。 若要了解详细信息,请查看 GitHub 上的设计说明

嵌套的本地函数对语言进行了扩展,以支持在块范围内声明函数。

模式匹配扩展通过函数式语言带来了代数数据类型和模式匹配的许多优势。

引用返回使函数可以按引用返回值。

对于 Visual Basic:

值元组引入使用元组临时对一组类型化的值分组时的语言支持:Dim point As (x As Integer, y As Integer) = GetOffset()。

ByRef 返回消耗可扩展语言,支持使用具有 ByRef 返回的库中的函数和属性。

二进制文本和数字组分隔符允许二进制数的本机表示形式。 这对位掩码和标志枚举非常方便:&B1001_0011。

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

快速操作和重构

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

使用初始值设定项简化对象初始化:

利用新的 C#7 功能以内联方式移动out变量声明:

利用新的 C#7 功能,使用 null 合并运算符简化 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 检查。

需要大括号。

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

IntelliSense 改进

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

其他编辑器改进

你现在可以通过定位游标中间字符串并按Enter键,将一个长字符串拆分为多个串联字符串。

我们投入了大量工作来提高存在用于计算诊断和 CodeLens 信息的后台操作时的 IDE 响应。

F#

对 F# 4.1 语言功能的支持:

与 C# 7/VB 15 元组互操作的结构元组。

支持使用 C# 7 ref 返回的 Byref 返回。

使用[]属性的结构记录支持(由Will Smith完成)。

带[]属性的结构可区分联合支持。

新的Result<'TSuccess, 'TFailure>类型,带有 FSharp.Core 中的支持函数(由Oskar Gewalli完成)。

fixed关键字,其支持在堆栈上本地固定指针类型。

数值文本中的下划线(由Avi Avni完成)。

调用方信息属性参数(由Lincoln AtkinsonAvi Avni共同完成)。

同一文件中通过namespace rec和module rec的相互引用类型和模块。

模块上与类型共享同一名称的隐式“Module”后缀。

对 F# 编译器和 FSharp.Core 进行了许多改进,大部分都是由 F# 社区完成:

改进了错误消息(由Steffen ForkmannIsaac AbrahamLibo ZengGauthier SegayRick Minerich等完成)。

F# 编译器中的性能改进(由 Microsoft、GustySteffen ForkmannLibo Zeng等完成)。

FSharp.Core 中的性能改进(由 Microsoft、Jack MottSteffen ForkmannLibo ZengPaul WestcottZp BappiVictor Baybekov等完成)。

F# 和 C# 之间的互操作改进(由 Microsoft 和Eirik Tsarpalis完成)。

大幅改进了静态解析的类型参数。

支持生成可移植的 PDB。

基于 Roslyn 工作区的新编辑器具有许多新的 IDE 功能,由优秀的 F# 社区完成:

IntelliSense 筛选器和标志符号改进(由Vasily Kirichenko完成)。

多种 IntelliSense 改进(由Vasily Kirichenko完成)。

对新的“转到”功能的支持(由Vasily Kirichenko完成)。

查找所有引用支持(由Vasily Kirichenko完成)。

重新启用了多个 F# 项目支持(由Ahn Dung Phan完成)。

Roslyn 上的 QuickInfo(输入悬停)支持(由Vasily Kirichenko完成)。

编辑器中的模块和命名空间着色(由Vasily Kirichenko完成)。

重新启用和改进的导航栏支持(由Vasily Kirichenko完成)。

标记的语义突出显示(由Vasily Kirichenko完成)。

对新结构化参考线的支持(由Vasily KirichenkoJared Hester完成)。

重新启用的 F1 帮助服务(由Robert Jeppesen完成)。

QuickInfo 和签名帮助中的着色(由Vladimir Matveev完成)。

代码缩进改进(由Ahn Dung Phan完成)。

IDE 中的错误报告改进(由Ahn Dung Phan完成)。

内联重命名(临时禁用)(由Vasily Kirichenko完成)。

“转到定义”的改进(由Vasily KirichenkoAhn Dung Phan完成)。

断点解析改进(由Vasily KirichenkoSteffen Forkmann完成)。

关于EditorBrowsable(EditorBrowsableState.Never)属性(由Vasily Kirichenko完成)。

XML 文档生成(由Ahn Dung Phan完成)。

删除尾随分号分析器和 codefix(由Vasily Kirichenko完成)。

用于记录标签和联合大小写分析器以及 codefix 的大写标识符(由Steffen Forkmann完成)。

实现接口分析器和 Codefix(由Ahn Dung Phan完成)。

未知标识符 Codefix 的替换(由Steffen Forkmann完成)。

使用下划线分析器和 Codefix 替换未使用的值或为其添加前缀(由Vasily Kirichenko完成)。

添加new关键字分析器和 Codefix(由Vasily Kirichenko完成)。

添加open语句分析器和 Codefix(由Vasily Kirichenko完成)。

简化名称分析器和 Codefix(由Vasily Kirichenko完成)。

灰显未使用的值(由Vasily Kirichenko完成)。

此外,社区还提供了以下内容:

解决方案加载性能改进(由Saul Rennison完成)。

基础结构改进(由Jack PappasEnrico SadaSaul RennisonAlfonso Garcia-CaroZip Bappi完成)。

着色 FSI(由Saul Rennison完成)。

F# 项目系统修复(由Saul Rennison完成)。

.NET CLI 中的 F#的支持也是由Enrico Sada构建的。

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

JavaScript 和 TypeScript

TypeScript 2.1

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

JavaScript 语言服务

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容