2019LogoVisual Studio 2019 16.1 版发行说明



开发者社区 | 系统要求 | 兼容性 | 可分发代码 | 发布历史记录 | 许可条款 | 博客 | Visual Studio 新增功能文档


注意

此版本不是最新版本的 Visual Studio。 若要下载最新版本,请访问 Visual Studio 网站。



Visual Studio 2019 版本 16.1 中的新增功能

支持的时间范围

此版本现已不受支持。 有关 Visual Studio 支持的详细信息,请查看 Visual Studio 2019 的支持策略

请参阅最新版本的发行说明或访问 Visual Studio 站点下载最新支持的 Visual Studio 2019 版本。

Visual Studio 2019 版本 16.1 发行版

Visual Studio 2019 博客

可从 Visual Studio 2019 博客获取来自 Visual Studio 工程团队的官方产品见解。 有关 Visual Studio 2019 版的详细信息,可参阅以下文章:


Release Notes IconVisual Studio 2019 版本 16.1.6

发布时间:2019 年 7 月 9 日

安全公告通知

CVE-2019-1077 Visual Studio 扩展自动更新漏洞

如果 Visual Studio 扩展自动更新过程不正确地执行特定文件操作,就会存在特权提升漏洞。 成功利用此漏洞的攻击者可以删除任意位置的文件。 攻击者必须对易受攻击的系统拥有非特权访问权限,才能利用此漏洞。 安全更新通过保护 Visual Studio 扩展自动更新执行文件操作的位置来处理漏洞。

CVE-2019-1075 ASP.NET Core 欺骗漏洞

ASP.NET Core 中存在欺骗漏洞,可能导致开放重定向。 成功利用此漏洞的攻击者可能会将目标用户重定向到恶意网站。 为利用此漏洞,攻击者可能会发送一个含有专门设计的 URL 的链接,然后说服用户单击该链接。

该安全更新通过纠正 ASP.NET Core 分析 URL 的方式解决此漏洞。 有关详细信息,请参阅 .NET Core 发行说明。

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

引用特定类型的 XOML 文件可能导致在 Visual Studio 中打开 XOML 文件时执行任意代码。 现在允许在 XOML 文件中使用的类型具有一定限制。 如果打开包含最新未经授权的类型之一的 XOML 文件,将显示一条消息,说明该类型未经授权。

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


Release Notes Icon Visual Studio 2019 版本 16.1.5

发布时间:2019 年 7 月 2 日

### Visual Studio 2019 版本 16.1.5 中已解决的问题摘要


Release Notes Icon Visual Studio 2019 版本 16.1.4

发布时间:2019 年 6 月 25 日

Visual Studio 2019 版本 16.1.4 中已解决的问题摘要


Release Notes Icon Visual Studio 2019 版本 16.1.3

发布时间:2019 年 6 月 11 日

Visual Studio 2019 版本 16.1.3 中已解决的问题摘要


Release Notes IconVisual Studio 2019 版本 16.1.2

发布时间:2019 年 6 月 4 日

Visual Studio 2019 版本 16.1.2 中已解决的问题摘要


Release Notes Icon Visual Studio 2019 版本 16.1.1

发布日期:2019 年 5 月 24 日

Visual Studio 2019 版本 16.1.1 中已解决的问题摘要


Release Notes IconVisual Studio 2019 版本 16.1

发布日期:2019 年 5 月 21 日

Visual Studio 2019 版本 16.1 中的新增功能摘要

IDE

  • 现已公开发布 Visual Studio IntelliCode,并且可以随任何支持 C#、C++、TypeScipt/JavaScript 或 XAML 的任意工作负载一起安装。
  • 增加了 Per-Monitor Awareness 支持。
  • 新增了用于 C# 的 codefix
  • 向 Visual Studio 搜索添加了最近使用的项目。

调试器

  • 改进了源链接身份验证。
  • 将 nuget.org 符号服务器添加到了默认符号服务器列表中。
  • 按时间顺序查看调试预览版现在包括异常单步执行支持。

扩展性

  • 删除了 VSIX 项目中的 .resx 文件需要(BuildTools 更新)。
  • VSIX 项目模板现在使用新的 SDK 版本。

性能

  • 执行的用户优化体验,缩短了超大型解决方案的解决方案加载时间。
  • 模板作者可以将自定义标记添加到其模板。
  • 对自定义 UI 的 CodeLens 支持。
  • 更新了语言服务器协议实现。
  • 更新了在解决方案、文件夹和其他视图之间切换的行为。

C++

F#

.NET

  • 新的 .NET 效率功能包括项目和解决方案的一键式代码清除、新的切换块注释键盘快捷方式、重构以将类型移动到其他命名空间等。
  • 现在用户可以通过开始窗口中的克隆屏幕从 SSH URI 克隆代码。
  • .NET 效率新增功能包括针对未导入类型的 IntelliSense 完成、切换单行评论/取消评论、将命名样式导出到 editorconfig,以及命名空间内/外部的首选 using 的新代码样式设置。
  • 实现了 .NET SDK 工具新增功能,这些功能包括支持 .NET Core 3.0 的 WinForms 和 WPF 项目,以及 bug 修复和性能改进。
  • 向 NuGet 发布了 Visual Studio SDK v16.0。
  • 发布了适用于 .NET Core 3.0 WPF 开发的 XAML 设计器预览版。

Xamarin

Visual Studio 2019 版本 16.1 中修复的主要问题

Visual Studio 2019 版本 16.1 中的新增功能详细信息

  • 现已公开发布 IntelliCode,并且可以随支持 C#、C++、TypeScipt/JavaScript 或 XAML 的任何工作负载一起安装。
  • 在默认情况下禁用 IntelliCode 预览功能(自定义模型、C++/TS/JS 支持和 Editorconfig 推理)。 若要启用这些功能,请转到“工具”>“选项”>“IntelliCode”
  • 已从“新建项目”向导删除 Editorconfig (IntelliCode) 模板。 通过右键单击“解决方案资源管理器”中的所需位置并选择“添加”>“新建 EditorConfig (IntelliCode)”,可创建推理的 Editorconfig
  • 通过 SSH 使用开始窗口来克隆联机存储库中的代码。
Clone with SSH on start window
通过 SSH 从开始窗口进行克隆
  • 安装支持 C#、XAML 或 C++ 的工作负载时,将默认安装 Visual Studio IntelliCode
    • 默认情况下启用 C# 和 XAML 基础模型。
    • 可以通过“工具”>“选项”>“IntelliCode”来启用预览功能(如自定义模型训练和参数完成)
  • 增加了 Per-Monitor Awareness 支持
  • 新增了用于 C# 的 codefix
  • 为 Visual Studio 的基于 WinForms 的 PropertyBrowser 窗口增加了 Per-Monitor Awareness 支持。 需要在计算机上安装 .NET Framework 4.8 RTM 版本。
  • 源链接现在可以使用 Windows 身份验证来支持本地 TFS 源代码管理。
  • 将 nuget.org 符号服务器添加到了默认符号服务器列表中

项目

  • 用于切换解决方案资源管理器视图的按钮现在将始终显示所有可能视图的下拉菜单。
Solution switching
解决方案视图切换
  • 优化了超大型解决方案的加载时间。 改进因解决方案的大小而异。

  • 删除了“文件”>“转换”下的“转换”对话框。 Visual Studio 2015 中先前已弃用此功能。

  • 更新了 task.vs.json 和 launch.vs.json 架构的验证规则,并添加了属性的说明。

  • 添加了对通过 launch.vs.json 使用自定义程序进行 Linux 远程调试的支持。

可扩展性

  • 现在用户可以将 Microsoft.VisualStudio.SDK 的最新版本用于扩展中的 Visual Studio 2019。 请注意,如果 Visual Studio 支持的最低版本是 16.0,则仅使用此版本的 SDK。
  • 创建新的 VSIX 项目现在将包含 Microsoft.VisualStudio.SDK NuGet 包的 16.0 版。
  • 现在用户可以将标记添加到项目模板,从而启用 Visual Studio 2019“新建项目”对话框中的分类和筛选功能。 用户还可以从内置标记或其自己的自定义语言、平台和项目类型标记中进行选择。
Template tagging
模板标记
  • CodeLens 扩展现在可以在其 CodeLens 详细信息弹出窗口中显示任意 UI 内容。

  • 对语言服务器协议进行了以下更新:

    • 支持投影的缓冲区以启用内联差异的 LSP 和 LiveShare 中的 Razor 文件。
    • 支持不必要的诊断。
    • 支持 textDocument/typeDefinition。
    • 支持 textDocument/foldingRange(大纲显示)。
  • 删除了 VSIX 项目中的 .resx 文件需要(BuildTools 更新)

  • 如果不存在包含 MergeWithCTO 属性的 .resx,Microsoft.VSSDK.BuildTools NuGet 包现在将提供一个空的 .resx 文件作为版本的一部分。 大多数扩展不使用或不需要 .resx 文件即可合并,因此这将使项目更干净。

  • Per-Monitor Awareness 的更改可能影响某些扩展。 详细了解 Visual Studio 扩展程序控件的 Per-Monitor Awareness 支持

编辑器

  • Visual Studio 搜索现在将集中显示通过 Visual Studio 搜索调用的最近使用的三个操作,如以下示例模型中所示。 (注意:图标和特定行项在此模型中尚未完全更新。)
Visual Studio Search
Visual Studio 搜索的模型

C++

  • 无需额外配置或 SSH 连接,即可在 Visual Studio 中以本机方式将本地适用于 Linux 的 Windows 子系统 (WSL) 安装与 C++ 结合使用。
Windows Subsystem for Linux
适用于 Linux 的 Windows 子系统
  • AddressSanitizer 现已集成到 Visual Studio,以用于 Linux 项目和 WSL。
ASan integration
ASan 集成
  • 现在在 MSBuild 和 CMake 项目中面向 Linux时,用户可将远程生成计算机与远程调试计算机分隔开来。
  • 快速信息工具提示现包含用于搜索联机文档的链接,以便于深入了解代码构造。 对于带红色波浪线的代码,快速信息中的此链接将联机搜索相应的错误。
  • 快速信息工具提示内的代码现已着色,以反映它在编辑器中的着色。
Colorized code in Quick Info tooltips
快速信息工具提示中的已着色代码
New Code Analysis quick fixes
新的代码分析快速修补程序
  • 改进了 CMake 设置编辑器,包括对适用于 Linux 的 Windows 子系统 (WSL) 的支持和现有缓存中的配置;对默认生成和安装根目录的更改,以及对 Linux CMake 配置中的环境变量的支持。
Improvements to the CMake Settings Editor
改进了 CMake 设置编辑器
  • 改进了远程连接的日志记录,使用户更易于诊断跨平台开发的相关问题。
Improved logging for remote connections
改进了远程连接的日志记录
  • 现在,可以在面向 Linux(特定于 MSBuild 项目,即将针对 CMake 推出)时,将远程生成计算机与远程调试计算机分隔开来。
  • 模板栏可以基于代码库中该模板的实例化情况填充下拉菜单。
New Template Bar dropdown menu
“新建模板栏”下拉菜单
  • C++ IntelliCode 现在随附提供,可以通过“工具”>“选项”>“IntelliCode”>“常规”启用。 此版本的 IntelliCode 提高了准确性,并包括对自由函数的支持。
  • CMake 集成现在支持面向 Windows 和/或 Linux 的项目的 Clang/LLVM 工具链。 现在可以生成、编辑和调试使用 Clang、MSVC 或 GCC 的 CMake 项目。
CMake integration supports the Clang/LLVM toolchain
CMake 集成支持 Clang/LLVM 工具链
  • 为可通过 vcpkg 安装的缺失的 #include,以及在自动完成 CMake find_package 指令的可用包时提供灯泡。
Autocompletion of available packages
自动完成可用包
  • 已将 Visual Studio 随附的 CMake 版本更新到 3.14。 此版本添加了对面向 Visual Studio 2019 项目以及基于文件的 IDE 集成 API 的 MSBuild 生成器的内置支持。

  • 修订了 C++ 项目的常规属性页,在新的“高级”页下拆分出一些选项。 “高级”页还包括首选工具集体系结构、调试库、MSVC 工具集次要版本和 Unity (jumbo) 生成的其他属性。

  • 已向 C++ 标准库的实现添加了以下 C++20 预览功能,这些功能可在 /std:c++latest 下获得:

    • basic_string/basic_string_viewstarts_with()ends_with()
    • 关联容器的 contains()
    • listforward_listremove()remove_if()unique() 现在返回 size_type
    • <algorithm> 添加了 shift_left()shift_right()
  • 以下 C++20 预览功能已在 C++ 编译器中实现,这些功能可在 /std:c++latest 下获得:

    • 增加了通过针对包含显式模板参数 (P0846R0) 的函数调用表达式的依赖于自变量的查找来查找函数模板的功能。
    • 指定了初始化 (P0329R4),它允许在聚合初始化中选择特定成员(例如,使用 Type t { .member = expr } 语法)。
  • 大幅改进了 Lambda 支持,解决了大量历史遗留的 bug。 使用 /std:c++latest 时,默认启用此更改。 在其他 /std:c++* 语言模式以及默认模式下,可以通过 /experimental:newLambdaProcessor 来启用新分析程序,例如,/std:c++17 /experimental:newLambdaProcessor

  • CMake 的编辑器内文档

  • 内置 CMake 命令、变量和属性的完成和快速信息可以更轻松地编辑 CMakeLists.txt 文件。

Tooltip info for add_subdirectory CMake command
add_subdirectory CMake 命令的工具提示信息

F# 和 F# 工具

相对而言,这是 F# 语言和工具的一个次要版本,但它包含了一些非常出色的功能! 与 VS 16.0 更新一样,此版本的重点也在于改进编辑器工具的性能。

F# 编译器和 F# 交互
  • 对 .NET Core 上的 F# 交互添加了 P/Invoke 支持 (#6544)
  • 对用于 for 循环的 Span<'T> 添加了编译器优化 (#6195)
  • 添加了优化,以避免各种场景下对 F# 选项的外部 Some 分配 (#6532)
  • 将“匿名记录”实例化中所使用的表达式的执行顺序更改为从上到下,而不按字母顺序执行,以与常规记录的当前体验相匹配 (#6487)
  • 修复了以下 Bug:非常大的文本表达式或非常大的构造声明可能会导致在生成时编译器发生堆栈溢出 (#6258)
  • 修复了以下 Bug:调试包含匿名记录的函数时,不再触发断点 (#6512)
  • 修复了以下 Bug:将匿名记录传递到需要 obj 参数的构造后,编译器崩溃 (#6434)
  • 修复了以下 Bug:for var expr1 to expr2 do ... 循环可能会导致语法以异常方式生效(并被弃用) (#6586)
  • 修复了以下 Bug:匿名记录无法正常用于事件 (#6572)
  • 解决了一个长期存在的 Bug:FsLexYacc 中生成的分析程序过大(超过了 1 亿行) (#5967)
  • 解决了编译器的类型提供程序插件组件中长期存在的一个问题:类型提供程序可能会导致内存泄露 (#6409)
  • Saul Rennison 将对 --pathmap 的支持添加到了 F# 编译器,从而解决了以下问题:编译生成的可执行文件将源文件的绝对路径包含在嵌入的 F# 签名文件资源中 (#5213)
  • ncave 添加了对 F# AST 的优化,通过其他工具和环境(如 Fable)改进其使用 (#6333)
  • Steffen Forkmann 添加了在解析成员时对遍历信息的优化 (#4457)
  • Gauthier Segay 添加了对错误消息的改进,以便当类型实现缺少必要的重写时,报告一个包含这些缺失重写的列表 (#4982)
F# 工具
  • .NET SDK 中 F# 项目的目标框架下拉列表现将包含所有可用的 .NET Core、.NET Standard 的值以及 .NET Framework 值,以便可以轻松地从 .NET SDK 上的 .NET Framework 迁移到 .NET Core
  • 修复了以下 Bug:重命名泛型类型参数会生成由一对反引号转义的名称 (#5389)
  • 解决了一个长期存在的问题:类型提供程序重复重新实例化导致随着时间的推移产生大量分配 (#5929)
  • 解决了一个长期存在的问题:短时间内为读取 IL 不必要地分配了 20MB (#6403)
  • Vasily Kirichenko 解决了以下 Bug:F# 编译器服务中的 GetToolTipText 方法可能会为多个成员重载显示相同的 XML 签名 (#6244)
F# 开源基础结构

最后,我们通过以下措施改进了参与体验:

  • 从源进程完成生成,以便可以使用 .NET Core 源生成存储库生成 F# 编译器和核心库
  • 删除了 netstandard1.6 上的依赖项,以便整个代码库统一面向 netstandard2.0net472
  • 向存储库的根目录添加了 .vsconfig 文件,以便使用 Visual Studio 的参与者不必提前了解需要安装的所有内容
  • 重写了项目的自述文件,以删除可能会引发混淆的信息,包含关于如何开始参与的快速入门指南,并试图囊括更多关于我们想要执行的更改类型的信息

.NET 效率

  • 现提供了针对未导入类型的实验性 IntelliSense 完成! 现在用户即使尚未将导入语句添加到文件中,也会收到针对项目中依赖项类型的 IntelliSense 建议。 按下列步骤启用此选项:“工具”>“选项”>“文本编辑器”>“C#”>“Intellisense”
Intellisense completion for unimported types
针对未导入类型的 IntelliSense 完成
  • 现可通过键盘快捷方式(Ctrl+K 和 Ctrl+/)访问切换单行注释/取消注释功能。 此命令将添加或删除单行注释,具体取决于选定内容是否已添加注释。
  • 可以使用“生成 editorconfig”按钮(位于“工具”>“选项”>“文本编辑器”>“C#”>“代码样式”中)导出命名样式
  • 可以使用新的 editorconfig 代码样式规则来要求在命名空间内部使用 using 或阻止在命名空间内部使用 using。 使用“生成 editorconfig”按钮(位于“工具”>“选项”>“文本编辑器”>“C#”>“代码样式”中)时,也会导出此设置
Editorconfig rule for usings outside/inside namespaces
针对命名空间内/外部 using 的 Editorconfig 规则
Tools Options setting for usings inside/outside namespace
针对命名空间内/外部 using 的工具选项设置
  • 查找所有引用“种类”列中现在包含多个筛选器选项,并且可以识别命名空间和类型。
Find All References Kind column has more filter options
查找所有引用“种类”列中包含多个筛选器选项
  • 增加了一个用于 split/merge if 语句的 codefix。
Split or merge if statements
Split 或 merge if 语句
  • 增加了一个用于包装二进制表达式的 codefix。
Wrap binary expressions
包装二进制表达式
  • 现在可以在正则表达式字符串中通过 intellisense 菜单(Ctrl + 空格)访问正则表达式完成列表。 这些完成项还包括对该建议的作用的内联描述。
Regex completion offered in Intellisense with (Ctrl + space)
正则表达式完成
  • 增加了一个用于解封类的 codefix。
Unseal a class codefix
解封类
  • 可以使用项目和解决方案的一键式代码清除。 在解决方案资源管理器中右键单击项目或解决方案并选择“运行代码清理”。
Right-click to run code cleanup over the entire solution
右键单击以对整个解决方案运行代码清理
You will see a dialog box while cleanup is applied to each file
对每个文件应用清理时,会显示一个对话框
  • 可以使用“重构”对话框将类型移动到命名空间或文件夹。 将光标置于类名称和类型 (Ctrl + .) 中以打开快速操作和重构菜单,然后选择“移动到命名空间”。 这将启动一个对话框,可以在其中选择要将类型移动到的目标命名空间。
Place cursor in class name and type (Ctrl+.) to view refactorings
将光标置于类名称和类型 (Ctrl+.) 中以查看重构
Select the destination namespace
选择目标命名空间
  • 现在可以通过键盘快捷方式 (Ctrl+Shift+/) 或通过“编辑”>“高级”>“切换块注释”来切换块注释/取消注释。 此命令将添加或删除块注释,具体取决于所选内容。
Toggle block comment with (Ctrl+Shift+/)
使用 (Ctrl+Shift+/) 切换块注释
  • 现在有一个用于将只读结构字段设为可写的代码修复。 将光标置于结构名称和类型 (Ctrl+.) 中以打开快速操作和重构菜单,然后选择“将只读字段设为可写”。
  • 用于添加构造函数中的专用字段以及相反情况的代码修复更易于发现,并在选择字段名称的任何部分时显示。 此重构现在还提供所有可能的构造函数。

用于 .NET Core 3.0 WPF 开发的 XAML 设计器预览版

  • 提供 XAML 设计器早期预览版,以便开发人员在 Visual Studio 中生成 .NET Core 3.0 WPF 应用程序。 目前许多设计时功能尚不可用。 由于这是早期预览版,若遇到问题(如崩溃),请提交 Visual Studio 反馈,以便团队改进将来的体验。
  • 通过不断更新 Visual Studio 2019,我们将继续实现适用于 .NET Framework WPF 应用程序的 XAML 设计器曾提供的其他功能。

.NET SDK 工具

本版本包括了许多功能,以便在 .NET Core 上使用 WPF:

  • 解决了以下问题:向 .NET Core WinForms 或 WPF 项目添加新项时一直会弹出错误对话框 (#4486)。
  • 对 .NET SDK 项目中的 XAML 文件的支持 (#1467),其中包括许多旨在实现与旧版 .NET 项目的体验对等的较小工作项。
  • .NET Core 上的 WinForms 的上下文菜单项支持 (#137):Windows 窗体、用户控件、组件和类。
  • .NET Core 上的 WPF 的上下文菜单项支持 (#137):Windows、页面、用户控件、资源字典。
  • 现已为 .NET SDK 项目启用“数据源”窗口,为 WinForms 启用通用数据管理方案 (#4479)。

另外,此版本还添加了多种其他修补程序:

  • .NET SDK 项目现在支持 .razor 文件 (#4468)。
  • “调试”属性页添加了可访问的帮助文本,以便屏幕阅读器可以读取它 (#4568)。
  • 添加了可禁用双击即打开项目文件的设置 (#4493)。
  • 用于编辑项目文件的上下文菜单选项不再包含项目名称,从而修复了以下问题:项目名称过长,以至于上下文菜单过宽 (#1492)。
  • 修复了以下 Bug:使用数据绑定 UI 创建数据源生成了两个 .datasource 文件 (#4485)。
  • 解决了以下 Bug:使用链接文件可能会导致更新检查程序出现故障 (#4580)。
  • 修复了多个涉及以下问题的 Bug:包解析以及它们在依赖项节点中的已解析/未解析状态的显示(#2924#4577)。

有关已关闭问题的完整列表,请参阅 GitHub 上的 16.1 里程碑

Xamarin

  • 已将默认 Android 体验更新到 API 28 以支持相应模板、设备创建、安装程序等。
  • 编写 Xamarin.Forms XAML 时,Windows 上的 IntelliSense 现在显示适用于设计时属性的建议。

已知问题

单击以下链接,查看 Visual Studio 2019 版本 16.1 中的所有问题和可用解决办法。

Visual Studio 2019 Known Issues

反馈和建议

我们期待你的宝贵意见和建议! 如有问题,请通过安装程序或 Visual Studio IDE 右上角的“报告问题”选项告知我们。 Feedback Icon图标位于右上角。 可以在 Visual Studio 开发者社区中提出产品建议或跟踪问题,也可在其中提问、寻找答案和建议新功能。 此外,还可通过实时聊天支持获得免费安装帮助。


Blogs

通过参考开发人员工具博客网站中的见解和建议,随时掌握所有新版本的最新最全资讯,并发表有关大量功能的深入分析帖子。


Visual Studio 2019 发行说明历史记录

要详细了解 Visual Studio 2019 的历史版本,请查看 Visual Studio 2019 发行说明历史记录


返回页首