Visual Studio 2017

Last Update: 2017/4/7

若要查看最新更新,请访问中文版发行说明

我们非常荣幸地宣布 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 年 4 月 5 日 - 版本 15.1 (26403.00)

此版本的更新摘要


此版本中的新增功能

请访问开发人员社区门户,查看 Visual Studio 2017(版本 15.1)中已处理的所有问题。

新的团队资源管理器独立安装

Visual Studio 团队资源管理器 2017 是用于访问 Team Foundation Server 和 Visual Studio Team Services 的功能丰富的独立客户端,面向所有用户免费提供。 此安装只包括团队资源管理器,无需其他 IDE 组件即可访问版本控制和工作项跟踪。

团队资源管理器

通用 Windows 应用开发工具

通用 Windows 应用工作负载现在包括创意者更新 SDK (10.0.15063),可生成适用于 Windows 10 创意者更新(1703 版本)的应用。 此外,此版本还包括以下增强功能:

  • 从创意者更新 SDK 开始,Windows 10 SDK 将并行安装,从而可使用一台计算机生成面向已发布的 SDK 版本的生产就绪应用,以及开始测试由 Windows SDK 预览版提供的功能。
  • 通过用 PackageReference 替换 package.config 和 package.json,改进了 NuGet 包管理。
  • 增强版 .NET 本机编译器现在作为 NuGet 包提供。
  • Visual Studio 为作为 NuGet 包提供的 XAML 控件添加了改进的工具支持。
  • XAML 编辑器中的 IntelliSense 现在突出显示应用面向的 SDK 版本中不支持的 XAML 类型和属性。

有关详细信息,请参阅 Visual Studio 2017 中的创意者更新 SDK 支持


发布日期: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,包括减少启动和解决方案加载时间、改进登录和标识、改进代码导航以及增添打开文件视图和链接的服务,实现了应用和任意本地服务或云端服务之间的连接。
  • 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 工具实施了多项改进。

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

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

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

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

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


Visual Studio 2017 中的新增功能

请访问开发人员社区门户,查看 Visual Studio 2017(版本 15.0)中已处理的所有问题。

安装体验

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

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

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

The new installation experience in 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 主机,并跟踪未提交和未推送的工作。

Version Control - Unpublished commits example

Version Control - No pending changes example

登录和标识改进

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

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

起始页

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

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

下方显示了新的起始页。

Start Page with Get Started and News

改进了代码导航

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

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

Go To Results Filtered

Go To Line

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

Find All References

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

Structure Guide Lines

通过 EditorConfig 支持编码约定

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

打开文件夹

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

The new Open Folder feature in the Visual Studio IDE

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

The new Lightweight Solution load feature in the 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。

项目概述页入门

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

Project Overview

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

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

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

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

Connected Services

产品随附的工具和功能

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

In-product acquisition via Quick Lauch

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

In-product acquisition via New Project Dialog


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

CppCoreCheck properties page

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

Error List

Error List Filtered

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

Member List Filtering

  • 添了新的实验性预测 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 Open Folder

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 提供许多重构,帮助提高工作效率并使代码更易读。 下面列出了部分重构:

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

Use object initializer

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

Move out variable inline

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

Use throw expression with null-coalescing operator

  • 将类型移动到匹配文件:通过 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 检查。
  • 需要大括号。

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

Configure code style preferences and enforcement from EditorConfig

IntelliSense 改进

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

IntelliSense Completion Filtering

其他编辑器改进

  • 你现在可以通过定位游标中间字符串并按 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 语言服务,并默认启用。 新服务提供更强大的 IntelliSense,并增添了对 JSDoc 注释批注、ES6 和常见 JS 模块格式的 IntelliSense 支持。 此外,它还支持 JSX 语法和 ES2016 的功能,如生成器、模块和修饰器。 有关详细信息,请参阅此博客文章或 GitHub 上的 JavaScript IntelliSense 文档

Rich JavaScript IntelliSense for jQuery

性能改进

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


调试和诊断

运行时单击

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

Run to Click Icon

“附加到进程”筛选器

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

Attach to Process Filter

重新附加到进程

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

新的异常帮助器

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

The New Exception Helper dialog

将条件添加到异常设置

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

Edit Conditions dialog box

调试器辅助功能的改进

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

.NET Core 的 IntelliTrace 事件

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

“诊断工具”窗口更新

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

Summary tab in Diagnostics Tools Window

性能探查器更新

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

CPU 使用率工具更新

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

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

Functions List

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

Caller / Callee View

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

Chrome 调试支持

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


实时单元测试

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

Live Unit Testing

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


测试工具

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

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

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

Test Explorer Associate Automation

并提供测试用例 ID 即可创建关联。

Associate Automation

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

Work Item Form Compatibility mode


团队资源管理器

新增 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 浏览器中会显示工作项窗体。 不过,如果你连接到的是 Team Foundation Server 2015 或更早版本,则看到的是旧版工作项窗体。

Work Item Form in Team Explorer


增强的 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 清单设计器,以反映对清单的更改。 在先决条件选项卡中,扩展开发人员可找到用于指定为扩展先决条件的已安装组件的列表。

Prerequisite

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

VSIXInstaller

批量修改扩展

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

Extensions and Updates Dialog

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

Batched Modification Installer

Ngen 支持

现可选择使用 Ngen 安装程序集。

NGEN Properties

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

在扩展目录外安装文件

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

VSIX Properties

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

漫游扩展管理器

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

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

The new Roaming Extension Manager in the 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。

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

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

Manifest Visual Asset Generator

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

Cordova simulate

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

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

Pretty printing

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

In-product acquisition

  • 快速、可靠的生成 - 新的 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 现已可通过新的 Visual Studio 2017 安装程序中的“使用 Unity 的游戏开发”工作负载进行安装。 Visual Studio Tools for Unity 3 侧重于改进 Unity 开发人员的代码编辑和调试体验,以及总体产品质量,包括:

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

Code completion session for Unity messages


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 完成。
  • 命名空间完成 - 如果不存在命名空间引用,则在键入时不会获得 IntelliSense 支持。 键入完成后会获得灯泡建议支持,可为键入内容生成和插入前缀并在 XAML 文档中添加命名空间定义。
    ![IntelliSense_without namespace](media/intelliSense_without namespace.PNG "IntelliSense_without namespace")

* 对于需要前缀的类型,如果已存在对命名空间的引用,IntelliSense 将自动完成前缀。
  • 命名空间前缀重命名重构 - 可从上下文菜单或在光标位于前缀上时使用键盘快捷方式 Ctrl+R+R 调用重命名操作。 还可在应用更改之前预览更改。

    命名空间前缀重命名

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

    lightbulb_remove 不必要的命名空间

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

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

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

Live Architecture Dependency validation


开发人员命令提示符

重构了 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。


已知问题

以下是有关此版本的已知问题和可用解决方法。


安装问题

Windows 10 SDK 安装失败,返回代码为 -2147023293

  • 问题:

    在某些情况下,Windows SDK 安装可能会失败,并返回代码 -2147023293。 安装日志 dd_setup__errors.log 会显示如下类似错误:包 'Win10SDK_10.0.14393.795,version=10.0.14393.79501' 安装失败。 (详细信息)返回代码:-2147023293 返回代码详情:安装时发生严重错误。 请注意,确切的包名称取决于已选择安装的 Windows 10 SDK。

  • 解决方法:

    导致此问题的原因可能有多个。 若要解决该问题,请尝试以下步骤:

    1. 独立于 Visual Studio 安装 Windows 10 SDK。 可从 Windows 开发人员中心下载 Windows 10 SDK。
    2. 在低于 Windows 10 的 Windows 版本上进行安装时,某些情况下,安装失败可能是由于缺少通用 C 运行时所导致。 对于 Windows 10 1507 运行时和 Windows 10 1511 运行时,可分别使用 KB2999226KB3118401 进行安装。
      有关详细信息,请参阅 Visual Studio 开发人员社区门户

无法启动 Cloud Explorer

  • 问题:

    如果将 Cloud Explorer 与 Web 开发工作负载一起安装,则启动 Cloud Explorer 可能会失败,并显示错误消息“无法在 Visual Studio 运行时继续安装。 请关闭 Visual Studio,然后重试。” 这是由于缺少依赖关系。

  • 解决方法:

    安装 Azure 开发工作负载,然后重新启动 Cloud Explorer。

卸载 Visual Studio Windows 10 SDK 导致 Visual Studio 2017 或 Visual Studio 2015 中出现 UWP 生成错误

  • 问题:

    如果卸载 Windows 10 SDK,则生成 UWP 应用时将收到以下错误:
    Cannot resolve 'GenXbf.dll' under path 'C:\Program Files\Windows Kits\10'. Please install the Windows Software Development Kit. The Windows 10 SDK is installed with Visual Studio.
    此问题会影响 Visual Studio 2017、Visual Studio 2017 预览版和 Visual Studio 2015。 执行以下操作后,计算机可能会陷入此错误状态:

    • 安装 Visual Studio 2017 和 Visual Studio 2017 预览版,然后卸载其中之一。
    • 安装 Visual Studio 2015 和 Visual Studio 2017 或 Visual Studio 2017 预览版,然后卸载其中之一。
    • 安装 Visual Studio 2017、Visual Studio 2017 预览版或 Visual Studio 2015,然后直接从“程序和功能”或通过使用 Visual Studio 安装程序卸载任何 Windows 10 SDK。
  • 解决方法:

    打开“控制面板”,然后转到“程序和功能”。 选择以下选项之一,然后单击“修复”:

    • Windows 软件开发工具包 - Windows 10.0.15063.00(创意者更新)
    • Windows 软件开发工具包 - Windows 10.0.14393.795(周年更新)

断开 Internet 连接后,使用脱机安装文件夹不会安装 Windows 仿真器

  • 问题:

    在断开 Internet 连接的情况下使用带 Windows 10 移动版仿真器(创意者更新)的脱机安装文件夹安装 Visual Studio 时,Visual Studio 安装程序将完成且显示消息“安装完成但出现警告”,并且 Windows 仿真器安装失败。

  • 解决方法:

    分别安装 Windows 10 移动版仿真器和 Visual Studio。

    1. 打开 Visual Studio 脱机安装文件夹,并导航到“Win10_Emulator_10.0.15063,version=10.0.15063.12,chip=x64”。
    2. 运行 EmulatorSetup.exe 以安装 Windows 仿真器。
若尚未安装 Visual Studio,可先安装 Windows 仿真器。
1. 使用上述说明安装 Windows 仿真器。
2. 运行 Visual Studio 安装程序以安装 Visual Studio。此时安装程序不会出现警告。

编辑器和 IDE 问题

XML 文件不支持 EditorConfig

  • 问题:

    编辑 XML 文件时,未应用 .editorconfig 中定义的编码样式约定。

  • 解决方法:

    目前没有解决方法。

尚不支持 EditorConfig insert_final_newline 属性和 trim_trailing_whitespace 属性

  • 问题:

    .editorconfig 文件中定义的 insert_final_newline 属性和 trim_trailing_whitespace 属性不起作用。

  • 解决方法:

    目前没有解决方法。

JavaScript IntelliSense 停止运行

  • 问题:

    打开 JavaScript 代码超过 25Mb 的项目时,将显示错误“已对项目 禁用语言服务,因为它包含大量 .js 文件。 请考虑使用 'tsconfig.json' 文件的 'exclude' 部分排除文件。”

  • 解决方法:

    使用如下代码向项目根添加 tsconfig.json

      {
          "compilerOptions": {
              "allowJs": true,            // These settings apply to .js files as well as .ts files
              "noEmit":  true             // Do not compile the JS (or TS) files in this project on build
          },
          "exclude": [
              "node_modules",             // Don't include any JavaScript found under "node_modules" or "bower_components"
              "bower_components"
          ]
      }
    

    Add additional folders with JavaScript code libraries. Another common one is Scripts/Office/1 if you're using office-js.

TypeScript 在 ASP.NET Core 项目中无法识别

  • 问题:

    ASP.NET Core 项目中的 TypeScript 文件不具有任何 IntelliSense 且当前未在生成中编译。

  • 解决方法:

    向项目根添加一个空的 tsconfig.json 文件。

NuGet 问题

使用包管理器控制台时,“Enter”键可能不起作用

  • 问题:

    有时无法在包管理器控制台中使用 Enter 键。 如果看到此内容,请在修补程序上签出进程,并提供有关重现步骤的其他任何有用信息 (NuGet#4204NuGet#4570)。

  • 解决方法:

    打开该解决方案之前,重启 Visual Studio 并打开 PMC。 或者,请尝试删除 project.lock.json 然后再还原。

在 .NET Core 项目中,所用包具有带无效签名的程序集时,可能会出现无限还原循环

  • 问题:

    有时,如果所用包具有带无效签名的程序集或者包版本设置有“DateTime”贴标,这会导致包自动还原无限循环运行 (dotnet/project-system#1457)。

  • 解决方法:

    目前没有解决方法。

无法使用 Nuget 包管理器查看、添加或更新 DotNetCLITools

  • 问题:

    NuGet 包管理器不显示,且不允许添加/更新 DotNetCLITools (NuGet#4256)。

  • 解决方法:

    必须在项目文件中手动编辑 DotNetCLIToolReferences。

对目标框架版本重定目标可能会导致 Intellisense 不完整

  • 问题:

    在 Visual Studio 中对目标框架版本重定目标可能会导致 Intellisense 不完整。 将 PackageReferences 用作包管理器格式时可能出现这种情况 (NuGet#4216)。

  • 解决方法:

    手动进行还原。

实时单元测试问题

实时单元测试不适用于 .NET Core 项目

  • 问题:

    .NET Core 项目不支持实时单元测试。

  • 解决方法:

    目前没有解决方法。

Web 工具已知问题

运行时 MVC4 项目不连接到 SQL Server LocalDB

  • 问题:

    在 Visual Studio 中运行 MVC4 项目时,如果使用 SQL Server Express LocalDB 2012,则通过应用程序访问数据库可能会失败。 失败的原因是由于 MVC4 项目默认依赖于 SQL Server Express LocalDB 2012,而其未与 Visual Studio 2017 一并安装。

  • 解决方法:

    升级项目以使用 SQL Server Express LocalDB 2016,或者在计算机上手动下载并安装 SQL Server Express LocalDB 2012

.NET Core 工具问题

有关 .NET Core 和 ASP.NET Core 工具的当前问题列表,请参阅 GitHub 页面。

“打开文件夹”问题

编辑 launch.vs.json 或 tasks.vs.json 时 IntelliSense 不可用

  • 问题:

    编辑 launch.vs.json 或 tasks.vs.json 文件时,IntelliSense 不可用。

  • 解决方法:

    安装“ASP.NET 和 Web 开发”工作负载。

C# 重构可能会生成不一致的结果

  • 问题:

    在文件夹模式下,重构 C# 或 VB 代码可能会生成不一致的结果。

  • 解决方法:

    在解决方案模式下加载 C# 或 VB 项目。

在文件夹模式下 F10 无法启动调试器

  • 问题:

    在文件夹模式下热键 F10 无法启动调试器。

  • 解决方法:

    使用 F5 或 F11,并在应用程序入口点设置一个断点。

对 launch.vs.json 的未保存编辑可能会丢失

  • 问题:

    从上下文菜单选择“调试和启动设置”时,对 launch.vs.json 的未保存编辑将丢失。

  • 解决方法:

    从上下文菜单选择“调试和启动设置”之前请保存对文件所作的任何更改。

重载已经在文件夹模式下编辑的项目可能会失败,并出现一个对话框

  • 问题:

    如果已在文件夹模式下编辑过一个项目文件,则之后从解决方案模式重载时可能会失败。

  • 解决方法:

    尝试再次重载项目。 如果仍然无法加载,请重载解决方案。

测试工具问题

未能发现 UWP 项目,且 Visual Studio VS2017 中创建了 UITestMethod

  • 问题:

    未能发现 UWP 项目,且 Visual Studio VS2017 中创建了通过 UITestMethod 属性修饰的测试方法。

  • 解决方法:

    将 MSTest.TestAdapter NuGet 包升级到最新版本 (1.1.12)。

通过 DeploymentItem 属性修饰测试时,未能从 Visual Studio 中运行测试

  • 问题:

    如果测试项目在 Visual Studio 创建且具有通过 DeploymentItem 属性修饰的测试,则这些项目将无法运行,进而引发 FileNotFound 异常。

  • 解决方法:

    还要在 test method\containing 测试类上添加以下 DeploymentItem:[DeploymentItem("Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll")]。 此问题将在即将推出的 MSTest.TestFramework 和 MSTest.TestAdapter 版本中进行修复。

未能从 Visual Studio 中分析测试,出现 MissingMethodException

  • 问题:

    未能从 Visual Studio 中分析测试方法,引发 MissingMethodException。

  • 解决方法:

    没有针对此问题的解决方法。

调试和诊断

Visual Studio 2017 预览版远程工具不可用

轻量级解决方案加载问题

启用轻量级解决方案加载后,某些扩展可能会发生意外行为

  • 问题:

    启用轻量级解决方案加载后,某些扩展可能会发生意外行为。

  • 解决方法:

    禁用轻量级解决方案加载并重载解决方案。

启用轻量级解决方案加载后,无法使用“编辑并继续”

  • 问题:

    启用轻量级解决方案加载后,可能无法按预期使用“编辑并继续”。

  • 解决方法:

    使用“编辑并继续”之前,请禁用轻量级解决方案加载并重载解决方案。

启用轻量级解决方案加载后,F# 项目不会生成或支持符号导航

  • 问题:

    启用轻量级解决方案加载后,F# 项目可能无法正确生成,且符号在“转到”中可能不完全可用。

  • 解决方法:

    为包含 F# 项目的解决方案禁用轻量级解决方案加载。

启用轻量级解决方案加载时会复制警告

  • 问题:

    在启用轻量级解决方案加载的情况下生成解决方案时,生成所发出的项目文件警告可能会重复出现在错误列表中。

  • 解决方法:

    禁用轻量级解决方案加载并重载解决方案。

扩展性问题

添加自定义命令或自定义工具窗口时出错

  • 问题:

    向包含 XAML 文件的项目尝试添加自定义命令或自定义工具窗口时,可能会导致未能向项目添加自定义命令或工具窗口。 可能会出现包含文本“序列包含多个匹配元素”的错误。

  • 解决方法:

    1. 关闭所有打开的 XAML 文件。
    2. 关闭 Visual Studio。
    3. 启动 Visual Studio 并打开项目。
    4. (在加载 XAML 文件之前)向项目添加自定义命令或自定义工具窗口。

Application Insights 问题

右键单击项目时 Application Insights 可扩展提供程序加载失败

  • 问题:

    在 Visual Studio 中右键单击项目时 Application Insights 可扩展提供程序加载失败。 这是因为在加载解决方案后,可扩展提供程序会在后台线程中从 NuGet 加载二进制文件。 某些可扩展提供程序(如适用于 PHP 和 Azure Service Fabric 的可扩展提供程序)已经安装了,因此它们不存在这个问题。 Visual Studio 2017 初始版本后不久将通过自动更新对此问题进行修复。

  • 解决方法:

    使用管理员权限打开命令提示符,然后根据 Visual Studio 版本运行以下命令:

    • Visual Studio Enterprise

      • "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VsRegEdit.exe" set "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise" HKCU AppInsightsGettingStarted UseBackgroundThreadToFetchProjectInfo string Disabled
    • Visual Studio Professional

      • "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VsRegEdit.exe" set "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional" HKCU AppInsightsGettingStarted UseBackgroundThreadToFetchProjectInfo string Disabled
    • Visual Studio 社区

      • "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VsRegEdit.exe" set "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community" HKCU AppInsightsGettingStarted UseBackgroundThreadToFetchProjectInfo string Disabled

某些 ASP.NET Core 项目无法为页面视图集合添加 Application Insights JavaScript 代码段

  • 问题:

    使用不是通过 Visual Studio 2017 创建的 Application Insights 配置的 ASP.NET Core 项目将无法运行。 尝试运行此类应用会出现错误“InvalidOperationException:未注册 'Microsoft.ApplicationInsights.AspNetCore.JavascriptSnippet' 类型的服务。”

  • 解决方法:

    使用 Application Insights 配置之后,向文件 Views/Shared/_Layout.cshtml 添加一个 JavaScript 代码段。 有两种解决方法,具体取决于是否要 Application Insights 从应用收集页面视图:

    1. 收集页面视图 - 向 Program.cs 中的 WebHostBuilder 添加“.UseApplicationInsights()”。
    2. 不收集页面视图 - 从 Views/Shared/_Layout.cshtml 删除以下行:
      • @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
      • @Html.Raw(JavaScriptSnippet.FullScript)

团队资源管理器问题

如果存在孤立的 index.lock,则更改索引的 Git 命令可能会失败

  • 问题:

    如果存在孤立的 Git index.lock,则执行更改索引的 Git 命令会失败,该问题起初报告为 Git 撤消和取消暂存失败。 Git 使用此文件来向其他 Git 进程指示,该存储库已锁定要进行编辑。 如果编辑进程无响应或终止,则 index.lock file 可能会滞后并阻止其他 Git 进程编辑存储库。

  • 解决方法:

    出现此问题时,请查看存储库的 .git/ 文件夹,检查是否存在 index.lock 文件。 如果存在,且你当前并运行活动的 Git 命令,则请删除该文件。

通过 SSH 克隆失败

  • 问题:

    在团队资源管理器中通过 SSH 克隆失败。 未来更新中将提供此问题的修补程序。

  • 解决方法:

    如要使用 SSH,请从命令行克隆,然后在团队资源管理器中将存储库添加到本地存储库列表。 也可在团队资源管理器中通过 HTTP 克隆,然后在“设置”>“存储库设置”>“远程”中将远程设置为使用 SSH。

在团队资源管理器中取消 Git 命令不起作用

  • 问题:

    在团队资源管理器中取消 Git 命令(例如克隆命令)不起作用,相反,仍会完成操作。 此问题不影响其他团队资源管理器操作。

  • 解决方法:

    目前没有解决方法。

托管的工作负载开发问题

.NET 2.0/3.0/3.5 项目生成具有不正确目标的程序集

  • 问题:

    在未首先从各个组件中选择 .NET Framework 3.5 开发工具的情况下,在新计算机上安装 Visual Studio 2017 并生成 .NET 2.0(或 3.0/3.5)项目后,即使项目面向 .NET 2.0,生成后的某些程序集(例如资源)也被标记为 .NET4.0。 这是因为 Visual Studio 2017 默认不再安装 .NET Framework 3.5 SDK,而由于此 SDK 缺失,生成进程会默认为 .NET 4.X SDK。

  • 解决方法:

    .NET 3.5 SDK 现在仅为可选组件,因此如果开发面向 .NET 3.5 产品 (2.0/3.0/3.5),则安装期间仍需从各个组件选项卡中选择“.NET Framework 3.5 开发工具”。 这会在生成进程期间所使用的计算机上安装所需的 .NET 3.5 SDK。

通用 Windows 平台开发工作负荷问题

XAML 设计器不可用

  • 问题:

    开发 UWP 应用时,XAML 设计器不可用。

  • 解决方法:

    只有应用的目标平台版本等于或低于运行 Visual Studio 的 Windows 10 的版本时,XAML 设计器才可用。 例如:如果在“Windows 10 周年更新(内部版本 14393)”上运行 Visual Studio,并且 UWP 应用的目标平台版本是“Windows 10 创意者更新”,则该应用项目不能使用 XAML 设计器。 若要确保能使用 XAML 设计器,需升级到最新版本的 Windows 10。

打开 UWP 项目时需要 Visual Studio 更新

  • 问题:

    在 Visual Studio 中打开在 Visual Studio 2017 预览版中创建的项目时,可能会显示一个标题为“需要 Visual Studio 更新”的对话框,指示你安装更新的平台 SDK。 链接到此对话框的 Windows SDK 存档网站不会列出指定版本的 Windows SDK。

  • 解决方法:

    这在预料之中,因为 Visual Studio 2017 预览版包括预发布的 Windows SDK。 若要解决此问题,可在项目文件中将目标平台版本更改为要面向的 Windows SDK 版本。 对于 Windows 10 创意者更新,此版本是“10.0.15063.0”。

    1. 在项目中,右键单击并选择“编辑 [AppName].[xx]proj”,其中 [xx]proj 是.csproj、.vcxproj 等。
    2. 在项目文件“TargetPlatformVersion”(对于 C#、VB 和 JS 项目)或“WindowsTargetPlatformVersion”(对于 C++)项目属性中,将值改为”10.0.15063.0”或改为已安装的其他 SDK 版本。

卸载 Visual Studio Windows 10 SDK 导致 Visual Studio 2017 或 Visual Studio 2015 中出现 UWP 生成错误

  • 问题:

    如果卸载 Windows 10 SDK,则生成 UWP 应用时将收到以下错误:
    Cannot resolve 'GenXbf.dll' under path 'C:\Program Files\Windows Kits\10'. Please install the Windows Software Development Kit. The Windows 10 SDK is installed with Visual Studio.
    此问题会影响 Visual Studio 2017、Visual Studio 2017 预览版和 Visual Studio 2015。 执行以下操作后,计算机可能会陷入此错误状态:

    • 安装 Visual Studio 2017 和 Visual Studio 2017 预览版,然后卸载其中之一。
    • 安装 Visual Studio 2015 和 Visual Studio 2017 或 Visual Studio 2017 预览版,然后卸载其中之一。
    • 安装 Visual Studio 2017、Visual Studio 2017 预览版或 Visual Studio 2015,然后直接从“程序和功能”或通过使用 Visual Studio 安装程序卸载任何 Windows 10 SDK。
  • 解决方法:

    打开“控制面板”,然后转到“程序和功能”。 选择以下选项之一,然后单击“修复”:

    • Windows 软件开发工具包 - Windows 10.0.15063.00(创意者更新)
    • Windows 软件开发工具包 - Windows 10.0.14393.795(周年更新)

工具箱中不提供某些 XAML 控件

  • 问题:

    使用从扩展 SDK 安装的 XAML 控件时,可能无法看到工具箱中的某些控件。

  • 解决方法:

    如果想要使用这些控件,可以在 XAML 编辑器中手动添加它们。

Visual C++ 桌面版已知问题

安装 Windows 10 创意者更新 SDK (10.0.15063.0) 后,无法生成新创建的 C++ Win32 桌面应用

  • 问题:

    重构了 Windows 10 创意者更新 SDK,可默认减少安装占用的资源。 若通过 UWP 工作负载安装此 SDK,则不会安装 Win32 C++ 桌面项目所需的标头/库。 但是,Visual C++ 桌面项目会将此 SDK 检测为“已安装”,并将默认尝试定向于新创建的项目中的 10.0.15063.0。

  • 解决方法:

    在 Visual Studio 安装程序中:

  • 在“使用 C++ 的桌面开发”工作负载下,选择“适用于桌面 C++ x86 和 x64 的 Windows 10 SDK (10.0.15063.0)”功能。
  • 还可从“项目属性”对话框中选择系统上完全安装的 SDK 早期版本(例如 10.0.14393.0)。

Xamarin 问题

构建已取消,出现“项目 'project_name' 需要计算机上安装有以下组件”错误

  • 问题:

    可能需要安装其他组件,才可构建 Android 应用程序。 某些情况下可能需要此操作,例如若要使用新组件 - NuGet 包,或者如果这是在给定计算机上构建的第一个 Xamarin.Forms 解决方案。

  • 解决方法:

    • 确保 Intellisense 错误在列表中可见并且 Xamarin for Visual Studio 将检测到这些缺少的资源。 将显示一个错误,指出需要下载和安装的资源。 双击列表中的错误,以开始下载并安装缺少的组件。 需要 Intellisense 错误在列表中可见,否则无法看到该错误。 如果在未安装缺失组件的情况下在解决方案中构建任何项目,则构建操作将取消。
    • 安装缺失组件的一种可选方式是从命令行处构建。

其他问题

在 x86 计算机上无法连接到 (LocalDB)\MSSQLLocalDB

  • 问题:

    这是一个间歇性的 localDB 2014 已知问题,出现此问题时在 x86 计算机上无法连接 (LocalDB)\MSSQLLocalDB。

  • 解决方法:

    在命令提示符中运行以下命令:

    1. sqllocaldb stop mssqllocaldb。
    2. sqllocaldb delete mssqllocaldb。
    3. sqllocaldb start mssqllocaldb。

无法在 SharePoint 工作流中创建函数断点

  • 问题:

    Visual Studio 的“断点”窗格以前允许创建类型为“工作流”的断点。 此功能已被删除。

  • 解决方法:

    通过右键单击菜单在“设计器”视图中创建断点。

在工作流设计器中,SharePoint 工作流活动可能无法正确加载

  • 问题:

    如果使用工作流和 SharePoint 活动创建新的 SharePoint 外接程序或解决方案项目,在生成项目后,可能会在工作流设计器中看到如下错误:“由于 XAML 中存在的错误,导致无法加载活动”。 默认情况下,新的 SharePoint 外接程序项目面向 .NET Framework 4.5.2。 为了在工作流中使用 SharePoint 活动,项目必须面向 .NET Framework 4.5。

  • 解决方法:

    1. 从解决方案资源管理器中的上下文菜单或通过项目菜单访问项目属性。
    2. 在“应用程序”选项卡上,将“目标框架”设置为 .NET Framework 4.5。

使用动态值时,可能无法生成包含工作流的 SharePoint 项目

  • 问题:

    可能无法生成包含工作流的 SharePoint 项目,并出现以下错误:“命名空间 'Microsoft' 中不存在类型或命名空间名称 'Activities' (是否缺少程序集引用?)”。

  • 解决方法:

    1. 在解决方案资源管理器中选择文件后,请在解决方案资源管理器中展开工作流节点,并通过按 F7 或通过上下文菜单查看项目中 workflow.xaml 文件的代码。
    2. 将以下引用添加到 部分: Microsoft.Activities

SharePoint 外接程序项目向导可能无法正确检测项目面向的 SharePoint 的版本

  • 问题:

    创建 SharePoint 外接程序项目时,新建项目对话框将基于你提供的站点 URL 尝试检测 SharePoint 的正确版本。 但是,如果还安装了 Visual Studio 2015 或旧版 SharePoint 客户端组件,则新建项目对话框可能会错误地判定项目面向的是 SharePoint 2016 而非 SharePoint Online。

  • 解决方法:

    对于新项目,在创建新 SharePoint 外接程序项目时,请确保并验证新项目对话框的最后一页已选择项目所面向的 SharePoint 的正确版本。 对于现有项目,可以通过执行以下操作更改项目所面向的 SharePoint 的版本:

    1. 从解决方案资源管理器中的上下文菜单或通过项目菜单访问项目属性。
    2. 在 SharePoint 选项卡上,将目标 SharePoint 版本设置为项目所面向的 SharePoint 的正确版本。

Office Web 外接程序项目可能在错误列表中包含警告

  • 问题:

    _officeintellisense.js 文件包含对 Office 对象的声明,该对象与 office.d.ts 文件中声明的对象冲突。

  • 解决方法:

    这些警告不会影响项目,你可以删除这些警告,删除方式是注释掉 Scripts\Office\ _officeintellisense.js 文件中额外的“var Office”声明或在解决方案资源管理器中使用“从项目排除”上下文菜单从项目中排除此文件。

Visual Studio 生成工具 SKU 的 Web 开发工具工作负载中不包含面向 .NET 的包

  • 问题:

    Visual Studio 生成工具 SKU 中的 Web 开发工具工作负载不包含任何面向 .NET 的包。 这意味着 .NET 二进制文件仅可生成为面向 4.6。

  • 解决方法:

    从 Microsoft 手动下载面向 .NET 的包并将其安装到生成计算机。

通过通配包含的文件如果位于项目根目录外,将不会显示在解决方案资源管理器中

  • 问题:

    对于 .NET Core 和 ASP.NET Core 项目,由通配模式包括的任何文件只有包含在项目根目录下才会显示在解决方案资源管理器中。 不会显示位于项目根目录之外的任何文件。 打开“显示所有文件”不能解决此问题。 也无法通过“搜索”、“在文件中查找”、“转到”或“转到定义”导航到这些文件。

  • 解决方法:

    对于在解决方案资源管理器中显示缺少的文件或导航到这些文件,目前没有已知的解决方法。 但是,生成和调试这些项目应该不会遇到任何问题。 在大多数情况下,通过手动打开这些文件即可正常编辑它们。 建议暂时使用单独链接的文件来代替外部通配模式。

VS Test Professional 2017 SKU 不具备团队资源管理器,限制了对 Excel-based/SSRS-based reports from TFS Warehouse/Cube 的访问

  • 此问题现已在版本 15.1 (26403.00) 中修复:

    VS 团队资源管理器不再随附 VS Test Professional SKU 一并安装,该管理器用于访问 Excel-based/SSRS-based based reports from TFS Warehouse/Cube。 此问题不会影响到 Microsoft 测试管理器 (MTM) 客户端 – 它将继续工作,不会产生任何已知问题。