Visual Studio Icon Visual Studio 2017 版本 15.0 发行说明

注释

Visual Studio 2017 支持的版本为版本 15.9。

重要

这不是 Visual Studio 的最新版本。 若要下载最新版本,请访问 https://visualstudio.microsoft.com/downloads/ 并查看 Visual Studio 2022 发行说明

发布历史记录


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

发布日期:2019 年 12 月 11 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2019-1349 Git for Visual Studio 远程执行漏洞,因为对子模块名称的限制过于宽松

当 Git 遇到同级子模块目录子模块名称冲突时,存在远程代码执行漏洞。 成功利用此漏洞的攻击者可以在目标计算机上远程执行代码。 安全更新通过采用新版本的 Git for Windows 来解决漏洞,该版本要求子模块克隆的目录为空。

CVE-2019-1350 Git for Visual Studio 中由于命令行参数引用错误导致的远程执行漏洞

Git 使用递归克隆过程中的特定引用以及 SSH URL 解释命令行参数时,存在远程代码漏洞。 成功利用此漏洞的攻击者可以在目标计算机上远程执行代码。 安全更新通过采用 Windows 的新版本 Git 来解决漏洞,此版本修复了这一问题。

CVE-2019-1351 Visual Studio 中的 Git 存在任意文件覆盖漏洞,原因是在克隆时使用了非字母驱动器名称

当非字母开头的驱动器名称绕过 git clone中的安全检查时,Git 中存在任意文件覆盖漏洞。 成功利用此漏洞的攻击者可以写入目标计算机上的任意文件。 安全更新通过采用 Windows 的新版本 Git 来解决漏洞,此版本修复了这一问题。

CVE-2019-1352 由于未感知 NTFS 备用数据流导致 Visual Studio 远程执行漏洞的 Git

通过 NTFS 备用数据流克隆和写入 .git/ 目录时,Git 中存在远程代码执行漏洞。 成功利用此漏洞的攻击者可以在目标计算机上远程执行代码。 安全更新通过采用新版本的 Git for Windows 来解决漏洞,该版本已注意到 NTFS 备用数据流。

CVE-2019-1354 Git for Visual Studio 存在任意文件覆盖漏洞,原因是不拒绝写出包含反斜杠的已跟踪文件

带有反斜杠和恶意符号链接的树条目突破工作树时,Git 中存在任意文件覆盖漏洞。 成功利用此漏洞的攻击者可以写入目标计算机上的任意文件。 安全更新通过采用不允许反斜杠这种使用的新版本的 Git for Windows 来解决漏洞。

CVE-2019-1387 由于在递归克隆中对子模块名称的验证过于宽松,导致 Git for Visual Studio 出现远程执行漏洞

当对子模块进行递归克隆时,Git 中存在远程代码执行漏洞。 成功利用此漏洞的攻击者可以在目标计算机上远程执行代码。 该安全更新通过使用新版本的 Git for Windows 来解决该漏洞,该版本加强了对子模块名称的验证。


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

发布时间:2019 年 9 月 10 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2019-1232 诊断中心标准收集器服务特权提升漏洞

当诊断中心标准收集器服务错误地模拟特定文件操作时,会出现权限提升漏洞。 成功利用此漏洞的攻击者可能会获得提升的权限。 对易受攻击的系统拥有非特权访问权限的攻击者可利用此漏洞。 安全更新通过确保诊断中心标准收集器服务正确模拟文件操作来解决漏洞。


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

发布时间:2019 年 8 月 13 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2019-1211 Git for Visual Studio 特权提升漏洞

当 Git for Visual Studio 错误地分析配置文件时,其中存在特权提升漏洞。 成功利用漏洞的攻击者可以在另一个本地用户的上下文中执行代码。 若要利用漏洞,经过身份验证的攻击者需要在完全安装应用程序之前修改系统上的 Git 配置文件。 然后,攻击者需要说服系统上的其他用户执行特定的 Git 命令。 更新通过更改编辑配置文件所需的权限来解决该问题。


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

发布时间:2019 年 7 月 9 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2019-1113 WorkflowDesigner XOML 反序列化允许代码执行

引用某些类型的 XOML 文件可能会导致在 Visual Studio 中打开 XOML 文件时执行随机代码。 现在,允许在 XOML 文件中使用哪些类型存在限制。 如果打开包含其中一个新未授权类型的 XOML 文件,则会显示一条消息,说明该类型是未经授权的。

有关详细信息,请参阅 XOML 文章。


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

发布时间:2019 年 6 月 11 日

此版本中已修复的问题


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

发布日期:2019 年 5 月 14 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2019-0727 诊断中心标准收集器服务特权提升漏洞

当诊断中心标准收集器服务不正确地执行某些文件操作时,存在特权提升漏洞。 成功利用此漏洞的攻击者可以删除任意位置的文件。 若要利用此漏洞,攻击者需要对易受攻击的系统进行无特权访问。 安全更新通过保护诊断中心标准收集器执行文件操作的位置来解决漏洞。


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

发布日期:2019 年 3 月 12 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2019-9197 Unity 编辑器远程代码执行漏洞

Unity 编辑器中存在远程代码执行漏洞,该编辑器是 Visual Studio 提供安装的一个第三方软件包,作为 Unity 工作负载中用于游戏开发的一部分。 如果已安装 Visual Studio 中的 Unity,请确保将所使用的 Unity 版本更新为解决 CVE 中所述漏洞的版本。 Visual Studio 安装程序已更新,以提供安装解决漏洞的 Unity 编辑器版本。


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

发布日期:2019 年 2 月 12 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2019-0613 WorkflowDesigner XOML 反序列化允许代码执行

引用某些类型的 XOML 文件可能会导致在 Visual Studio 中打开 XOML 文件时执行随机代码。 现在,允许在 XOML 文件中使用哪些类型存在限制。 如果打开包含其中一个新未授权类型的 XOML 文件,则会显示一条消息,说明该类型是未经授权的。

有关详细信息,请参阅 https://support.microsoft.com/help/4512190/remote-code-execution-vulnerability-if-types-are-specified-in-xoml

CVE-2019-0657 .NET Framework 和 Visual Studio 欺骗漏洞

.NET Core 更新现已发布,并包含在此 Visual Studio 更新中。 此版本解决了安全性和其他重要问题。 有关详细信息,请参阅 .NET Core 发行说明。


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

发布日期:2018 年 12 月 11 日

此版本中已修复的问题

  • 在团队资源管理器中克隆或发布时,在其项目名称或存储库名称中有空格的 Azure DevOps 用户会遇到错误。

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-8599 诊断中心标准采集器服务权限提升漏洞

如果诊断中心标准收集器服务不正确地处理特定文件操作,就会存在特权提升漏洞。 成功利用此漏洞的攻击者可能会获得提升的权限。 若要利用此漏洞,攻击者需要对易受攻击的系统进行无特权访问。 安全更新通过确保诊断中心标准收集器服务正确模拟文件操作来解决漏洞。


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

发布日期:2018 年 10 月 10 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-8292 .NET Core 信息泄露漏洞

在遇到 HTTP 重定向的出站请求中无意中公开 HTTP 身份验证信息时,.NET Core 中存在一个安全功能绕过漏洞。 成功利用此漏洞的攻击者可以使用这些信息进一步入侵 Web 应用程序。 安全更新通过更正 .NET Core 应用程序处理 HTTP 重定向的方式来解决漏洞。


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

发布日期:2018 年 8 月 28 日

此版本中已修复的问题


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

发布日期:2018 年 8 月 14 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-0952 诊断中心标准收集器特权提升漏洞

Visual Studio 服务中存在特权提升漏洞,这可能会导致非管理员用户在写入文件时的系统特权。 利用此功能的攻击者可以在仅具有用户级别访问权限的同时将文件写入系统。 此安全更新通过模拟当前用户来验证对文件位置的访问权限来解决此问题。


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

发布日期:2018 年 8 月 2 日

此版本中的更新摘要

  • 此版本现已安装 Java™ 开发工具包 8 更新 181(JDK 版本 8u181)。

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-8356 .NET Core 安全功能绕过漏洞

Microsoft 意识到 .NET Core 未正确验证证书时存在的安全功能让漏洞。 成功利用此漏洞的攻击者可能在质询时提供过期的证书。 该更新通过更正 .NET Core 处理验证的方式来解决此漏洞。


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

发布日期:2018 年 7 月 10 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-8172 Visual Studio 远程代码执行漏洞

远程代码执行漏洞,通过打开特殊设计的项目或资源文件,导致用户计算机被利用。 安全更新通过更正 Visual Studio 如何检查文件的源标记来解决漏洞。

CVE-2018-8260 .NET Framework 远程代码执行漏洞

.NET 软件中存在远程执行代码漏洞,攻击者可利用此漏洞在当前用户的上下文中运行任意代码,以此利用用户的计算机。 安全更新通过更正 .NET 如何检查文件的源标记来解决漏洞。

CVE-2018-8232 .NET Microsoft宏汇编程序篡改漏洞

与Microsoft宏汇编程序错误验证代码相关的篡改漏洞。 安全更新通过确保Microsoft宏汇编程序正确验证代码逻辑来解决漏洞。

CVE-2018-8171 ASP.NET 核心安全功能绕过漏洞

如果未验证错误登录尝试次数,可能会导致攻击者尝试无限身份验证尝试,则存在 ASP.NET 核心安全功能绕过漏洞。 更新通过验证错误的登录尝试次数来解决漏洞。


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

发布日期:2018 年 5 月 31 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-11235 Microsoft Git 安全漏洞安全公告

我们修复了 Git 社区披露的 Git 中的安全漏洞。 当用户克隆恶意存储库时,该漏洞可能会导致任意代码执行。


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

发布日期:2018 年 4 月 26 日

此版本中的更新摘要

  • 已提升至 Java™ 开发工具包 8 更新 172(JDK 版本 8u172)。

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

发布日期:2018 年 4 月 10 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-1037 Microsoft Visual Studio 信息泄露漏洞Microsoft安全公告

如果 Visual Studio 在编译程序数据库 (PDB) 文件时以不当方式公开未初始化内存的有限内容,就会出现信息泄漏漏洞。 如果攻击者已利用此信息泄漏漏洞,可以通过用于编译 PDB 文件的 Visual Studio 实例来查看未初始化内存。

攻击者必须获取对使用 Visual Studio 易受攻击版本创建的受影响 PDB 文件的访问权限,才能利用此漏洞。 攻击者无法强迫开发人员生成此信息泄漏。

安全更新程序通过更正 PDB 文件在项目编译时的生成方式来修复此漏洞。


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

发布日期:2018 年 3 月 13 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-0875 Microsoft .NET Core 的安全公告

Microsoft 发现 .NET Core 公共版本存在安全漏洞,其中恶意文件或 Web 请求可能导致拒绝服务 (DoS) 攻击。

  • 建议系统管理员将 .NET Core 运行时更新到 1.0.10、1.1.7 或 2.0.6 版本。 建议开发人员将 .NET Core SDK 更新到 1.1.8 或 2.1.101。

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

发布日期:2018 年 2 月 21 日

此版本中的更新摘要

团队资源管理器支持 TLSv1.2。 我们已更新随附 Visual Studio 提供的 Git 和 Git 凭据管理器组件。 另外还更新了可选的适用于 Windows 的 Git 组件。 此更新允许 Git 连接到不再支持 TLSv1 和 TLSv1.1 而支持 TLSv1.2 的服务。


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

发布日期:2018 年 2 月 2 日

此版本中的更新摘要

  • MSVC 编译器已更新,支持 /Qspectre 开关,当编译器检测到 Spectre 变体 1 的实例时,该开关将自动插入猜测屏障。 有关 /Qspectre 的详细信息,请参阅 Visual C++ 团队博客
  • JDK 已升级到 8u161 以修复下载错误。

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

发布日期:2018 年 1 月 9 日

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-0786 X509 证书验证中的安全功能绕过

Microsoft发布此安全公告,提供有关 .NET Core 1.0 和 1.1 和 2.0 公共版本中漏洞的信息。 此建议还指导开发者如何正确地更新应用程序。 此安全建议适用于 UWP 的 .NET Native。

Microsoft 可察觉公共版 .NET Core 中的安全漏洞,利用此漏洞,攻击者提交特定用途标记为无效的证书,但组件会将此证书用于该用途。 此操作会忽略增强型密钥使用标记。

安全更新通过确保 .NET Core 组件完全验证证书,解决了此漏洞。 建议系统管理员将 .NET Core 运行时更新到 1.0.9、1.1.6 或 2.0.5 版本。 建议开发人员将 .NET Core SDK 更新到 2.1.4 或 1.1.7 版本。

CVE-2018-0764 分析 XML 文档时拒绝服务

Microsoft发布此安全公告,提供有关 .NET Core 1.0 和 1.1 和 2.0 公共版本中漏洞的信息。 此建议还指导开发者如何正确地更新应用程序。

Microsoft 可察觉由于 XML 文档处理不当,在所有公共版 .NET Core 中产生的拒绝服务漏洞。 如果攻击者成功利用此漏洞,可能会导致对 .NET 应用程序拒绝服务。 远程未经过身份验证的攻击者可以通过向 .NET Core 应用程序发布特制请求利用此漏洞。

更新通过更正 .NET Core 对 XML 文档处理的操作方式解决了此漏洞。 建议系统管理员将 .NET Core 运行时更新到 1.0.9、1.1.6 或 2.0.5 版本。 建议开发人员将 .NET Core SDK 更新到 2.1.4 或 1.1.7 版本。


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

发布日期:2017 年 12 月 6 日

Visual Studio 2017 版本 15.0 安全公告通知

Microsoft发布了 ASP.NET Core 的安全公告。 可以在 ASP.NET 核心 存储库中的相应公告中找到详细信息。 请注意以下信息:

CVE-2017-8700 CORS 旁路可以启用信息泄露

ASP.NET Core 1.0 和 1.1 中存在安全漏洞,可以绕过跨域资源共享(CORS),从而导致信息泄露。 使用 ASP.NET Core 1.0 和 ASP.NET Core 1.1 创建的新项目现在将使用包含上述安全更新的包版本。 对于现有项目,用户可以使用“管理 NuGet 程序包”对话框将包更新到较新版本。


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

发布日期:2017 年 11 月 14 日

Visual Studio 2017 版本 15.0 安全公告通知

Microsoft 已发布面向 .NET Core 和 ASP.NET Core 的安全建议。 有关详细信息,请参阅 .NET CoreASP.NET Core 存储库中的对应公告。 请注意以下信息:

CVE-2017-8585 格式不正确的证书可能会导致拒绝服务

.NET Core 1.0、1.1 和 2.0 中存在安全漏洞,其中格式不正确的证书或其他 ASN.1 格式数据可能导致 Linux 和 macOS 上的无限循环拒绝服务。 建议系统管理员将 .NET Core 运行时更新到 1.0.8、1.1.5 或 2.0.1 版本。 建议开发人员将 .NET Core SDK 更新到 2.0.3 或 1.1.5 版本。

CVE-2017-8700 CORS 旁路可以启用信息泄露

ASP.NET Core 1.0 和 1.1 中存在安全漏洞,可以绕过跨域资源共享(CORS),从而导致信息泄露。

CVE-2017-11879 打开重定向可能会导致权限提升

ASP.NET Core 2.0 中存在一个安全漏洞,其中存在开放重定向,从而导致权限提升。

CVE-2017-11770 拒绝服务漏洞

当应用程序通过 Windows Http.Sys 托管时,ASP.NET Core 1.0、1.1 和 2.0 中存在安全漏洞,其中格式不正确的请求可能导致拒绝服务。 使用 ASP.NET Core 1.0 和 ASP.NET Core 1.1 创建的新项目现在将使用包含上述安全更新的包版本。 对于现有项目,用户可以使用“管理 NuGet 程序包”对话框将包更新到较新版本。


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

发布日期:2017 年 9 月 18 日

此版本中已修复的问题


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

发布日期:2017 年 5 月 23 日

此版本中已修复的问题

脱机安装方案不再需要 Internet 访问。


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

发布日期:2017 年 3 月 31 日

此版本中的更新摘要

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


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

发布日期:2017 年 3 月 28 日

此版本中已修复的问题

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


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

发布日期:2017 年 3 月 14 日

此版本中已修复的问题

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


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

发布日期:2017 年 3 月 7 日

此版本中的更新摘要

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

  • 新的安装体验减少了最小占用空间,可以更快、更自定义的安装,以及对脱机安装的支持。
  • 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 工具的多项改进。

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

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

协作:使用版本控制、敏捷和高效协作

  • 团队资源管理器中的新 Git 功能和更新的连接体验,以在 Visual Studio 2017 中使用 Git 执行更多作,并轻松找到要连接到的项目和存储库。
  • 增强的 Visual Studio 反馈工作流具有更具协作性的报表 A 问题。 搜索、关注和投票以获取所有反馈的最新更新。

扩展:通过生成自己的扩展来自定义你的喜欢

  • Visual Studio 扩展:通过生成自己的扩展,将 Visual Studio 自定义为喜欢。
  • 项目和项模板的可发现性:Visual Studio 如何使用项目和项模板来提高模板发现性能的中断性变更。

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

  • .NET Core 和 ASP.NET Core:它包含基于 MSBuild 的新 .NET Core 工具的 1.0 最终版本。 使用 Visual Studio 2017,可以创建使用新 csproj 格式的 .NET Standard 库、.NET Core 应用/库和 ASP.NET Web 项目。
  • 通用 Windows 应用开发工具:更新包括新版本的 .NET 本机工具链、.NET Core NuGet 框架、新的生产力工具和对 Windows 10“创意者更新”SDK 的支持。
  • Xamarin:Xamarin 4.3 增加了对 tvOS 的支持,同时改进了 iOS 资产目录支持和 XML 编辑体验。
  • Visual Studio Tools for Apache Cordova:基于浏览器的新模拟器使你可以快速编码并立即查看结果。
  • Node.js Visual Studio 工具:更新侧重于稳定性、性能和整体产品质量。
  • Visual Studio Tools for Unity:Visual Studio Tools for Unity 3 现已从新的 Visual Studio 安装程序使用“使用 Unity 进行游戏开发”工作负载。
  • Redgate Data Tools:为了将 DevOps 功能扩展到 SQL 数据库开发,Visual Studio 现在包括 Redgate Data Tools,其中包括 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 安装程序获取。

15.0 中的新增功能的详细信息(26228.04)

此发布图标 中的新增功能Visual Studio 2017 版本 15.0 (26228.04) 详细信息

发布日期:2017 年 3 月 7 日

安装体验

我们很高兴推出我们的新安装程序,从头到下设计:

  • 减少 Visual Studio 的最小占用空间。
  • 安装速度更快,系统影响较小,完全卸载。
  • 让你更轻松地选择和安装所需的功能。

首次安装 Visual Studio 2017 时,你将看到新体验(图 1):

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

最小的安装只是几百兆字节,但仍包含对 20 多种语言(包括源代码控制)的基本代码编辑支持。 大多数用户都希望安装更多内容。 可以添加一个或多个表示常见框架、语言和平台的“工作负载”,涵盖从 .NET 桌面开发到使用 Unity 进行游戏开发的所有内容。

如何更新 Visual Studio

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

有关新安装程序的反馈

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

为脱机安装和新的 Command-Line 安装支持创建布局

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

安装 Nickname

Visual Studio Enterprise 和社区(其他产品)现在可以在同一台计算机上并行安装。 若要简化这些安装,可以指定短名称或“昵称”。 例如,如果要安装 Visual Studio Enterprise,然后安装 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 扩展。
  • 重新加载所有项目已替换为重载解决方案,以支持在将 Visual Studio 外部的分支切换为更好的性能。 使用 Git 命令行切换分支时,请在分支切换后选择“重载解决方案”,以实现最大性能改进。
  • .NET Core 和 ASP.NET Core 项目的文件通配功能已得到增强。 有关更多详细信息,请参阅 项目文件检查
  • 现在,克隆后,你会自动访问存储库的文件夹视图。 可以使用解决方案资源管理器中的新解决方案选择列表查看文件或打开解决方案。
  • 正在引入一个新的外部服务主机,用于替换 VSHub。 此新服务主机是一个外部进程,将在任务管理器中显示为 ServiceHub.Host.CLR.*.exe,以及 ServiceHub.Host.Node.x86.exe。 此主机最终将消除 VSHub 引入的 localhost http 流量,这应缓解 Fiddler 用户报告的噪音。
  • 预发行许可证过期消息更清楚地传达当前许可证状态。
  • 屏幕阅读器现在可以访问“帐户设置”对话框。
  • 现在可通过从 Visual Studio 安装程序安装 Help Viewer 组件来获取脱机帮助。
  • 现在,可以使用“语言包”选项卡上的 Visual Studio 安装程序随时添加和删除多个用户界面语言。可以在使用工具 > 选项 > 国际设置安装的用户界面语言中选择当前用户界面语言。
  • 通过版本控制状态栏,可以更轻松地将本地存储库发布到 SCC 主机,并跟踪未提交的(图 2)和未推送的工作(图 3)。
版本控制 - 未发布的提交示例
(图 2)版本控制 - 未发布的提交示例
版本控制 - 没有挂起的更改示例
(图 3)版本控制 - 没有挂起的更改示例

登录和标识改进

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

除了对 Visual Studio 的改进之外,我们在服务端完成了一些改进的部署,使用户能够安全地保持登录状态,并每隔 12 小时消除强制登录。 这解决了最常报告的登录问题。 详细了解更少的 Visual Studio 提示

起始页

重新设计的起始页具有新的“打开”和“创建”设施:

  • 从 VSTS 获取远程存储库,或使用更突出的 MRU 轻松打开本地项目和解决方案。
  • 起始页 MRU 显示已在其他计算机上克隆的存储库,以便你可以轻松地在当前计算机上克隆它们。
  • 使用可搜索模板和最近使用的模板列表直接从起始页创建新项目。 最近使用的模板还将使用个性化帐户在 Visual Studio 实例之间漫游。
  • 通过起始页上的“从 VSTS 签出”选项快速启动 VSTS 体验中的新克隆。
  • 一个不允许的“入门”部分。
  • “新闻”部分现在可折叠:
    • 更新了“新闻源”中新添加的项目的锁屏提醒。
    • 如果新闻源折叠时显示新项目,则新闻源扩展器上的锁屏提醒。
  • 优化视觉设计,以解决有关缩小屏幕上截断元素的反馈以及空白的利用率。

新的起始页如下所示(图 4):

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

改进了代码导航

我们对 Visual Studio 2017 中的代码导航功能进行了重大改进:

  • 转到“全部”(Ctrl+Ctrl+ T)可让你快速查找并转到代码中的文件、类型、方法和其他元素。 它允许你查找任何类型的项,即使在大型代码库中也是如此。 更重要的是,如果你知道你之后的项类型,你可以轻松筛选。 在 C#、Visual Basic 和 F# 中,我们还添加了“模糊”匹配,这样,如果错过了类型名称,仍将获得结果。 我们还实现了“去线”(Ctrl + G)体验的现代化。 可以在“编辑”菜单 (图 5)(图 6)顶部找到“转到”系列命令。
转到筛选的结果
(图 5)转到筛选的结果
转到行
(图 6)转到行
  • 查找所有引用(Shift+F12)已彻底改革(目前适用于 C#、Visual Basic、F# 和 C++),提供高级分组、筛选、排序、搜索引用结果以及结果着色(对于 C# 和 VB),以便你可以清楚地了解引用并放心地访问所需的代码行。 将鼠标悬停在引用项上时,工具提示会显示在源代码中引用的上下文(适用于 C# 和 VB)。 通过切换工具栏中的“保留结果”按钮,下一次调用“查找所有引用”将在新窗口中填充引用结果。 这样,就可以将当前结果保留在现有窗口中(图 7)。
查找所有引用
(图 7)查找所有引用
  • 结构参考线现在在编辑器中绘制,以便你可以轻松地可视化正在使用的代码的结构。 鼠标悬停时,将显示一个工具提示 (图 8), 其中包含相对于其上级块的当前代码块的上下文。 结构参考线目前支持 C#、Visual Basic、F# 和 XAML 文件,以及通过 TextMate 语法支持的任何文件。 通过在>常规”类别下取消选中“>”复选框,可以在“工具选项”对话框中禁用此功能。
结构参考线
(图 8)结构参考线

通过 EditorConfig 进行编码约定支持

Visual Studio 编辑器现在支持 EditorConfig,这样开发人员就可以在不同的编辑器和 IDE 之间定义和维护一致的编码样式约定。 有关如何使用 .editorconfig 文件管理 .NET 代码样式的信息,请参阅 文档 以了解更多详细信息和 .NET 文档

打开文件夹

Open Folder 是一种方便的方法,可用于不使用项目和解决方案的代码库。 可以通过单击“文件>打开文件夹”,然后选择要导航的文件夹,从菜单栏中查看“打开>文件夹”功能。 可以使用解决方案资源管理器打开和编辑文件(图 9)。 许多常用语言具有语法突出显示和支持符号导航(GoTo)。

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), 或通过快速启动搜索“轻型解决方案加载”。 可以在“解决方案属性”窗格中为单个解决方案打开和关闭该功能。

新的轻型解决方案加载功能 Visual Studio IDE
(图 10)新的轻型解决方案加载功能 Visual Studio IDE

轻型解决方案加载最适合包含 C# 或混合使用 C# 和C++项目的大型解决方案。 如果我们检测到你正在使用大型解决方案,系统可能会提示你启用该功能。

完全解决方案生成的性能已大幅提高,现在与传统的解决方案负载相当。

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

根据我们在 Visual Studio 2015 更新中添加的支持,Visual Studio 2017 现在支持语法着色和自动完成语言范围增加。 此外,其中一些语言还支持通过“导航到”(Ctrl+)和/或代码片段进行导航。

下面指出的语言的文件支持新的 Visual Studio Core 编辑器中的这些功能,即使尚未安装任何工作负载来显式支持相关语言。 如果安装了提供语言支持的工作负载(例如 .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 项目中启用(图 11)。

(图 11)项目概述
(图 11)项目概述

使用连接服务连接到服务

在以前的版本中,此功能名为“服务功能”。 我们已将名称更改为 Connected Services。

Connected Services 是 Visual Studio 2017 的新式“添加连接服务”或“添加服务引用”功能。 通过连接服务功能,可以更轻松地将应用连接到服务。 Web 和移动项目类型的解决方案资源管理器中提供了名为“连接服务”的新节点。 双击此节点将在 Visual Studio 中打开新的完整页面选项卡,可在其中发现可连接到的常用Microsoft服务。

在“连接服务”页上选择服务 (图 12) 将调用配置项目的 Connected Services 向导,并下载必要的 NuGet 包,以便快速轻松地针对服务开始编码。

连接服务
(图 12)连接服务

In-Product 获取工具和功能

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

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

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

产品内快速启动对话
(图 14)产品内快速启动对话

视觉对象C++

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

C++代码分析

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

CppCoreCheck 属性页
(图 15)CppCoreCheck 属性页

C++ 编译器

我们更新了C++编译器和标准库,增强了对 C++11 和 C++14 功能的支持,并初步支持预计C++17 标准中的某些功能。 随着对聚合的通用 constexpr 和 NSDMI 的支持,编译器为在 C++14 Standard 中添加的功能完成。 请注意,编译器仍缺少 C++11 和 C++98 标准中的一些功能。 Visual Studio 2017 允许将 /sdl 与 /await 配合使用。 我们删除了 Coroutines 的 /rtc 限制。

此版本在优化和代码生成方面进行了多项改进。 显著改进包括:

  • 改进了循环的代码生成:支持自动矢量化除数整数,更好地识别 memset 模式。
  • 改进了代码安全性:改进了缓冲区溢出编译器诊断的排放,/guard:cf 现在保护生成跳转表的 switch 语句。
  • 改进了 /debug:fastlink 选项,以比 Visual Studio 2015 中的大型组件提供 30% 更快的链接时间。
  • 使用共同例程时,实验关键字“yield”(在 /await 开关下可用)已删除。 应更新代码以改用“co_yield”。 有关详细信息,请参阅 Visual C++ Team 博客

C++ 库

  • [STL]basic_string的性能改进。
  • [STL]添加了 <任何>、 <string_view>、apply()、make_from_tuple()。
  • [STL] std::vector 已针对正确性和性能进行了彻底改革。
  • [STL]STL 现在可避免取消引用 null 花哨指针。
  • [STL]添加了 <可选>、 <变体>、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++ Team 博客
  • [ATL]然而,另一组名称查找一致性修复。
  • [ATL]现有的移动构造函数和移动赋值运算符现在被正确标记为非引发。
  • [ATL]取消取消对 atlstr.h 中本地静态的线程安全初始化的有效警告 C4640。
  • [ATL][使用 ATL AND 生成 DLL] 时,XP 工具集中会自动关闭本地静态的线程安全初始化。 情况不再如此。 如果需要线程安全初始化,可以在 Project 设置中添加 /Zc:threadSafeInit- 。
  • [AMP]已审核的库和固定拼写错误。
  • [VCRuntime]控制流防护符号的新标头“cfguard.h”。

C++ 集成开发环境 (IDE)

现针对 C++ 本机项目和 C++ /CLI 项目有了更佳的配置更改性能,后者的性能增加更为明显。 首次激活解决方案配置时,它现在会更快,并且此解决方案配置的所有后续激活几乎都是即时的。

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

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

其他更新包括:

  • 我们在错误列表中添加了错误筛选和 IntelliSense 错误的帮助(图 16)。 单击错误列现在允许筛选(图 17)。 此外,单击特定错误或按 F1 将启动对错误消息的联机搜索。
错误列表
(图 16)错误列表
筛选的错误列表
(图 17)筛选的错误列表
  • 添加了按类型筛选成员列表项的功能(图 18)。
已筛选成员列表
(图 18)已筛选成员列表
  • 添加了一项新的实验性预测 IntelliSense 功能,该功能提供上下文感知筛选成员列表中显示的内容。

  • 新的“查找所有引用”UI 包含有关在C++代码的结果中读取变量还是写入变量的信息。

  • 点到箭头 IntelliSense 功能已从实验移动到高级功能,现在默认启用。 编辑器功能“扩展范围”和“扩展优先级”也已从实验性移动到“高级”。

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

  • 我们启用了C++项目“更快的项目加载”的新实验功能。 下次打开C++项目时,它将加载得更快,之后加载速度会更快!

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

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

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

CMake 打开文件夹
(图 19)CMake 打开文件夹

C++安装工作负载

  • 使用 C++ 进行 Windows 桌面开发:

    • 现提供原始 C++ 工作流的更细化的安装体验。 我们添加了可选择的组件,使你能够仅安装所需的工具。 请注意,安装程序 UI 中列出的组件的指示安装大小不准确,低估了总大小。

    • 若要在 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<T>Task
  • 元组 引入了使用元组临时分组一组类型化值的语言支持。 若要了解详细信息,请查看 GitHub 上的 设计说明
  • 本地函数 扩展了语言,以支持在块范围内声明函数。
  • 匹配扩展 可实现代数数据类型和功能语言模式匹配的许多好处。
  • Ref 返回 可让函数按引用返回值。

对于 Visual Basic:

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

有关详细信息,请遵循 CSharpLang GitHubVBLang GitHub 上的语言设计,详细了解这些扩展和其他建议的语言扩展。

快速作和重构

Visual Studio 提供了大量重构来帮助提高工作效率,并使代码更具可读性。 下面是几个:

  • 使用初始值设定项简化对象初始化(图 20)。
使用对象初始值设定项
(图 20)使用对象初始值设定项
  • 内联移动out变量声明,利用新的 C#7 功能(图 21)。
移出变量内联
(图 21)移出变量内联
  • 使用 null 合并运算符简化 null 检查和引发表达式,利用新的 C#7 功能(图 22)。
将 throw 表达式与 null 合并运算符配合使用
(图 22)将 throw 表达式与 null 合并运算符配合使用
  • 将类型移动到匹配文件:从一个文件中提取一个类型,并将其放在另一个具有匹配名称的文件中,单击一下 Ctrl+
  • 同步文件和类型名称:如果文件和类型名称不同步,则可以使用 Ctrl+
  • 转换为 String.Format 字符串内插:使用此快速作利用 C# 6 语言功能
  • 将缺失事例添加到 C# 开关或 Visual Basic Select。
  • 将属性转换为方法,反之亦然。
  • 添加包参考:用于自动检索和安装 NuGet 包(并为无法识别的类型添加 using/Import)。 若要启用此功能,请转到工具>选项文本编辑器 > [C# / Basic] > 高级>建议对引用程序集中的类型使用/建议对 NuGet 包>中的类型使用。
  • 在适用的情况下同步异步方法。
  • 支持拼写错误的类型的“模糊”匹配。
编码约定配置和执行

在 Visual Studio 对 EditorConfig 的支持的基础上,我们与社区合作,将 .NET 代码样式设置添加到文件格式。 这意味着你可以配置团队的代码样式约定,将其签入源代码管理,并在开发人员键入时在编辑器中实时显示冲突。 可以在 Roslyn 存储库的 .editorconfig文档中查看所有代码样式选项。 可以在工具>选项文本编辑器 > [C#/Basic] > 代码样式中继续配置计算机特定的代码样式设置,并且当 EditorConfig 存在且冲突时将>重写这些规则。

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

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

注意:这些代码样式规则中的几个默认配置为编辑器中的建议(图 23)。

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

IntelliSense 改进

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

IntelliSense 完成筛选
(图 24)IntelliSense 完成筛选

其他编辑器改进

  • 现在可以将一个长字符串拆分为多个串联字符串,方法是将光标置于中间字符串并按 Enter
  • 在计算诊断和 CodeLens 信息的后台作的情况下,我们做了大量工作来提高 IDE 的响应能力。

F#

支持 F# 4.1 语言功能

  • 与 C# 7/VB 15 元组互作的结构元组。
  • Byref 返回支持使用 C# 7 ref 返回。
  • 结构记录支持特性 [<Struct>] (由 Will Smith 提供)。
  • 具有属性的结构歧视联合支持 [<Struct>]
  • Result<'TSuccess, 'TFailure> 类型,在 FSharp.Core 中支持函数(由 Oskar Gewalli 提供)。
  • 关键字 fixed 支持在堆栈上固定指针类型本地。
  • 数字文本(由 Avi Avni)中的下划线。
  • 调用方信息属性参数(由 林肯·阿特金森阿维·阿夫尼)。
  • 同一文件中的相互引用类型和模块通过 namespace recmodule rec
  • 与类型共享同名的模块上的隐式“Module”后缀。

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

(许多由 F# 社区完成)

基于 Roslyn 工作区的新编辑器

(许多由杰出的 F# 社区贡献的新 IDE 功能)

F# 社区的其他贡献

我们希望感谢整个 F# 社区在 Visual Studio 2017 中构建 F# 工具,提交 bug,推动讨论,并实施 bug 修复和功能。 如果没有 F# 社区,Visual Studio 2017 中的 F# 成功就不可能实现。 请参阅 参与者的完整列表。

JavaScript 和 TypeScript

TypeScript 2.1

TypeScript 2.1 可用于 Visual Studio 中的所有 TypeScript 项目。 TypeScript 2.1 提供下级异步/await、更好的类型推理、本地对象扩展等! 若要详细了解该版本,请查看 发布博客文章完整更改日志

JavaScript Language Service

新的 JavaScript 语言服务 (图 25) 默认可用并启用。 新服务提供更丰富的 IntelliSense,并为 JSDoc 注释注释、ES6 和通用 JS 模块格式添加 IntelliSense 支持。 它还支持 ES2016 中的 JSX 语法和功能,例如生成器、模块和修饰器。 有关详细信息,请参阅 GitHub 上的此博客文章JavaScript IntelliSense 文档

适用于 jQuery 的丰富 JavaScript IntelliSense
(图 25)适用于 jQuery 的丰富 JavaScript IntelliSense

性能改进

提高性能是此版本最关注的焦点之一。 除了多项优化来改进内存和响应能力特征外,整个 JavaScript/TypeScript 语言服务也已移动到附属进程, devenv.exe 以便为最大的 Visual Studio 项目提供内存缓解。 使用大型 JavaScript 项目时,Visual Studio 进程中的内存消耗更少,内存不足崩溃。

调试和诊断

运行到单击

只需在调试时单击代码行旁边的图标即可运行到该行(图 26)。 不再设置临时断点或执行几个步骤来执行代码并在所需行上停止。 现在,在调试器下处于中断状态停止时,鼠标悬停在代码行旁的“运行到单击”图标。 将鼠标移动到图标并单击该按钮,现在代码将在下次在代码路径中命中时在该行上运行并停止。 可以通过单击“ 调试>选项>启用运行”,将其从主菜单关闭。

运行到单击图标
(图 26)运行到单击图标

附加到进程筛选器

在“附加到进程”对话框中轻松搜索 (图 27), 快速查找要将调试器附加到的进程。 正在运行的进程列表将筛选为与搜索匹配的项目。 搜索筛选器是粘滞的,会在重新打开对话框时记住以前的搜索。

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

重新附加到进程

现在可以快速重新附加到以前调试的进程。 触发新的 Debug/Reattach to Process (Shift+Alt+P) 命令将立即尝试将调试器附加到上一调试会话中从“附加到进程”对话框调用的最后一个进程。 调试器将首先尝试匹配上一个进程 ID,然后通过与以前的进程名称匹配来重新附加到进程。 如果未找到匹配项,或者找到多个具有相同名称的进程,将显示“附加到进程”对话框,以便可以选择预期进程。

新的异常帮助程序

使用新的异常帮助程序 (图 28) 在精简的非模式对话中一目了然地查看异常信息,并即时访问内部异常。 诊断 NullReferenceException 时,现在可以快速查看异常帮助程序内空的内容。 现在,可以通过单击复选框在引发的异常时添加条件来排除从特定模块引发的异常类型中断。 阅读此博客文章,详细了解异常帮助程序的新优势。

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

将条件添加到异常设置

将调试器配置为在引发的异常时中断时,可以添加条件,以便调试器仅在指定模块中引发异常时中断(图 29)。

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

调试器辅助功能改进

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

适用于 .NET Core 的 IntelliTrace 事件

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

诊断工具窗口更新

启动调试会话时,将在诊断工具窗口中看到应用程序的新摘要视图 (图 30 )。 在这里,你将能够:

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

性能探查器更新

现在可以附加到正在运行的进程。 CPU 使用率工具、GPU 使用情况工具和性能向导现在支持附加到正在运行的进程。

CPU 使用情况工具更新

使用情况工具进行了多项改进:

  • 更好的外部代码支持 - CPU 工具现在可让你更好地了解用户代码调用的库和框架函数的成本。
  • 函数视图 (图 31) - 按其 CPU 成本对函数进行排名的视图。
函数列表
(图 31)函数列表
  • 调用方/被调用方视图 (图 32) 允许调查对所选函数进行的函数调用的成本。
调用方/被调用方视图
(图 32)调用方/被调用方视图
  • 在 CPU 工具中选择函数时,源视图会显示函数的源代码。

Chrome 调试支持

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

实时单元测试

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

Live Unit Testing
(图 33)Live Unit Testing

有关更多详细信息,请参阅 Live Unit Testing 博客

测试工具

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

现在,可以通过在测试资源管理器中选择测试方法,将自动化与测试用例工作项 (图 34) 相关联。 此新体验还允许查看所选测试方法的任何现有关联。

只需在测试资源管理器中右键单击某个测试...

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

...并提供用于创建关联的测试用例 ID(图 35)。

关联自动化
(图 35)关联自动化

在早期版本的 Visual Studio 中,可以使用工作项表单完成此作。 可以通过使用工具打开兼容模式来启用基于工作项的表单体验 |选项(图 36)。

工作项表单兼容性模式
(图 36)工作项表单兼容性模式

团队资源管理器

新的 Git 功能

我们已将新的 Git 功能添加到 Visual Studio 2017,让你无需离开 IDE 即可执行更多端到端工作流。 可以轻松查看传出提交的差异,执行强制推送以完成重新数据库或推送已修改的提交,取消设置上游分支,然后从 Visual Studio 继续修补重新基。 此外,我们还搬到了 git.exe。 这样,我们就可以提供最 up-to日期功能。 我们支持 SSH,尊重你的配置选项,并在团队资源管理器中准确显示你在命令行中看到的内容。 若要了解有关这些功能的详细信息,请查看 博客文章

连接到 VSTS/TFS

在 Visual Studio 起始页和团队资源管理器中,在 VSTS/TFS 中连接到项目和克隆存储库的过程已经过个性化和简化,使查找项目和存储库更快速、更容易地连接到。 全新的 Connect 页面仅显示已跨所有 VSTS/TFS 服务器(而不是每个项目的每个存储库)映射和克隆的项目和存储库。 此外,在克隆存储库之前,不再需要连接到项目。

启动对话框以连接到 VSTS 和 TFS 时,将看到重新设计的 UX。 你将看到已添加的所有 TFS 服务器,然后是所选用户帐户的所有 VSTS 服务器、项目和存储库。 结果列在树中,以便改进导航。 除了存储库之外,还可以连接到集合或项目。

工作项窗体

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

团队资源管理器中的工作项表单
(图 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 的以前版本,直到 Visual Studio 2012 为止。

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

“先决条件”选项卡
(图 38)“先决条件”选项卡

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

VSIXInstaller
(图 39)VSIXInstaller

批量修改扩展

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

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

VSIX 安装程序检测到所有 Visual Studio 窗口都关闭后,它将开始完成计划修改(图 41)。

批处理修改安装程序
(图 41)批处理修改安装程序

Ngen 支持

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

NGEN 属性
(图 42)NGEN 属性
  • Ngen - 是否在程序集上使用 Ngen。
  • Ngen 应用程序 - 要通过 /ExeConfig 开关传入 Ngen 的应用程序。
  • Ngen 体系结构 - 本机映像的目标体系结构。 选项包括:x86、x64 和全部。
  • Ngen Priority - Ngen 优先级。

在扩展目录之外安装文件

现在可以选择将文件安装到扩展目录外部的文件夹( 图 43)的选择列表。

VSIX 属性
(图 43)VSIX 属性
  • 包含在 VSIX 中 - 在 VSIX 中包含该文件。
  • 安装根 - 用于安装文件的根目录。 选项包括:默认(安装在扩展目录中)、PublicAssemblies、ReferenceAssemblies、MSBuild、Schemas、Licenses、RemoteDebugger 和 VSTargets。
  • 目标路径 - 要在用户计算机上安装的文件的名称。
  • VSIX 子路径 - 将安装文件的“安装根”下的子路径。

漫游扩展管理器

Visual Studio 2017 中的新增功能是漫游扩展管理器,可帮助你跟踪所有开发环境中的常用扩展。 在云中创建同步列表,漫游扩展可跟踪已安装的扩展。

登录到 Visual Studio 时,可以快速查看工具>扩展和更新中的扩展列表,然后单击“漫游扩展管理器”(图 44)。 它跟踪已安装的扩展,并允许选择哪些扩展添加到漫游列表中。 随着新的扩展每天都出现在库中,此工具使你能够快速轻松地使用你喜欢的扩展设置每个开发环境。

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

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

  • 漫游图标 漫游图标 - 表示作为漫游列表一部分的扩展,但未安装在此计算机上。 可以通过“下载”按钮安装这些内容。
  • 漫游和已安装图标 漫游和已安装图标 - 表示作为漫游列表一部分且在此环境中安装的所有扩展。 如果你决定不想漫游,可以通过“停止漫游”按钮删除这些漫游。
  • 已安装的图标 已安装图标 - 表示在此环境中安装的所有扩展,但不属于漫游列表。 可以通过“开始漫游”按钮将扩展添加到漫游列表。

这些图标将显示列表的当前状态。 你可以有任何扩展处于任何状态,因此请自定义你的心脏内容! 或者让我们为你做! 登录时下载的任何扩展都将作为“漫游”和“已安装”添加到列表中,因此将成为漫游列表的一部分,允许你从任何计算机访问它!

项目和项模板的发现

从 Visual Studio 2017 开始,Visual Studio 如何使用项目和项模板来提高模板发现性能的中断性变更。 新的发现机制现在要求在模板清单文件中定义“vstemplate”架构之后的所有项和项目模板。 未在模板清单文件中定义的 Visual Studio 模板将不再显示在“新建项目”或“新建项”对话框中。 虽然新的扩展性工具将在 VSIX 生成期间生成清单,但如果 Visual Studio 模板作为 MSI 包的一部分发布,则必须为这些模板手动生成模板清单文件。 有关详细信息,请参阅 “升级 Visual Studio 2017 MSDN 的自定义项目和项模板 ”页。

.NET Core 和 ASP.NET Core

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

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

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

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

有关更多详细信息,请参阅 .NET 博客

通用 Windows 应用开发工具

更新了 .NET 本机工具链

此更新的 .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 应用生成视觉资产的功能。 现在,可以使用单个源图像在任何或所有规模上创建磁贴、徽标、图标和初始屏幕,以适应应用目标的每种类型的设备。

清单视觉资产生成器
(图 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 版本。

Xamarin 的 Bug 修复

此版本包括以下修补程序:

  • iOS 扩展应用无法生成,并出现错误“无法读取权利数据”。(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)
  • Microsoft.Csharp 未在 Visual Studio 项目模板中引用。(4.3.1.1)
  • 如果配置的 User Shell 不使用 bash 语法,则无法连接到 Mac 服务器。4.3.1.1)
  • 提交到测试云选项缺失(固定在 Visual Studio 2013 和 Visual Studio 2015 上)。(4.3.1.1)
  • 当变量/属性名称与其他项的类名相同时,调试器会感到困惑。(4.3.1.1)
  • 无法重命名资产目录中的图像集。(4.3.1.1)
  • 监视扩展项目中强行隐藏“资源”文件夹。(4.3.1.1)
  • 对于 tvOS 项目,“Resources”中的“Assets.xcasset”文件夹未隐藏。(4.3.1.1)

Visual Studio 用于 Apache Cordova 的工具

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

  • Cordova 模拟 - 基于浏览器的新模拟器使你可以快速编码并在浏览器中立即查看结果(图 46)。 实时重新加载、插件模拟和支持 Ionic Framework 为 Visual Studio 提供市场上最快的开发人员工作流。
Cordova 模拟
(图 46)Cordova 模拟
  • 支持 iOS 10 和 XCode 8 - iOS 开发的服务器代理更新 remotebuild 现在包括对 XCode 8 的支持。

  • 错误着色 - 由于诊断生成失败通常需要开发人员读取生成输出,因此我们已开始在生成输出窗格中为错误着色,以便于阅读(图 47)。 此外,我们添加了标头来描述生成过程中的步骤,以帮助开发人员确定生成过程中发生失败的位置。

彩色错误
(图 47)彩色错误
  • 产品内购置 - 除了新的轻型安装,使你更快地构建 Cordova 应用,我们现在已从 Visual Studio 中添加路径,以在开发继续 (图 48)时获取其他生成部分。 如果尚未安装 Android 或 Windows 组件,可以通过部署栏获取它们,这将启动 Visual Studio 安装程序并指导你完成安装过程。
产品内购置
(图 48)产品内购置
  • 快速可靠的生成 - 新的 Visual Studio 安装程序与第三方组件的完全验证工具链的脱机安装相结合,提供更快速的生成,这些版本也更易于故障排除和修复。

重要

适用于 Android 和 Windows 的生成工具和模拟器现在是可选的。 可以通过生成/部署菜单栏动态获取它们。 此版本的 Visual Studio 不支持 Windows 应用商店 8.1 项目。 建议将 Cordova 项目更新为面向 Windows 10。 最低支持的 Cordova 版本将提高到 6.0.0。 面向低于 6.0.0 的 Cordova 版本的项目需要升级其项目才能在 config.xml Visual Studio 2017 中生成和部署。

适用于 Visual Studio 的Node.js 工具

Node.js Tools for Visual Studio 将 Visual Studio 转换为功能强大的 Node.js 开发环境。 此版本侧重于稳定性、性能和整体产品质量,包括:

  • 更好地与新的 Salsa JavaScript 语言服务集成。
  • 减少了内存和 CPU 使用率,缩短了项目加载时间。
  • 支持 Pug 模板文件。
  • 更多 up-to日期项目模板。
  • 支持 Mocha 3.x 测试框架。
  • 许多 bug 修复。

感谢所有出色的参与者,他们使此版本的 Node.js Tools for Visual Studio 成为可能。 有关详细信息,请查看 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 开发人员的代码编辑和调试体验以及整体产品质量,包括:

  • IntelliSense 对 Unity 消息的支持。
  • Unity 消息的代码着色。
  • 改进了 Unity 调试器中的表达式计算。
  • 改进了 Unity 消息向导,以支持能够接收消息的所有 Unity 类型。
  • 许多 bug 修复和优化。
Unity 消息的代码完成会话
(图 49)Unity 消息的代码完成会话

Redgate

Visual Studio 随附的 Redgate Data Tools

为了将 Visual Studio 2017 DevOps 功能扩展到 SQL Server 数据库开发, Redgate Data Tools(包括 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 提示会自动完成数据库和系统对象和关键字,并在键入时提供列建议。 这会导致更简洁的代码和更少的错误,因为无需记住每个列名或别名。
  • 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. Going forward, nuget.exe v4.0.0 + 也将考虑计算机范围配置的新位置。 对于 nuget.config的分层合并,将不再隐式引用或考虑程序数据中的 NuGet.config。

XAML 应用工具

XAML 编辑并继续

Visual Studio 现在允许你在 WPF 或通用 Windows 应用运行时编辑 XAML。 在 Visual Studio 中调试应用时,可以对 XAML 代码编辑器中的标记进行更改,更改将反映在正在运行的应用中,而无需重新编译。

XAML 编辑器生产力增强功能

  • IntelliSense 筛选 - 键入 XAML 时,完成列表将仅显示匹配的类型,并且将选择最接近的匹配项。
  • x:Bind 的 IntelliSense - 我们已在绑定到路径和事件时为 x:Bind 启用 IntelliSense 完成。
  • 命名空间完成 - 如果对命名空间的引用不存在 (图 50),则在键入时不会获得 IntelliSense 支持。 完成键入后,你将获得灯泡建议支持,以生成并插入该类型的前缀,并在 XAML 文档中添加命名空间定义。
IntelliSense_without_namespace的代码完成会话
(图 50)IntelliSense_without命名空间
  • 对于需要前缀的类型,如果对命名空间的引用已存在,IntelliSense 将提供自动完成前缀。

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

  • 删除和排序命名空间 - 现在可以删除不必要的命名空间 (图 52), 并从上下文菜单或使用键盘快捷方式 Ctrl+R+G对其进行排序。 如果 XAML 文档具有不必要的命名空间,你还将看到一个灯泡,该灯泡将提供删除它们的选项。
lightbulb_remove不必要的命名空间
(图 52) lightbulb_remove不必要的命名空间

  • 对 XAML 编辑器的 .editorconfig 支持 - 可以在 .editorconfig 文件中定义indent_style、indent_size和tab_width的设置,该文件将用于不使用 工具 > 选项中定义的设置。

  • XAML 编辑器的结构可视化工具 - 结构可视化工具 (即缩进参考线) (图 53) 现已内置到 Visual Studio 中,不需要单独的扩展。 此功能提供一目了然地处理的代码块的上下文,而无需滚动。

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

XAML 性能改进

  • 改进了 XAML 选项卡切换性能 - XAML 选项卡开关性能显著提高。 在示例客户项目中,我们看到切换时间缩短了 90 多个%。
  • 解决 XAML 编辑器键入延迟 问题 - XAML 键入速度比以往任何时候都快。 我们进行了多项投资,以减少 XAML 编辑器键入延迟,大多数开发人员应发现 XAML 编辑器和 XAML IntelliSense 的响应能力更高。 在使用第三方控件或大型控件库的项目中编辑 XAML 文件时,这一点最为明显。

Data Tools 和 SQL Server

SQL Server 数据工具

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

此版本汇集了使用 Visual Studio 在所有受支持的 SQL Server 版本和数据库平台(本地和云)上开发、测试和部署数据库。 该版本还包括数据库可编程性外围应用增强功能,它改进了 SQL Server Data Tools 中的 SQL 连接体验,现在会自动发现可以使用简单的单击连接到的 SQL Server 和 Azure SQL 数据库。

此外,Visual Studio 2017 还解决了新的 Azure SQL 数据库身份验证类型,以及 Azure Active Directory 集成身份验证和密码身份验证。

开发人员分析工具

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

  • CodeLens 现在在将数据发送到 Application Insights 资源的项目中显示调试和实时遥测数据。
  • 用于异常的 CodeLens 链接到 Application Analytics 以显示用户对异常的影响。
  • CodeLens 使用 Application Insights SDK 显示来自本地调试会话的请求。
  • 现在,Visual Basic 项目中提供了用于请求和异常的 CodeLens。
  • 从 Visual Studio 发布应用后,实时指标现在会显示在 Toast 通知中。
  • 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 指示器。

Microsoft Azure 文档中了解有关 Application Insights 的详细信息。

Visual Studio 的 Office 开发人员工具

此版本包括包含最新功能和更新的 Office 开发人员工具,如下所示:

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

实时体系结构依赖项验证

如果在 Visual Studio Enterprise 中设置了依赖关系验证关系图(即层关系图),则现在可以在代码编辑器中键入代码时收到任何体系结构依赖项规则冲突( 图 54)的实时通知(图 54 )。 错误显示在“错误列表”中,波浪线将显示在文本编辑器中,其中显示了冲突的精确位置。 现在不太可能引入不需要的依赖项。

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

开发人员命令提示符

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

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

用于 .NET 的 Azure SDK

现在可以使用适用于 .NET Visual Studio 的 Azure SDK 安装新的 Visual Studio 安装程序。 如果以前使用 Web 平台安装程序安装了用于 .NET 的 Azure SDK,则现在可以通过使用新的 Visual Studio 安装程序安装 Azure 工作负载来获取相同的组件。 安装的包与 SDK 的 2.9.5 版本相同。 对于此版本的 Visual Studio 和所有将来的版本,适用于 .NET 的 Azure SDK 仅可从 Visual Studio 安装程序获取。


发行说明图标 Visual Studio 2017 版本 15.0.1

发布日期:2017 年 3 月 14 日

15.0.1 版中修复的首要问题

以下是 15.0.1 中解决的客户报告的问题:


发行说明图标 Visual Studio 2017 版本 15.0.2

发布日期:2017 年 3 月 28 日

15.0.2 版中修复的首要问题

以下是 15.0.2 中解决的客户报告的问题:


发行说明图标 Visual Studio 2017 版本 15.0.3

发布日期:2017 年 3 月 31 日

15.0.3 版中的更新摘要

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


发行说明图标 Visual Studio 2017 版本 15.0.4

发布日期:2017 年 5 月 23 日

15.0.4 版中已修复的首要问题

脱机安装方案不再需要 Internet 访问。


发行说明图标 Visual Studio 2017 版本 15.0.5

发布日期:2017 年 9 月 18 日

15.0.5 版中已修复的首要问题

以下是 15.0.5 中解决的客户报告的问题:


发行说明图标 Visual Studio 2017 版本 15.0.6

发布日期:2017 年 11 月 14 日

15.0.6 版中的更新摘要

Visual Studio 2017 版本 15.0 安全公告通知

Microsoft 已发布面向 .NET Core 和 ASP.NET Core 的安全建议。 有关详细信息,请参阅 .NET CoreASP.NET Core 存储库中的对应公告。 请注意以下信息:

CVE-2017-8585 格式不正确的证书可能会导致拒绝服务

.NET Core 1.0、1.1 和 2.0 中存在安全漏洞,其中格式不正确的证书或其他 ASN.1 格式数据可能导致在 Linux 和 macOS 上无限循环拒绝服务。 建议系统管理员将 .NET Core 运行时更新到 1.0.8、1.1.5 或 2.0.1 版本。 建议开发人员将 .NET Core SDK 更新到 2.0.3 或 1.1.5 版本。

CVE-2017-8700 CORS 旁路可以启用信息泄露

ASP.NET Core 1.0 和 1.1 中存在安全漏洞,可以绕过跨域资源共享(CORS),从而导致信息泄露。

CVE-2017-11879 打开重定向可能会导致权限提升

ASP.NET Core 2.0 中存在一个安全漏洞,其中存在开放重定向,从而导致权限提升。

CVE-2017-11770 拒绝服务漏洞

当应用程序通过 Windows Http.Sys 托管时,ASP.NET Core 1.0、1.1 和 2.0 中存在安全漏洞,其中格式不正确的请求可能导致拒绝服务。 使用 ASP.NET Core 1.0 和 ASP.NET Core 1.1 创建的新项目现在将使用包含上述安全更新的包版本。 对于现有项目,用户可以使用“管理 NuGet 程序包”对话框将包更新到较新版本。


发行说明图标 Visual Studio 2017 版本 15.0.7

发布日期:2017 年 12 月 6 日

15.0.7 版中的更新摘要

Visual Studio 2017 版本 15.0 安全公告通知

Microsoft发布了 ASP.NET Core 的安全公告。 可以在 ASP.NET 核心 存储库中的相应公告中找到详细信息。 请注意以下信息:

CVE-2017-8700 CORS 旁路可以启用信息泄露

ASP.NET Core 1.0 和 1.1 中存在安全漏洞,可以绕过跨域资源共享(CORS),从而导致信息泄露。 使用 ASP.NET Core 1.0 和 ASP.NET Core 1.1 创建的新项目现在将使用包含上述安全更新的包版本。 对于现有项目,用户可以使用“管理 NuGet 程序包”对话框将包更新到较新版本。


发行说明图标 Visual Studio 2017 版本 15.0.8

发布日期:2018 年 1 月 9 日

15.0.8 版中的更新摘要

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-0786 X509 证书验证中的安全功能绕过

Microsoft发布此安全公告,提供有关 .NET Core 1.0 和 1.1 和 2.0 公共版本中漏洞的信息。 此建议还指导开发者如何正确地更新应用程序。 此安全建议适用于 UWP 的 .NET Native。

Microsoft 可察觉公共版 .NET Core 中的安全漏洞,利用此漏洞,攻击者提交特定用途标记为无效的证书,但组件会将此证书用于该用途。 此操作会忽略增强型密钥使用标记。

安全更新通过确保 .NET Core 组件完全验证证书,解决了此漏洞。 建议系统管理员将 .NET Core 运行时更新到 1.0.9、1.1.6 或 2.0.5 版本。 建议开发人员将 .NET Core SDK 更新到 2.1.4 或 1.1.7 版本。

CVE-2018-0764 分析 XML 文档时拒绝服务

Microsoft发布此安全公告,提供有关 .NET Core 1.0 和 1.1 和 2.0 公共版本中漏洞的信息。 此建议还指导开发者如何正确地更新应用程序。

Microsoft 可察觉由于 XML 文档处理不当,在所有公共版 .NET Core 中产生的拒绝服务漏洞。 如果攻击者成功利用此漏洞,可能会导致对 .NET 应用程序拒绝服务。 远程未经过身份验证的攻击者可以通过向 .NET Core 应用程序发布特制请求利用此漏洞。

更新通过更正 .NET Core 对 XML 文档处理的操作方式解决了此漏洞。 建议系统管理员将 .NET Core 运行时更新到 1.0.9、1.1.6 或 2.0.5 版本。 建议开发人员将 .NET Core SDK 更新到 2.1.4 或 1.1.7 版本。


发行说明图标 Visual Studio 2017 版本 15.0.9

发布日期:2018 年 2 月 2 日

15.0.9 版中的更新摘要

  • MSVC 编译器已更新,支持 /Qspectre 开关,当编译器检测到 Spectre 变体 1 的实例时,该开关将自动插入猜测屏障。 有关 /Qspectre 的详细信息,请参阅 Visual C++ 团队博客
  • 我们已更新到 Java™ 开发工具包 8、Update 161(JDK 版本 8u161)以修复下载错误。

发行说明图标 Visual Studio 2017 版本 15.0.10

发布日期:2018 年 2 月 21 日

15.0.10 中的更新摘要

团队资源管理器支持 TLSv1.2。 我们已更新随附 Visual Studio 提供的 Git 和 Git 凭据管理器组件。 另外还更新了可选的适用于 Windows 的 Git 组件。 此更新允许 Git 连接到不再支持 TLSv1 和 TLSv1.1 而支持 TLSv1.2 的服务。


发行说明图标 Visual Studio 2017 版本 15.0.11

发布日期:2018 年 3 月 13 日

15.0.11 中的更新摘要

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-0875 Microsoft .NET Core 的安全公告

Microsoft 发现 .NET Core 公共版本存在安全漏洞,其中恶意文件或 Web 请求可能导致拒绝服务 (DoS) 攻击。

  • 建议系统管理员将 .NET Core 运行时更新到 1.0.10、1.1.7 或 2.0.6 版本。 建议开发人员将 .NET Core SDK 更新到 1.1.8 或 2.1.101。

发行说明图标 Visual Studio 2017 版本 15.0.12

发布日期:2018 年 4 月 10 日

15.0.12 版中的更新摘要

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-1037 Microsoft Visual Studio 信息泄露漏洞Microsoft安全公告

如果 Visual Studio 在编译程序数据库 (PDB) 文件时以不当方式公开未初始化内存的有限内容,就会出现信息泄漏漏洞。 如果攻击者已利用此信息泄漏漏洞,可以通过用于编译 PDB 文件的 Visual Studio 实例来查看未初始化内存。

攻击者必须获取对使用 Visual Studio 易受攻击版本创建的受影响 PDB 文件的访问权限,才能利用此漏洞。 攻击者无法强迫开发人员生成此信息泄漏。

安全更新程序通过更正 PDB 文件在项目编译时的生成方式来修复此漏洞。


发行说明图标 Visual Studio 2017 版本 15.0.13

发布日期:2018 年 4 月 26 日

15.0.13 版中的更新摘要

  • 我们更新到 Java™ 开发工具包 8,Update 172(JDK 版本 8u172)。

发行说明图标 Visual Studio 2017 版本 15.0.14

发布日期:2018 年 5 月 31 日

15.0.14 版中的更新摘要

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-11235 Microsoft Git 安全漏洞安全公告

我们修复了 Git 社区披露的 Git 中的安全漏洞。 当用户克隆恶意存储库时,该漏洞可能会导致任意代码执行。


发行说明图标 Visual Studio 2017 版本 15.0.15

发布日期:2018 年 7 月 10 日

15.0.15 版中的更新摘要

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-8172 Visual Studio 远程代码执行漏洞

远程代码执行漏洞,通过打开特殊设计的项目或资源文件,导致用户计算机被利用。 安全更新通过更正 Visual Studio 如何检查文件的源标记来解决漏洞。

CVE-2018-8260 .NET Framework 远程代码执行漏洞

.NET 软件中存在远程执行代码漏洞,攻击者可利用此漏洞在当前用户的上下文中运行任意代码,以此利用用户的计算机。 安全更新通过更正 .NET 如何检查文件的源标记来解决漏洞。

CVE-2018-8232 .NET Microsoft宏汇编程序篡改漏洞

与Microsoft宏汇编程序错误验证代码相关的篡改漏洞。 安全更新通过确保Microsoft宏汇编程序正确验证代码逻辑来解决漏洞。

CVE-2018-8171 ASP.NET 核心安全功能绕过漏洞

如果未验证错误登录尝试次数,可能会导致攻击者尝试无限身份验证尝试,则存在 ASP.NET 核心安全功能绕过漏洞。 更新通过验证错误的登录尝试次数来解决漏洞。


发行说明图标 Visual Studio 2017 版本 15.0.16

发布日期:2018 年 8 月 2 日

15.0.16 版中的更新摘要

  • 此版本现已安装 Java™ 开发工具包 8 更新 181(JDK 版本 8u181)。

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-8356 .NET Core 安全功能绕过漏洞

Microsoft 意识到 .NET Core 未正确验证证书时存在的安全功能让漏洞。 成功利用此漏洞的攻击者可能在质询时提供过期的证书。 该更新通过更正 .NET Core 处理验证的方式来解决此漏洞。


发行说明图标 Visual Studio 2017 版本 15.0.17

发布日期:2018 年 8 月 14 日

15.0.17 版中的更新摘要

Visual Studio 2017 版本 15.0 安全公告通知

CVE-2018-0952 诊断中心标准收集器特权提升漏洞

Visual Studio 服务中存在特权提升漏洞,这可能会导致非管理员用户在写入文件时的系统特权。 利用此功能的攻击者可以在仅具有用户级别访问权限的同时将文件写入系统。 此安全更新通过模拟当前用户来验证对文件位置的访问权限来解决此问题。


发行说明图标 Visual Studio 2017 版本 15.0.18

发布日期:2018 年 8 月 28 日

15.0.18 版中修复的首要问题


已知问题

我们一直坚持听取用户的反馈。 若要查找最新问题、记录新问题和投票赞成现有问题,请访问开发人员社区站点。


Visual Studio 2017 发行说明历史记录

若要详细了解以往 Visual Studio 2017 版本的相关信息,请参阅 Visual Studio 2017 发行说明历史记录页。