Visual Studio 2017 版本 15.5 发行说明
开发人员社区 | 系统要求 | 兼容性 | 可分发代码 | 许可条款 | 博客 | 已知问题
注意
此版本不是最新版本的 Visual Studio。 若要下载最新版本,请访问 Visual Studio 网站。
支持的时间范围
此版本现已不受支持。 有关 Visual Studio 支持的详细信息,请查看 Visual Studio 2017 的支持策略。
请参阅最新版本的发行说明或访问 Visual Studio 站点,下载最新支持的 Visual Studio 2017 版本。
Visual Studio 博客
可从 Visual Studio 博客获取来自 Visual Studio 工程团队的官方产品见解。 有关 Visual Studio 15.5 版发布的详细信息,可参阅以下文章:
- Visual Studio 2017 15.5 版 -- 阅读最新博客文章!
Visual Studio 2017 版本 15.5 发布
- 2018 年 2 月 20 日 - Visual Studio 2017 版本 15.5.7
- 2018 年 1 月 29 日 -- Visual Studio 2017 15.5.6 版
- 2018 年 1 月 25 日 -- Visual Studio 2017 15.5.5 版
- 2018 年 1 月 16 日 -- Visual Studio 2017 15.5.4 版
- 2018 年 1 月 9 日 -- Visual Studio 2017 版本 15.5.3
- 2017 年 12 月 14 日 -- Visual Studio 2017 15.5.2 版
- 2017 年 12 月 7 日 -- Visual Studio 2017 15.5.1 版
- 2017 年 12 月 4 日 -- Visual Studio 2017 15.5 版
15.5 版中的主要新增功能摘要
- 向 Visual Studio IDE 安装程序添加了可靠性和可取消性。
- 更新的“错误”对话框可以显示详细信息,有助于解决安装问题。
- 针对大型 C# 和 Visual Basic 项目缩短了加载时间。
- 现在可以使用 Git 子模块和工作树,并在团队资源管理器中配置
fetch.prune
和pull.rebase
。 - 查找有关 .NET Core 和 ASP.NET Core 安全建议的信息。
- MSVC 编译器工具集已更新为 14.12 版。
- C# 编译器现在支持 7.2 版语言功能集。
- 添加了 对 F# 工具的 .NET Core SDK 项目支持,同时更改了获取 F# 的方式。
- 向标准模块库添加了 Visual C++ 改进功能。
- 改进了 Visual Studio Web 工具中的 Razor 语法格式设置。
- Docker 容器现在支持多阶段的 Dockerfile。
- 对于内联和 .ngml 模板文件,现在已提供 Angular 2 支持。
- 现在可在 Visual Studio 中打开从 ARM 联机编译器中导出的项目。
- 打开的文件夹现在支持远程任务使用任何远程生成系统或运行任意命令。
- 添加了对调试时的嵌入式源支持,以及对嵌入式 PDB 的“编辑并继续”支持。
- 用于 .Net Core 的 WCF Web 服务引用现在已纳入 Visual Studio 15.5 版。
- 可以使用快照调试程序对生产中的应用进行调试。
- 现在支持使用 IntelliTrace 的后退调试功能。
- 可以从 Visual Studio 访问启用了条件访问 Azure 资源。
- Office Web 加载项项目和 VSTO 项目现在支持使用 Windows 应用商店中的 Office 进行开发。
- Visual Studio Tools for Xamarin 包含对用于 iOS 和 Android 的 Xamarin SDK 的更新的支持。
- 添加或删除 Unity 脚本时,Unity 项目现在会在 Visual Studio 中自动重载。
- 测试资源管理器现在默认支持 Google Test 框架。
- 在 Android Emulator 中,现可在键入时实时预览 XAML。
- Windows 打包项目现在使你能够包括 UWP 组件,如:
BackgroundTasks
、AppServiceConnection
或FullTrustProcessLauncher
。 - 现在可以从项目发布工作流配置持续交付,以便在每次对存储库进行代码更改时自动将项目部署到 Azure。
15.5 版中解决的首要问题
这些是已在此版本中解决的客户报告的问题:
- Save All tries to save closed .sql query tabs(“全部保存”尝试保存已关闭的 .sql 查询选项卡)。
- bin\roslyn files locked during build(在生成期间锁定了 bin\roslyn 文件)。
- Since Visual Studio 2017 version 15.3, breakpoints don't work when the charset of the file is not the same as the one in .editorconfig (utf8 or utf8-bom)(自 Visual Studio 2017 15.3 版以来,当文件的字符集与 .editorconfig(utf8 或 utf8-bom)中的字符集不同时,断点将不起作用)。
- Package 'Microsoft.Net.4.6.FullRedist.NonThreshold,version=4.6.81.9' fails to repair(未能修复包“Microsoft.Net.4.6.FullRedist.NonThreshold,version=4.6.81.9”)。
- Visual Studio 2017 has a conflict with OneDrive on demand (Windows 10 insider build)(Visual Studio 2017 与 OneDrive on Demand(Windows 10 会员版本)之间存在冲突)。
- Access Denied error when creating registry keys on Windows 7(在 Windows 7 上创建注册表项时出现“拒绝访问”错误)。
- Disabled startpage is opened when project is closed(关闭项目时,会打开禁用的 startpage)。
- Missing icons after update(更新后缺少图标)。
- Visual Studio 2017 works slowly during ASP.NET debugging(在 ASP.NET 调试期间,Visual Studio 2017 运行缓慢)。
- Visual Studio 2017 builds slowly(Visual Studio 2017 生成缓慢)。
- Visual Studio may freeze or crash when running on a pen-enabled machine(在启用触笔的计算机上运行时,Visual Studio 可能会卡住或崩溃)。
请参阅 Visual Studio 2017 15.5 版中已解决的所有客户所报问题。
15.5 中新增功能的详细信息
Visual Studio 2017 版本 15.5.0
发布日期:2017 年 12 月 4 日
15.5 版中的新增功能
Visual Studio IDE
设置和安装
- 安装程序现在可在安装期间生成 Windows 还原点。
- “添加和删除程序”现在具有适用于每个 Visual Studio 安装的条目。 Visual Studio 安装程序现在支持修改和卸载每个条目。
- 从脱机布局进行的安装不再需要在已断开连接的计算机上安装中间证书。
- 我们改进了安装和更新过程中的可靠性和可取消性。
更新了“错误”对话框
更新后的“错误”对话框可以显示详细信息,有助于使用 Visual Studio 开发人员社区的潜在解决方案解决安装问题。 (图 1)。
性能
- 针对大型 C# 和 Visual Basic 项目缩短了加载时间。
- 缩短了在调试和发布之间切换配置的时间。
- 减少了在 .NET Core 项目中添加、删除和重命名文件和文件夹所需的时间。
- 已弃用轻量级解决方案加载 (LSL),因为未使用 LSL 的解决方案加载时间会减少。
连接的服务
- 更新后的 Azure 存储服务提供程序支持面向 .NET Core 的 ASP.NET Core 项目。
团队资源管理器更新
团队资源管理器的最新更新的灵感来源于 UserVoice 上的用户反馈。
现在可以使用 Git 子模块和工作树,并在团队资源管理器中配置 fetch.prune
和 pull.rebase
。
Visual Studio 现在将 Git 子模块和工作树视为常规存储库。 只需将它们添加到本地存储库列表即可获取编码!
请注意,仍不能对子模块执行需要多个存储库支持的任何操作,例如同时查看父存储库和子模块中的文件。
此外,现在可以更轻松地设置 Git 默认行为,使其可以修剪每个提取以及对每个拉取执行变基操作。 修剪每个提取会删除不再存在于服务器上的本地跟踪分支,有助于将分支列表保持干净和最新。 对每个拉取执行变基操作有助于将提交历史记录保持线性,使其更易于关注。 可以在“全局和存储库”设置中找到这些选项。
.NET Core 和 ASP.NET Core 安全建议
Microsoft 已发布面向 .NET Core 和 ASP.NET Core 的安全建议。 有关详细信息,请参阅 .NET Core 和 ASP.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 拒绝服务漏洞:ASP.NET Core 1.0、1.1 和 2.0 中存在安全漏洞,当通过 Windows Http.Sys 托管该应用程序时,Windows Http.Sys 中格式不正确的请求可能导致拒绝服务。
使用 ASP.NET Core 1.0、ASP.NET Core 1.1 和 ASP.NET Core 2.0 创建的新项目现在使用包含以上安全更新的包版本。 对于现有项目,用户可以使用“管理 NuGet 程序包”对话框将包更新到较新版本。
MSVC 编译器工具集
在 Visual Studio 2017 15.5 中,生成工具中的 MSVC 编译器工具集的版本已更新至 14.12,这与 15.4 版本 14.11 工具集兼容。 升级到 Visual Studio 2017 15.5 后,如果在编译代码时出现问题,可以强制并行安装 14.11 工具集和 14.12 工具集。 安装 C++ 桌面工作负载后,可以在“单个组件”选项卡下选择 Visual Studio 2017 15.4 工具集 (14.11)。
C# 编译器中的新增功能
C# 编译器现在支持 7.2 版语言功能集,包括:
- 支持通过
ref struct
修饰符在整个 Kestrel 和 CoreFX 中使用Span<T>
类型。 readonly struct
修饰符:强制结构的所有成员成为readonly
。 这增加了代码的正确性,也允许编译器在访问成员时避免对值进行不必要的复制。in
参数/ref readonly
返回:允许安全传递和返回不可修改的结构,并且与ref
值具有等同的效率。private protected
访问修饰符:限制访问protected
和internal
的交集。- 非尾随命名参数:现在可在参数列表中使用命名参数,不需要所有的尾随参数也通过名称进行传递。
Visual Studio Tools for Xamarin
此版本包含对用于 iOS 和 Android 的 Xamarin SDK 的更新的支持:
实时运行当前视图
使用新的实时运行当前视图功能可更加轻松地构建基于 XAML 的用户界面(图 2)。 构建用户界面时,在 Android Emulator 中键入的内容实时实现,无需保存、编译或重新部署应用。
Xamarin Live Player
通过 Xamarin Live Player,开发人员可直接在 iOS 和 Android 设备上持续部署、测试和调试应用。 下载 Xamarin Live Player 应用(可在 App Store 或 Google Play 中获取)后,可将设备与 Visual Studio 配对,仅使用 Visual Studio 和移动设备开始生成移动应用。 由于针对 Xamarin.Forms 进行了优化,现在可以修改其 XAML,并在设备上随时查看所反映的更改,无需编译或等待完整部署。 此版本极大地改进了 Xamarin Live 功能,包括:
- 更智能的调试和实时运行:当调试 Xamarin Live Player(图 3)时,Live Player 现在会自动将启动项目调整到适当的平台。 例如,如果选择了 iOS,且配对的 Live Player 设备是 Google Pixel,IDE 会建议将启动项目更改为 Android。
- 部署状态:现在可以通过状态栏中的部署状态,跟踪 Xamarin Live Player 的“调试”状态。
- 控制台和错误窗口集成:在 Visual Studio 中,在应用中记录的输出现在显示于控制台窗口内,错误将显示于错误窗口中。
- 实时运行上下文菜单和键盘快捷方式:为了便捷地即时可视化你的 XAML UI,我们添加了上下文菜单和键盘快捷方式,从而轻松快捷地预览你的 XAML 页面。
- 实时运行文档切换:当生成出 UI 时,通常会在不同 XAML 文档间切换。 更改 Visual Studio 中的活动文档自动实时运行打开的任意 XAML 页面,因此用户可以轻松地在不同页面间来回切换,并将其即时反映到设备上。
模板
“文件”->“新建项目”->“移动应用” (图 4)的操作更加简单,这归功于 iOS、Android 和 Windows 应用的跨平台模板向导更新,包括:
- .NET Standard 支持 - 现在可以创建将 .NET Standard 2.0 用作代码共享策略的新的跨平台 Xamarin 应用。
- 目标平台复选框 - 通过“文件”->“新建”,选择所需的平台。
PackageReference
- 现在所有模板默认使用PackageReference
,这是在 Xamarin 应用中轻松管理 NuGet 包的新方法。- 展开性能的改进 - 模板现在的展开速度应比之前快得多。 在最极端情况下,可能会看到展开时间提升了至多 40 倍。
远程 iOS 模拟器
远程 iOS 模拟器提供完全从 Windows 版 Visual Studio 调试和测试模拟器上的 iOS 应用的简单办法。 它支持 Mac 上的 iOS 模拟器可执行的所有内容,甚至更多 - 包括多点触控支持! 现在,从 Visual Studio 2017 15.5 版开始,远程 iOS 模拟器在所有 Visual Studio 版本中可用,包括免费的 Community Edition。
Xamarin Android SDK 管理器
新的 Xamarin Android SDK 管理器简化了对 Android SDK 的管理。 可以在 Visual Studio 中转到“工具”->“Android”->“Android SDK 管理器”来使用新的 SDK 管理器。
F# 工具改进
在 Visual Studio 2017 15.5 版中,我们侧重于面向 .NET Core SDK 项目的 F# 工具支持。 现在支持以下内容:
- 可以从“文件”>“新建项目”创建新的 .NET Core 控制台应用、.NET Standard 库和 .NET Core 单元测试项目。
- 我们为现有的 .NET Core 和 .NET Standard 项目添加了支持。
- 还为面向 .NET Framework 版本的现有 .NET Core SDK 项目添加了支持。
- 支持项目到项目的引用。
- 添加了对 Web SDK 项目的支持(例如,使用 Giraffe 模板的 F# ASP.NET Core 项目或其他项目)。
- 现在可以在 Web SDK 项目中右键单击“发布工具”。
- 支持使用 Visual Studio Team Services 工具自动生成 CI/CD 管道。
此外,对不侧重于 .NET Core SDK 项目的 Visual F# 工具也作出了几处改进。 它们包括:
- 从 F# 定义转到 C# 定义,由 Saul Rennison 和 Vasily Kirichenko 提供。
- 为蓝色(额外对比度)主题着色,由 Microsoft 和 Vasily Kirichenko 提供。
- 属性页现在可以在不同的监视器上自动调整大小。
- 缩进设置为“智能”时,智能自动缩进新行,由 Duc Nghiem Xuan 提供。
- 缩进设置为“智能”时,自动取消缩进右括号,由 Saul Rennison 提供。
- 枚举字段现在在工具提示、查找所有引用、转到所有和内联重命名中显示为符号,由 Vasily Kirichenko 提供。
- 由换行符分隔的 XML 文档注释不会预置到当前的悬停 XML 文档注释中,由 Vasily Kirichenko 提供。
- CHBen 已更正 ref 关键字的 XML 文档。
- 多个 bug 修复和性能改进。
请在 GitHub 存储库上记录遇到的任何问题。
F# 设置中的更改
获取 F# 的方式已发生更改:
- 如果安装了需要 .NET Core 2.0 的工作负载,还会默认安装 F# 语言支持。 .NET Core、ASP.NET 和 Azure 工作负载现在会执行此操作。
- .NET 桌面开发、数据存储和处理以及数据科学和分析应用程序工作负载中的“F# 语言支持”复选框已重命名为“F# 桌面支持”。
F# 4.1 编译器改进
此版本的 F# 4.1 编译器中修复了大量 bug:
- 改进了 F# 编译器中的 PDB 生成,修复了在 2014 年发现的调试 F# 时出现的五个已知问题。
- 修复了编译器错误解析记录字段的问题,由 Vasily Kirichenko 提供。
StartAsTask
现在正常地等待取消完成,由 Matthias Ditrich 提供。- 现在仅在属性中使用类型时才会创建程序集引用。
- 具有相同事例名称的单用例结构的可区分联合不再自动转换为对象类型。
- 在
MailboxProcess
上可能无限异步循环。 已修复接收问题。
Visual C++ 改进
现在可以通过“文件”>“打开”>“CMake”将现有的 CMake 项目和缓存配置导入到 IDE 中。
ARM 联机编译器导出的“打开文件夹”支持
在适用于嵌入式项目和 IoT 项目的 Linux C++ 工作负载中选择选项,然后便可编辑和编译面向 ARM 微控制器的项目。 我们支持打开作为 GCC 从 ARM 联机编译器导出的项目,然后可从 Visual Studio 中对这些项目执行本地交叉编译操作。 有关详细信息,请参阅关于使用 Visual C++ 进行 ARM 开发的博客文章。
远程任务
“打开文件夹”现在支持远程任务。 即通过安全外壳 (SSH) 在远程系统上执行的任务。 这些任务还可以配置为将文件复制到目标计算机,用来在 Linux 系统上执行编译代码等操作。 若要了解详细信息,请参阅关于在 Visual Studio 中使用远程任务的博客文章。
标准模板库的改进
开放标准网站保存了一些介绍组如何生成开放标准的页面。 我们针对 C++17 标准,向标准模板库添加了以下改进:
not_fn()
:P0005R4 建议采用库基础知识 TS v2 的not_fn
函数绑定器来替换旧的求反器not1
和not2
。- 重新组织
enable_shared_from_this
:P0033R1Re-enabling shared_from_this
。 - 弃用残留库部分:P0174R2。 通过近年来不断增加新功能,许多 C++ 标准库的功能已被取代,或我们已知道这些功能无法达到其最初的预期用途。 本文建议在可以选择更好、更简单或更清晰的功能时,弃用这些功能。
- 删除
std::function
中的分配器支持:P0302R1。 类模板 std::function 具有采用分配器参数的多个构造函数,但其语义并不明确,且会在执行以下操作时出现技术问题:在清除类型的上下文中存储分配器,以及随后恢复该分配器以进行副本分配期间所需的任何分配。 应删除这些构造函数。 - 对
not_fn()
的修复:P0358R1。 除了其他改进之外,也对std::not_fn
提出了新措词建议,提供对在调用包装器时传播值类别的支持。 shared_ptr<T[]>
、shared_ptr<T[N]>
:P0414R2。 将库基础知识中的shared_ptr
更改合并到 C++17。- 修复数组的
shared_ptr
:P0497R0。 修复数组的shared_ptr
支持。 - 弃用
shared_ptr::unique()
:P0521R0。 对 CA 14 的建议解决方法 (shared_ptr use_count/unique
)。 - 弃用
codecvt
:P0618R0<codecvt>
不是解决 Unicode 转码问题的最佳方法,应停用附录 D 的此库组件。 - 删除动态异常规范:P0003R5。 C++11 已弃用动态异常规范。 从 C++17 中删除该功能,同时将(仍)弃用的 throw() 规范严格保留为 noexcept(true) 的别名。
- 拼接映射和集:P0083R3。 此设计允许拼接所有类型的操作、将元素(包括映射键)移出容器并进行一些其他有用的操作和设计。 这改进了关联和无序的关联容器,从而支持对节点的操作。 这是标准库中的新增功能。
- 阐明
insert_return_type
:P0508R0。 有唯一键的关联容器和有唯一键的无序容器均有一个返回嵌套类型insert_return_type
的成员函数插入。 该返回类型是本节中指定专用类型。 - STL 的内联变量:P0607R0。
Visual C++ 编译器改进
Visual C++ 编译器支持 75% 的 C++17 功能,包括结构化绑定、constexpr
lambda、if constexpr
、内联变量、fold 表达式、hexfloat 文本和将 noexcept
添加到类型系统。 这些功能位于 /std:c++17
开关下。 /permissive-
符合模式包括对两阶段名称查找的部分支持,以及对可变参数模板改进的包扩展支持。 此外,/permissive-
模式已作为新语言下拉菜单添加到 C++ 项目的项目属性中。
Visual C++ 优化器改进
C++ 代码生成团队已改进了现有的编译器优化,并在 15.5 版中添加了新的优化。
选择链接器改进:
选择对现有优化的改进:
- 改善了条件表达式的向量化启发式。
- 增强了
loop-if-unswitching
优化。 - 改进了循环展开。
- 改进了 float 的最大/最小 codegen。
选择新的优化:
- 改进并删除了对 SSA 优化器的冗余(和部分冗余)说明。
- 优化了对条件标量存储的矢量化。
- 将
sin(x)
和cos(x)
调用合并到sincos(x)
。
Visual C++ 支持 Intel AVX-512,包括将 AVX-512 中的新函数引入位宽为 128 和 256 的寄存器的向量长度说明。
我们将在 C++ 代码分析中传送 20 余个新 C++ Core Guidelines 检查。 这些检查包含智能指针正确性、全局初始化表达式的正确使用和标记构造(如 goto
和 bad_cast
)的使用。
15.3 中可能存在的一些警告编号在 15.5 中不再可用。 这些警告被更具体的检查替换。
Google Test 和 Boost.Test 框架的内置支持
在 Visual Studio 中写入、发现并运行 Google Test 和 Boost Test 单元测试。 测试资源管理器现在默认支持 Google Test 和 Boost.Test 框架。 若要升级之前的 Visual Studio 安装,请打开 Visual Studio 安装程序,单击 Visual Studio 实例上的“修改”,然后选中“使用 C++ 的桌面开发”下的“Google Test 测试适配器”和“Boost.Test 测试适配器”框。 轻松创建新的 Google Test 项目:选择“文件”>“新建”>“项目”>“Visual C++”>“测试”>“Google Test”。
有关详细信息,请参阅 Microsoft Docs 上的 How to use Google Test for C++ in Visual Studio(如何在 Visual Studio 中使用适用于 C++ 的 Google Test)和 How to use Boost.Test for C++ in Visual Studio(如何在 Visual Studio 中使用适用于 C++ 的 Boost.Test)页。
Visual Studio Web 工具
- 改进了 Razor 语法的格式设置。
- 我们改进了将 ASP.NET 应用程序发布到 Azure 虚拟机的体验。
Docker 容器工具
- Visual Studio 中用于 Docker 容器的工具现在支持多阶段的 Dockerfile,简化了创建优化容器映像的过程。
- 如果在运行 Windows 10 1709 版或 Windows Server 1709 版的计算机上运行 Visual Studio,容器映像将默认使用 Windows Server 1709 版。 可以编辑 Dockerfile 来更改此操作。 请注意,使用 Windows 较旧版本的容器映像将仅在 Windows 10 1709 版和 Windows Server 1709 版上以 Hyper-V 隔离模式运行。 有关更多详细信息,请参阅 Windows 容器版本兼容性页。
- 默认情况下,当打开具有 Docker 支持的项目时,Visual Studio 会在后台自动拉取、生成并运行必要的容器映像。 可以通过 Visual Studio 中的“在后台自动启动容器”设置禁用此操作。
TypeScript/JavaScript 改进
Angular 2 支持
Angular2 开发人员现在可以在内联模板和 .ngml 模板文件中看到错误信息、完成情况和代码导航。 请参阅示例存储库获取概述和说明。
性能改进
我们在 JavaScript/TypeScript 文本编辑器项目选项页面下添加了“仅分析包含在编辑器中打开的文件的项目”复选框。 此选项将提高大型解决方案中的性能和可靠性。 请注意,选中此框后,需要执行解决方案生成才能查看所有文件中 TypeScript 错误的完整列表。
我们修复了一个问题,该问题导致 TypeScript/JavaScript 语言服务使用的内存超出预期,也可能导致在多个项目的解决方案中加载 TypeScript 的错误版本。
Windows Communication Foundation (WCF) 工具
连接到服务提供程序的 WCF Web 服务引用(图 5)现在已包含在 Visual Studio 15.5 中。
若要使用此工具,请右键单击 .Net Core 项目中的“依赖项”项目项,然后选择“添加连接服务”选项,并输入要为其生成代码的 Web 服务的地址。 生成的 WCF 客户端代理代码保存到 C# 文件中,该文件会自动添加到你的项目中。 这允许基于 .NET Core 的代码与 Web 服务轻松通信。
请访问 GitHub 中 WCF Web 服务引用的发行说明,获取更多详细信息。
调试和诊断
使用快照调试程序对生产中的应用进行调试
现在可以使用吸附点和记录点对在 Azure App Service 中运行的 ASP.NET 和 ASP.NET Core 应用程序进行调试,此过程对应用几乎没有任何影响。
- 设置吸附点(图 6),使其捕获应用状态,包括本地、监视和调用堆栈。 与断点不同,应用不会在命中吸附点时停止。
- 使用记录点(图 7)记录应用的新消息,无需添加代码或重新部署应用程序。
嵌入式源和嵌入式 PDB 支持
凭借嵌入式源,Visual Studio 调试器现在可以直接从 PDB 文件提取并使用托管二进制文件的源文件。 将嵌入式源与嵌入式 PDB 相合并以创建完全独立的可调试二进制文件。 深入了解使用 /embed 编译器开关。
现在在使用嵌入式 PDB 生成时,还可以使用“编辑并继续”调试托管代码。
使用 IntelliTrace 调试时后退
使用新的 IntelliTrace 后退调试功能IntelliTrace 自动针对每个断点和调试程序步骤拍摄应用程序快照。 这样便可以返回到上一个断点或步骤,并查看当时应用程序的状态。
此功能在 Windows 10 周年更新及更高版本中提供,目前支持调试 ASP.NET、WinForms、WPF、托管控制台应用和托管类库(图 8)。 要启用此功能,请转到“工具”>“选项”>“IntelliTrace”设置,然后选择“IntelliTrace 事件和快照”。
从 Visual Studio 访问启用了条件访问的 Azure 资源
Visual Studio 现在支持访问启用了条件访问的 Azure 资源,这需要用户使用 2FA 进行身份验证(即使帐户本身不需要使用 2FA)。 以前,如果用户帐户需要使用 2FA 登录,Visual Studio 会出现 2FA 提示,然后用户便可访问需要 2FA 的任何资源;但如果用户帐户不需要使用 2FA,Visual Studio 将无法访问这些 2FA 资源。
现在,如果帐户不需要使用 2FA 但资源需要,用户可以不使用 2FA 并在 Visual Studio 中对帐户进行身份验证,当用户首次尝试访问需要 2FA 的 Azure 资源时,Visual Studio 会提示用户重新进行身份验证且要求使用 2FA 来启用对资源的访问。
Windows 应用商店中用于 Office 的 Office 工具支持
Office Web 加载项项目和 VSTO 项目现在支持使用 Windows 应用商店中的 Office 进行开发。 可以使用 Windows 应用商店中的 Office 创建、生成、调试和发布 Web 加载项项目和 VSTO 项目。
- 用于 Windows 10 的 Fall Creators Update(1709 版)和 Windows Server 2016 需要使用 Office 工具和 Windows 应用商店中的 Office。
适用于 Unity 的 Visual Studio 工具
- 从 Unity 添加或删除脚本时,Unity 项目现在会在 Visual Studio 中自动重载。
- 修复了在使用后端为 IL2CPP/.NET 4.6 的 UWP 游戏时 .Player 项目的生成问题。
- 引入了使用由 Xamarin 和 Visual Studio for Mac 共享的 Mono 调试程序选项,用于调试 Unity 编辑器。
Live Unit Testing
- 现在 Live Unit Testing 的生成在进程外提升了 Visual Studio 中的内存使用率。
Windows 打包
我们在打包项目中添加了支持以包含 UWP 应用程序和组件,这些应用程序和组件有助于从现有桌面应用程序利用最新的 Windows 10 功能。 若要包含 UWP 组件,可向 UWP 应用程序 Add Reference
(图 9)。
与现有 UWP 项目一样,可以使用应用商店包向导来生成将桌面桥应用程序提交到应用商店的所需文件。
Visual Studio 2017 版本 15.5.1
发布日期:2017 年 12 月 7 日
15.5.1 版中解决的首要问题
这些是已在此版本中解决的客户报告的问题:
- Wrong
xamarin.forms
version referenced in template(模板中引用了错误的 xamarin.forms 版本)。 - Switching branches in Git breaks IntelliSense(切换 Git 中的分支将导致 IntelliSense 中断)。
- Errors reported when none exist (Visual Basic projects)(当不存在错误时报告错误(Visual Basic 项目))。
- Xamarin 现在支持 Xcode 9.2:
Visual Studio 2017 版本 15.5.2
发布日期:2017 年 12 月 14 日
15.5.2 版中解决的首要问题
这些是已在此版本中解决的客户报告的问题:
- Xamarin Android 项目无法生成,因为正在使用
R$anim.class
- 未能加载包
MonoAndroidDesignerPackage
。 - 在尝试优化 blake2.cpp 时,采用默认优化的 Crypto++ 进入了无限编译。
- 从 VS2017 15.4 迁移到 15.5 时导致 CS026 - “找不到类型或命名空间名称 XXX...”错误。
- 安装
Option Strict On
的 Visual Studio 2017 Community 15.5 时在 VB 项目中产生了 Intellisense 错误。 - 尝试优化 blake2.cpp 时出现无限编译时间。
- VS 15.5 优化器中发生随机引擎崩溃。
- (从 VS 15.4)迁移到 VS 15.5 时无法编译
mhook:disasm_x86.c
。 - Unity + 新 VS Community 15.5 安装结果在命名空间中无法识别.
Visual Studio 2017 版本 15.5.3
发布日期:2018 年 1 月 9 日
15.5.3 版中的更新摘要
适用于 .NET Core 的 Microsoft 安全建议
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 版本。
15.5.3 版中解决的首要问题
这些是已在此版本中解决的客户报告的问题:
- Error C3821 in
xlocale
in c++/clr.(c++/clr 中xlocale
的错误 C3821。)) - Using header inside unmanaged code section of a managed C++/CLI project no longer builds.(使用托管 C++/CLI 项目的非托管代码部分中的标题不再生成。)
- VS2017 with WDK 10 fails during remote provision KM.(VS2017 和 WDK 10 在远程配置 KM 期间失败。)
- Visual studio tools for Unity failed to convert debug symbols after upgrading to VS 15.5.(Visual Studio Tools for Unity 在升级到 VS 15.5 后无法转换调试符号。)
- 请找出有关 .NET Core 的 Microsoft 安全建议的新信息。
Visual Studio 2017 版本 15.5.4
发布日期:2018 年 1 月 16 日
15.5.4 版中解决的首要问题
这些是已在此版本中解决的客户报告的问题:
- 调试器无法继续运行该进程。 不支持操作。 未知错误:0x9233000b。
- Recent Projects and Solutions not populated once executed(未填充的最近使用项目和解决方案一次执行)。
- Full build every time with 15.5(15.5 版本中每次都完全生成)。
- Wrong IntelliSense errors are still shown on VS 15.5.2 for Visual Basic projects(用于 Visual Basic 项目的 VS 15.5.2 仍显示错误的 IntelliSense 错误)。
- VS2017 15.5.2 Unresolved references when "Allow parallel project initialization" is enabled(启用“允许并行项目初始化”时,出现 VS2017 15.5.2 未解析引用)。
- Upgrading to 15.5.2: cannot launch nor repair VS(升级至 15.5.2:无法启动或修复 VS)。
- VS2017 Installation issue(VS2017 安装问题)。
- Unable to install because of BSoD(因 BSoD 而无法安装)。
Visual Studio 2017 版本 15.5.5
发布日期:2018 年 1 月 25 日
15.5.5 版中的更新摘要
- MSVC 编译器已更新,提供对 /Qspectre 开关的支持,当编译器检测到 Spectre 变体 1 的实例时,此开关会自动插入推理屏障。 有关 /Qspectre 的详细信息,请参阅 Visual C++ 团队博客。
15.5.5 版中解决的首要问题
这些是已在此版本中解决的客户报告的问题:
- Xamarin 应用会引发“
Cannot access a disposed object. Object name: 'MobileAuthenticatedStream'
”错误。 - 当派生自
Application
类时,Xamarin.Android 应用会引发ClassNotFoundException
。 - 升级可能会导致卸载以前安装的 Windows 和 Android SDK。
- 将 JDK 8 更换为最新版本,以避免从 Oracle 网站下载失败。
Visual Studio 2017 版本 15.5.6
发布日期:2018 年 1 月 29 日
15.5.6 版中的更新摘要
Visual Studio 2017 版本 15.5.7
发布日期:2018 年 2 月 20 日
15.5.7 版中的更新摘要
- 团队资源管理器支持 TLSv1.2。 我们已更新随附 Visual Studio 提供的 Git 和 Git 凭据管理器组件。 另外还更新了可选的适用于 Windows 的 Git 组件。 此更新允许 Git 连接到不再支持 TLSv1 和 TLSv1.1 而支持 TLSv1.2 的服务。
15.5.7 版中解决的首要问题
这些是已在此版本中解决的客户报告的问题:
- Visual Studio 2017 15.5 版不支持面向 .NET Core 2.1 或更高版本的项目。
- 修复了安装 SDK for .NET Core 2.1 或更高版本会导致创建 ASP.NET Core 2.0 Web 应用程序选项消失的问题。
已知问题
我们一直坚持听取用户的反馈。 若要查找最新问题、记录新问题和投票赞成现有问题,请访问开发人员社区站点。
查看 Visual Studio 2017 15.5 版中全部现有已知问题和可用解决办法。
反馈和建议
我们期待你的宝贵意见和建议! 如有问题,请通过安装程序或 Visual Studio IDE 右上角的“报告问题”选项告知我们。 图标位于右上角。 可以在 Visual Studio 开发者社区中提出产品建议或跟踪问题,也可在其中提问、寻找答案和建议新功能。 此外,还可通过实时聊天支持获得免费安装帮助。
博客
通过参考开发人员工具博客网站中的见解和建议,随时掌握所有新版本的最新最全资讯,并发表有关大量功能的深入分析帖子。
Visual Studio 2017 发行说明历史记录
若要详细了解以往 Visual Studio 2017 版本的相关信息,请参阅 Visual Studio 2017 发行说明历史记录页。