Visual Studio IconVisual Studio 2019 16.0 版发行说明


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


注意

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



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

支持的时间范围

Visual Studio 2019 版本 16.0 现已停止支持。

为 Visual Studio 2019 版本 16.0 的 Enterprise 和 Professional 用户提供支持,他们将在 2021 年 1 月之前收到针对安全漏洞的修补程序。 此时间范围由以下事实决定:2019 年 12 月,Visual Studio 2019 版本 16.4 已被指定为 Visual Studio 2019 产品的下一个服务基线。 有关 Visual Studio 支持的基线的详细信息,请查看 Visual Studio 2019 的支持策略。 

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

Visual Studio 2019 版本 16.0 发行版

Visual Studio 2019 博客

可从 Visual Studio 2019 博客获取来自 Visual Studio 工程团队的官方产品见解。 其中对 Visual Studio 2019 版本进行了深入介绍。


Release Notes Icon Visual Studio 2019 版本 16.0.22

发布时间:2020 年 1 月 12 日

16.0.22 版的安全顾问公告

CVE-2021-1651 / CVE-2021-1680 诊断中心标准收集器服务特权提升漏洞

如果诊断中心标准收集器对数据操作的处理不当,就会存在特权提升漏洞。

CVE-2020-26870 Visual Studio 安装程序远程代码执行漏洞

Visual Studio 安装程序尝试显示恶意 markdown 时存在远程代码执行漏洞。


Release Notes Icon Visual Studio 2019 版本 16.0.21

发布时间:2020 年 12 月 8 日

16.0.21 版的安全顾问公告

CVE-2020-17156 Visual Studio 远程代码执行漏洞

当 Visual Studio 克隆恶意软件时,会存在远程代码执行漏洞。


Release Notes Icon Visual Studio 2019 版本 16.0.20

发布时间:2020 年 11 月 10 日

16.0.20 版的安全顾问公告

CVE-2020-17100 Visual Studio 篡改漏洞

针对 Visual Studio 的 Python 工具创建 python27 文件夹时存在篡改漏洞。 成功利用此漏洞的攻击者可在提升的上下文中运行进程。


Release Notes Icon Visual Studio 2019 版本 16.0.19

发布日期:2020 年 10 月 13 日

此次发布的 16.0.19 版本内容

  • 向 Visual Studio 2019 添加了 .NET Code SDK 2.1.616。

Release Notes Icon Visual Studio 2019 版本 16.0.18

发布日期:2020 年 9 月 8 日

16.0.18 中修复的问题

  • 如果 .NET Core 不受支持的版本在 VS 安装之外被删除,那么将不再在修复或升级期间重新安装它们。

16.0.18 版的安全顾问公告

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

如果诊断中心标准收集器对数据操作的处理不当,就会存在特权提升漏洞。 成功利用此漏洞的攻击者可在提升的上下文中运行进程。

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

如果诊断中心标准收集器对文件操作的处理不当,就会存在特权提升漏洞。 成功利用此漏洞的攻击者可在提升的上下文中运行进程。

CVE-2020-16856 Visual Studio 远程代码执行漏洞

如果内存中的对象处理不当,Visual Studio 中会存在远程代码执行漏洞。 成功利用此漏洞的攻击者可能会在当前用户的上下文中运行任意代码。

CVE-2020-16874 Visual Studio 远程代码执行漏洞

如果内存中的对象处理不当,Visual Studio 中会存在远程代码执行漏洞。 成功利用此漏洞的攻击者可能会在当前用户的上下文中运行任意代码。

CVE-2020-1045 Microsoft ASP.NET Core 安全功能绕过漏洞

Microsoft ASP.NET Core 分析编码 Cookie 名称的方式存在安全功能绕过漏洞。 ASP.NET Core Cookie 分析器对整个 Cookie 字符串进行解码,这可能会使恶意攻击者设置第二个 Cookie,并对其名称进行百分号编码。


Release Notes Icon Visual Studio 2019 版本 16.0.17

发布日期:2020 年 8 月 11 日

16.0.17 中修复的问题

16.0.17 版的安全顾问公告

CVE-2020-1597 ASP.NET Core 拒绝服务漏洞

ASP.NET Core 未正确处理 Web 请求时,存在拒绝服务漏洞。 如果攻击者成功利用此漏洞,可能会导致对 ASP.NET Core Web 应用程序拒绝服务。 可以远程利用漏洞,无需进行身份验证。


Release Notes Icon Visual Studio 2019 版本 16.0.16

发布时间:2020 年 7 月 14 日

16.0.16 版中修复的问题

16.0.16 版的安全顾问公告

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

当因 Windows 诊断中心标准收集器服务未能正确纠正输入而导致不安全的库加载行为时,则存在特权提升漏洞。

CVE-2020-1416 Visual Studio 特权提升漏洞

在 Visual Studio 中加载软件依赖项时,存在特权提升漏洞。

CVE-2020-1147 .NET Core 拒绝服务漏洞

未经过身份验证的远程攻击者可能通过向 ASP.NET Core 应用程序或其他分析特定 XML 类型的应用程序发布特制请求来利用此漏洞。 安全更新通过限制可在 XML 有效负载中呈现的类型来解决此漏洞。


Release Notes Icon Visual Studio 2019 版本 16.0.15

发布日期:2020 年 6 月 9 日

16.0.15 版中修复的问题

16.0.15 版的安全顾问公告

CVE-2020-1108 / CVE-2020-1108 .NET Core 拒绝服务漏洞

为了全面解决 CVE-2020-1108,Microsoft 发布了 .NET Core 2.1 和 .NET Core 3.1 的更新。 使用任何这些版本的 .NET Core 的客户都应安装最新版本的 .NET Core。 有关最新版本号和 .NET Core 更新说明,请参阅发行说明

CVE-2020-1202 / CVE-2020-1203 诊断中心标准收集器服务特权提升漏洞

如果诊断中心标准收集器或 Visual Studio 标准收集器未能正确处理内存中的对象,就会存在特权提升漏洞。

CVE-2020-1293 / CVE-2020-1278 / CVE-2020-1257 诊断中心标准收集器服务特权提升漏洞

如果诊断中心标准收集器服务对文件操作的处理不当,就会存在特权提升漏洞


Release Notes Icon Visual Studio 2019 版本 16.0.14

发布时间:2020 年 5 月 12 日

16.0.14 版中修复的问题

  • 添加了一个更改,让企业 IT 管理员和部署工程师可以配置 Microsoft 更新客户端和 SCCM 等工具,以确定 Microsoft 更新目录和 WSUS 上托管的 VS2019 16.0 更新的适用性。

16.0.14 版的安全顾问公告

CVE-2020-1108 .NET Core 拒绝服务漏洞

未经过身份验证的远程攻击者可以通过向 .NET Core 应用程序发布特制请求利用此漏洞。 此安全更新通过纠正 .NET Core Web 应用程序处理 Web 请求的方式修复此漏洞。


Release Notes Icon Visual Studio 2019 版本 16.0.13

发布时间:2020 年 4 月 14 日

16.0.13 版的安全顾问公告

CVE-2020-0899 Microsoft Visual Studio 特权提升漏洞

当 Microsoft Visual Studio 更新程序服务不当处理文件权限时,会出现特权提升漏洞。 成功利用了此漏洞的攻击者可覆盖本地系统的安全上下文中的任意文件内容。

CVE-2020-0900 Visual Studio Extension Installer 服务特权提升漏洞

当 Visual Studio Extension Installer 服务不当处理文件操作时,会出现特权提升漏洞。 成功利用了此漏洞的攻击者可使用已提升的权限删除任意位置的文件。

CVE-2020-5260 由于对 URL 的验证不足而导致的 Git for Visual Studio 凭据泄露漏洞

当专门创建的 URL 被分析并发送至凭据帮助程序时,会出现凭据泄露漏洞。 这可能会导致凭据被发送到错误的主机。


Release Notes IconVisual Studio 2019 版本 16.0.12

发布日期:2020 年 3 月 10 日

16.0.12 版中修复的问题

安全顾问公告

CVE-2020-0793CVE-2020-0810 诊断中心标准收集器服务特权提升漏洞

当诊断中心标准收集器无法正确处理文件操作,或 Windows 诊断中心标准收集器服务无法正确纠正输入时,就存在特权提升漏洞。

CVE-2020-0884 在创建 Outlook Web 外接程序时存在欺骗漏洞

如果启用了多重身份验证,则在创建 Outlook Web 外接程序时将存在欺骗漏洞

CVE-2020-0789 Visual Studio Extension Installer 服务拒绝服务漏洞

当 Visual Studio Extension Installer 服务无法正确处理硬链接时,存在拒绝服务漏洞。 成功利用此漏洞的攻击者可能导致目标系统停止响应。


Release Notes Icon Visual Studio 2019 版本 16.0.11

发布日期:2020 年 1 月 14 日

安全顾问公告

CVE-2020-0602 ASP.NET Core 拒绝服务漏洞

远程未经过身份验证的攻击者可以通过向 ASP.NET 应用程序发布特制请求利用此漏洞。 此安全更新通过纠正 ASP.NET Core Web 应用程序处理 Web 请求的方式解决此漏洞。

CVE-2020-0603 ASP.NET Core 远程代码执行漏洞

远程未经过身份验证的攻击者可以通过向 ASP.NET 应用程序发布特制请求利用此漏洞。 此安全更新通过纠正 ASP.NET Core Web 应用程序处理内存的方式解决此漏洞。


Release Notes Icon Visual Studio 2019 版本 16.0.10

发布时间:2019 年 12 月 10 日

16.0.10 版中修复的问题

安全顾问公告

CVE-2019-1349 由于对子模块名称的限制过于宽松导致 Visual Studio 远程执行漏洞的 Git

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

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

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

CVE-2019-1351 由于在克隆期间使用了非字母驱动器名称导致 Visual Studio 任意文件覆盖漏洞的 Git

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

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

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

CVE-2019-1354 由于未拒绝写入包含反斜杠的跟踪文件导致的 Visual Studio 任意文件覆盖漏洞的 Git

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

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

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

CVE-2019-1486 Live Share 扩展 URL 重定向漏洞

当连接到 Live Share 会话的一个客机重定向到由会话主机指定的任意 URL 时,Visual Studio Live Share 扩展中检测到欺骗漏洞。 攻击者可以成功利用此漏洞,使客机打开浏览器并在无需明确同意的情况下导航到恶意 URL。 这是 Live Share 中的“共享服务器”功能,该功能允许在 Live Share 活动会话期间进行自动端口转移。 最新更新通过在浏览主机指定的 URL 前提示 Live Share 客机确认是否同意来解决此漏洞。


Release Notes Icon Visual Studio 2019 版本 16.0.9

发布时间:2019 年 10 月 15 日

安全顾问公告

CVE-2019-1425 NPM 包特权提升漏洞(发布时间:2019 年 11 月 12 日)

如果 Visual Studio 在提取已存档的文件时未能正确验证硬链接,则存在特权提升漏洞。 此漏洞由 Visual Studio 使用的 NPM 包引入,如以下两个 NPM 建议所述 : npmjs.com/advisories/803npmjs.com/advisories/886。 此版本的 Visual Studio 中包含这些 NPM 包的更新版本。


Release Notes Icon Visual Studio 2019 版本 16.0.8

发布时间:2019 年 9 月 10 日

Visual Studio 2019 版本 16.0.8 中已修复的问题

安全顾问公告

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

诊断中心标准收集器服务不正确地模拟特定文件操作时,存在特权提升漏洞。 成功利用此漏洞的攻击者可以获得提升的权限。 对易受攻击的系统拥有非特权访问权限的攻击者可利用此漏洞。 此安全更新可确保诊断中心标准收集器服务正确模拟文件操作,从而解决这一漏洞。


Release Notes Icon Visual Studio 2019 版本 16.0.7

发布时间:2019 年 8 月 13 日

Visual Studio 2019 版本 16.0.7 中已修复的问题

安全顾问公告

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

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

CVE-2019-1301:.NET Core 中的拒绝服务漏洞

.NET Core 未正确处理 Web 请求时,存在拒绝服务漏洞。 如果攻击者成功利用此漏洞,可能会导致对 .NET Core Web 应用程序拒绝服务。 可以远程利用漏洞,无需进行身份验证。

此更新通过纠正 .NET Core Web 应用程序处理 Web 请求的方式解决此漏洞。


Release Notes Icon Visual Studio 2019 版本 16.0.6

发布时间:2019 年 7 月 9 日

Visual Studio 2019 版本 16.0.6 中已修复的问题

  • 修复了在 Windows 10 版本 1903 上运行或已安装 .NET 4.8 的系统中的讲述人支持。

安全顾问公告

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

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

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

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

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.0.5

发布时间:2019 年 6 月 11 日

Visual Studio 2019 版本 16.0.5 中已修复的问题


Release Notes Icon Visual Studio 2019 版本 16.0.4

发布日期:2019 年 5 月 14 日

在 Visual Studio 2019 版本 16.0.4 中修复的问题

安全顾问公告

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

如果诊断中心标准收集器服务不正确地执行特定文件操作,就会存在特权提升漏洞。 成功利用此漏洞的攻击者可以删除任意位置的文件。 攻击者必须对易受攻击的系统拥有非特权访问权限,才能利用此漏洞。 安全更新通过保护诊断中心标准收集器执行文件操作的位置来处理漏洞。


Release Notes Icon Visual Studio 2019 版本 16.0.3

发布时间:2019 年 4 月 30 日

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

  • Visual Studio Tools for Kubernetes 现在支持最新的 Azure Dev Spaces。

Visual Studio 2019 版本 16.0.3 中已修复的问题


Release Notes Icon Visual Studio 2019 版本 16.0.2

发布时间:2019 年 4 月 18 日

Visual Studio 2019 版本 16.0.2 中已修复的问题


Release Notes Icon Visual Studio 2019 版本 16.0.1

发布时间:2019 年 4 月 9 日

Visual Studio 2019 版本 16.0.1 中已修复的问题


Release Notes Icon Visual Studio 2019

发布时间:2019 年 4 月 2 日

Visual Studio 2019 中的新增功能摘要

安装

IDE

  • 使用默认安装的 Visual Studio Live Share 与他人协作。 对 C ++、VB.NET 和 Razor 的附加语言支持为客户提供了解决方案视图和源代码管理差异共享。
  • 打开最近使用过的代码,或通过新的启动窗口从最常用的流程之一(如克隆、打开或创建项目)入手。
  • 使用新列出的按受欢迎度排序的模板新建改进了搜索体验和筛选器的项目
  • 通过 shell 中一组新的可视更改,为代码提供更多垂直空间和新式外观。
  • 无论显示配置和/或缩放比例如何,都可以查看更清晰的 IDE,因为我们已改进对每监视器感知的支持。
  • 在 Visual Studio 中使用改进的搜索功能来搜索菜单、命令、选项和可安装组件。
  • 使用文档指示器快速了解代码文件的“运行状况”。 通过一键式代码清理从指示器中运行和配置。
  • 使用“选项”对话框中的新“预览功能”页轻松管理选择加入的预览功能
  • 有关新建项目的改进:可基于标签进行搜索,并且可以轻松访问"最近使用的项目模板"列表。
  • 可直接从 Visual Studio 搜索创建新项,由于相关性获得改进,还可更快查找结果。
  • 借助新的通知体验,随时获取最新的重要信息,如 Visual Studio Live Share 请求。
  • 将一系列代码清理修复程序保存为配置文件,便于轻松选择要在代码清理期间运行的修复程序。
  • 触发新的 .NET 重构和代码修复
  • 使用一流项目文件更轻松地配置 .NET Core 项目。
  • 使用“扩展和更新”对话框中的预览版、付费版和试用版标签查看扩展状态。
  • 由于此预览版中已重置默认值,请检查并配置要激活的预览功能。
  • 排除此版本中已标记为“弃用”的某些测试窗口 API,使扩展随时处于最新状态。
  • 使用 Azure DevOps 从开始窗口登录、浏览以及一键式克隆或连接到托管存储库。
  • 安装其他源代码管理主机的扩展以查看你和你组织拥有的存储库。
  • 体验改进的蓝色主题版本,通过调低亮度、提高整体对比度和解决其他可用性问题,解决反馈的问题。
  • 使用 dotnet format 全局工具从命令行应用代码样式偏好。
  • 默认情况下,MSBuild 和 Visual Studio 现在面向 .NET Framework 4.7.2。
  • 与 Azure 应用服务相关的功能已从服务器资源管理器中删除;可改用 Cloud Explorer 中的等效功能。

性能

常规调试和诊断

  • 在调试的同时,在“监视”、“自动”和“局部变量”窗口中搜索关键字,提高了查找对象或值的能力。
  • 在检查数据时,在“监视”、“自动”和“局部变量”窗口中查看格式说明符下拉列表
  • 使用自定义可视化工具,此工具现与 .NET Core 兼容。
  • 调试包含大量模块和 PDB 的超大型应用程序
  • 在 Visual Studio IDE 内即可使用自定义参数启动 Google Chrome 和调试 JavaScript 应用程序。
  • 可为性能探查器中的 CPU 和 DotNet 对象分配工具使用突出显示热路径
  • 当某个特定对象的属性值在 .NET Core 3.0+ 应用程序中更改时,可使用数据断点中断,此功能最初为 C++ 所独有。
  • 自预览版 1 开始,我们更新了用于在“自动”、“局部变量”和“监视”窗口中搜索的 UI,界面更加简单。 “深度搜索”功能已更改为一个下拉菜单,因此可快速选择初始搜索和后续搜索所需的深度。

源代码管理和团队资源管理器

  • 暂时存储更改,以便利用团队资源管理器的 Git 工具对 Git 储藏的支持来处理其他任务。
  • 查看 Visual Studio Marketplace 中提供的可选扩展 Visual Studio 的可取请求,该扩展将拉取请求评审集成到 Visual Studio 中。
  • 使用新的 Azure DevOps 工作项体验,该体验专注于开发人员工作流,包括用户特定的工作项视图、从工作项创建分支,使用 #mentions 搜索工作项,以及内联编辑。

扩展性

  • 使用 NuGet 包 Microsoft.VisualStudio.SDK 中独立、统一的 Visual Studio SDK。
  • 利用 VSIX Project 的更新立即包括 AsyncPackage。
  • 体验我们已添加的新的空 VSIX Project 模板。
  • 了解扩展是免费、付费还是试用,现在“扩展和更新”对话框中已显示有相关提示。

编程语言

C#

体验 C# 编译器现支持的 8.0 语言功能的预览,包括:

  • 可为 null 的引用类型:开启此功能后(例如,使用 #nullable enable 或在项目级别使用 <NullableContextOptions>enable</NullableContextOptions>),如果使用 ? 注释,则引用类型将被视为可为空,否则将引用类型视为不可为空。 随后编译器分析 null 值的流向,并警告可能的不安全使用情况。
  • switch 表达式:在表达式上下文中提供类似 switch 的语义。
  • 递归模式匹配:新模式可使用测试字段/属性和位置元素(来自元组或析构函数)。
  • 支持 CoreFX 中用于切片的 RangeIndex 类型,包括范围的 x..y 文字语法。
  • IAsyncEnumerable<T> 表示的异步流可以与 await foreach 异步枚举,并且可以使用 async IAsyncEnumerable<T> 迭代器方法生成。
  • using 声明:在当前块的末尾进行释放,但不增加嵌套级别。 可以通过实现公共 Dispose() 方法来处理 ref 结构。
  • static 本地函数:标有 static 的本地函数不能引用封闭函数中的 this 或变量。
  • 本地函数和 lambdas 现在可以声明影响封闭函数变量名称的参数和局部变量。
  • 空接合赋值:如果 xnullx ??= y; 仅会将 y 赋值给 x

有关详细信息,请参阅 Mads 提供的 C# 8.0 概述

有关更多详细信息,请参阅 C# 语言功能状态重大更改

此外,默认情况下,可以在 Visual Studio 中使用更现代的 C# 语言功能。

C++
  • 使用可为代码提供 AI 辅助建议的可选扩展 Visual Studio IntelliCode 来编写 C++ 和 XAML 代码,以节省时间。
  • 体验编辑器内代码分析警告。 代码分析在后台自动运行,且警告显示为绿色波形曲线。
  • 试用全新模板栏,它使用速览窗口用户界面并支持嵌套模板。
  • 运行更新后的全新 C++ 生存期配置文件检查器实现。
  • 使用新的 CMake 设置编辑器配置 CMake 项目,它提供 CMakeSettings.json 的替代方案。
  • 体验一系列后端改进,包括 OpenMP SIMD 矢量化、链接时间加速和更高性能的内联。
  • 打开由外部工具(例如 CMakeGUI 或定制的元数据生成系统)生成的现有 CMake 缓存。
  • 借助用于为 Spectre Variant 1 提供迁移缓解的 /Qspectre 改进分析 (CVE-2017-5753)。 有关详细信息,请参阅 Visual C++ 团队博客文章
  • 现在模板 IntelliSense 的模板栏具有最近使用的下拉列表,可以在之前的示例参数之间快速切换。
F#
  • F# 4.6 及其他各种编译器改进功能已发布。
  • 体验适用于 F# 和 F# 工具的大型解决方案和各种 bug 修补程序的性能改进。
  • 了解开放源代码参与者对 F# 语言和工具完成的出色工作。
JavaScript/TypeScript
Python
  • 使用 Python“添加环境”对话框轻松添加 Python 虚拟环境和 conda 环境。
  • 更轻松地使用 Python 环境,包括通过新 Python 环境选择器工具栏对“打开文件夹”工作区支持的改进。
  • 创建 Visual Studio Live Share 会话并与其他 Visual Studio 用户协作处理 Python 代码。

Web 技术

容器工具

使用 Xamarin 进行移动开发

通用 Windows 平台 (UWP)

  • 从设计器中进行修改时,将保留注释、间距、命名空间和任何其他文本更改。 程序包清单设计器对 Package.appxmanifest 文件中的 xml 更改提供原样不变的高保真度。
  • 使用适用于 .NET Core 项目的 Windows 应用程序打包项目生成 MSIX 包。
  • 使用包创建向导,可直接向 Microsoft Store 提交。
  • Visual Studio 2019 中不再支持部署到 Windows Mobile 设备。 尝试部署到 Windows 10 Mobile 设备将导致显示“Visual Studio 2019 中不再支持部署到 Windows Mobile 设备”错误。 如需继续使用 Windows 10 Mobile 设备处理应用程序,请继续使用 Visual Studio 2017。

XAML 调试工具:

  • XAML“编辑并继续”现在支持 x:bind (UWP):对于包含公共属性、元素名称、索引属性路径(集合)、附加属性和转换属性的路径,XAML“编辑并继续”现在支持编辑通过 x:bind 创建的数据绑定。 不支持其他更改。 此增强功能适用于最低和最高版本面向 Windows 10 SDK 版本 1809(内部版本 10.0.17763)或更高版本的任何应用。 (注意:从 Visual Studio 2019 Update 2+ 开始,XAML“编辑并继续”现在称为 XAML 热重载)。

SQL Server Data Tools

  • 体验更新的 SSDT 和 DacFX,现在包括 UTF-8 排序规则支持。

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

安装

  • 现可选择 Visual Studio 更新的安装方式。 默认模式为“全部下载后再安装”,使用此模式可在更新下载过程中继续使用 Visual Studio。 注意:如果选择“全部下载并安装”,则需要打开 Visual Studio 安装程序并选择“继续”才能完成此过程
  • 现可在后台下载 Visual Studio 更新。 仅当计算机处于空闲状态时才会进行这些下载。 下载完成后,便会在 Visual Studio 中收到通知,指示已可安装下载内容。
  • 现可通过更改“产品更新”页中的设置来控制更新安装模式以及是否要通过“工具”>“选项”菜单下载更新
Product Update Options
*产品更新选项*

启动窗口

新的启动窗口提供简化的启动体验,可帮助在启动 Visual Studio 时快速访问代码。

  • 查看最近的项目和文件夹,只需一次单击即可将其打开。 通过上下文菜单固定并从列表中删除项目。
  • 使用任何公共或私有 git URL 克隆或签出代码,这也会自动在 IDE 中打开文件夹。
  • 登录、浏览和单击“克隆”或从 Azure DevOps 连接到托管存储库,或安装其他源控制主机的扩展以查看你和组织拥有的存储库。
  • 浏览本地磁盘或网络共享中的项目、解决方案或任何包含代码的文件夹,然后在 IDE 中将其打开。
  • 选择一个项目模板为你提供代码基架,以帮助开始使用新项目或解决方案。
  • 按标题、说明和标签搜索项目模板,或筛选可用的语言、平台和项目类型。 默认列表显示所有可用模板,而左侧窗格中显示最近使用的前 10 个项目模板列表以便快速进行访问。 使用双页向导,一次专注于一个决策。
Start window
*新启动窗口体验*

Shell 和平台

  • 通过经过改进的新产品图标快速确认要打开和使用的 Visual Studio 版本。 此外,新图标在多种背景下更显眼。
  • 使用刷新的蓝色主题,体验 Visual Studio 的新式外观,该主题提供更清爽的用户界面,同时仍满足我们的可访问性标准。
  • 通过 IDE 中对紧凑性的更改和回收垂直空间,查看更多代码。 我们将标题栏和菜单栏结合在一起,同时保留了现有功能。
  • 通过新的实验设置将 Visual Studio 用作每监视器感知应用程序。 启用此设置后,无论显示配置和/或缩放比例如何,此设置都可以帮助 Visual Studio 的某些部分(如 shell 和编辑器)呈现更加清晰的效果。
  • 跨菜单、命令、选项和可安装组件体验增强的搜索体验。 我们的新搜索现可动态显示结果,适应拼写错误,并在搜索结果中提供相关信息(如键盘快捷键)。
Visual Studio Search with results
*Visual Studio 中增强的搜索功能*
  • 通过“文档运行状况指示器”功能查看与当前打开的文件关联的运行状况信息。
Document Health Indicator with issues
*文档运行状况指示器 - 文档中存在问题*
Document Health Indicator with no issues
*文件运行状况指示器 - 没有问题*
  • 作为 C# 开发人员,可以使用“代码清理”快速清理一些最常见的编码建议。
  • 通过配置“代码清理”选择要运行的一组修复程序。
Code Cleanup configuration dialog
*配置代码清理*
  • 通过扩展剪贴板循环 (Ctrl + Shift + V) 的上下文菜单查看剪贴板历史记录的内容
Clipboard Ring context menu
*剪贴板循环上下文菜单*
  • 已通过以下方式改进搜索体验:
    • 为菜单、组件和模板添加了筛选器
    • 系统会结合搜索选项,提供相关性最高的搜索结果
    • 可直接从 Visual Studio 创建新项目/项并将其添加到解决方案
  • 对于满足最低要求(.NET 4.8 预览版和 Windows 10 2018 年 4 月更新及更高版本)的用户,现在默认情况下会启用改进的每监视器感知 (PMA) 体验。 工具箱、断点、监视、局部变量、自动和调用堆栈等工具窗口已转换为 PMA,因此无论显示配置和/或缩放比例如何,都会清晰呈现。
  • 新的通知体验增加了以下各项:
    • 状态栏新增了图标和计数器
    • 新的 toast 通知机制
    • Visual Studio 更新通知和 Visual Studio 许可过期通知
  • 修改后的蓝色主题调低了亮度、提高了对比度并解决了其他可用性问题,从而解决了反馈的问题。
  • 利用工具栏区域中的可用空间作为可拖动区域,增强了窗口拖动功能。
  • 现可将一组代码清理修复程序保存为配置文件,这样便可快速选择要在代码清理期间运行的修复程序集。
Visual Studio Code Cleanup Profiles
*Visual Studio 代码清理配置文件*
  • 我们在“扩展和更新”对话框中添加了标签,可帮助你快速了解扩展是预览版、付费版,还是处于试用期。
Extensions and Updates dialogs with tags
*带有标签的“扩展和更新”对话框*
  • 在 Visual Studio 2019 及更高版本中实现数据工具提示的推荐方法现为 IAsyncQuickInfoSourceProvider。 Visual Studio 2019 预览版 1 中已弃用旧版编辑器快速信息 API IVsTextTipDataTextTipData
  • 为支持 LightBulb API,已弃用编辑器智能标记(Microsoft.VisualStudio.Language.Intellisense 命名空间中的 ISmartTag* 接口系列),从 Visual Studio 2019 预览版 1 开始,不再支持该标记。
  • 由于使用率较低,已删除解决方案选项“显示高级生成配置”、“始终显示解决方案”和“在创建时保存新项目”。 这些值已设置为默认值“True”
  • 使用“工具”>“选项”>“环境”>“预览功能”中的新“预览功能”页选择加入或退出某些预览功能

性能

  • 为文件夹和解决方案的“生成选项”添加了新的快捷方式:Ctrl + B
  • 通过加载解决方案并卸载所有项目,快速打开大型解决方案。 Do not load projects
  • 使用解决方案筛选器文件选择要在打开解决方案时加载的项目。
    • 通过卸载不希望自动打开的项目创建解决方案筛选器文件,右键单击解决方案,然后选择“另存为解决方案筛选器”。 然后,可使用筛选器文件打开解决方案供以后使用。 Solution filters
  • 为 CMake 文件添加了“全部生成”命令:Ctrl + Shift + B
  • 为 CMake 项目中的 C++ 文件改进了 IntelliSense 性能。
  • 添加了一个命令,可用于将卸载的项目依赖项加载到项目和解决方案上下文菜单中。
  • 性能中心现会保留用于提高 Visual Studio 性能的通知提示,可通过“帮助”>“管理 Visual Studio 性能”访问
  • 现可在任务状态中心查看解决方案加载进度,以及解决方案加载完成后的警报。
  • 使用解决方案筛选器文件选择要在打开解决方案时加载的项目。
    • 通过卸载不希望自动打开的项目创建解决方案筛选器文件,右键单击解决方案,然后选择“另存为解决方案筛选器”。 然后,可使用筛选器文件打开解决方案供以后使用。
  • 在打开文件夹方案中按 Ctrl + T,可体验改进的生成资产发现和文件搜索
  • Visual Studio 编辑器现在将限制辅助组件对键入性能的影响,改进了性能。 具体而言,它会在键入时自动取消任何长时间运行的非必要操作。
  • 可通过“工具”>“选项”>“文本编辑器”>“高级”来配置 Visual Studio 辅助组件限制行为
Visual Studio Typing Latency Options
*Visual Studio 键入延迟选项*
  • 现可在“解决方案资源管理器”工具窗口中禁用从上一个会话还原项目层次结构状态。 我们实施了此更改,因为在解决方案打开时从上一个会话还原项目层次结构可能会延迟解决方案加载。
    • 在“工具”>“选项”>“项目和解决方案”>“常规”中切换此选项
Solution load restore settings
*解决方案负载还原设置*
*现可从上一个会话中禁用工具窗口的状态还原,并改为始终在启动时加载解决方案资源管理器和团队资源管理器。 实施此更改是因为从上一个会话还原工具窗口可能会在启动时延迟解决方案加载。 *通过“工具”>“选项”>“环境”>“启动”来切换此选项。

常规调试和诊断

常规调试
  • 使用在“监视”、“自动”和“局部变量”窗口中集成的新搜索功能,突出显示、查找和导航关键字。
Searching for keywords in Watch
在“监视”窗口中搜索
  • 通过在列出的项目后附加逗号,在“监视”、“自动”和“局部变量”窗口中查看用于设置数据格式的说明符和选项下拉列表。
Format Specifier Dropdown List in Watch
“监视”窗口中的格式说明符下拉列表
  • 现可使用针对 .NET Core 的自定义支持和数据集可视化工具支持。
DataSet Visualizer for .NET Core
适用于 .NET Core 应用程序的数据集可视化工具
  • 对于在 Windows 上运行的 C++ 应用程序,PDB 现可在单独的 64 位进程中加载。 此更改解决了在调试包含大量模块和 PDB 的应用程序时,由调试程序耗尽内存导致的一系列故障。
托管数据断点

当某个特定对象的属性值在 .NET Core(3.0 或更高版本)应用程序中更改时,现可使用数据断点中断,此功能最初为 C++ 所独有。 它们是绝佳的替代方案,如果有上百个对象调用该函数,则只需在属性的 setter 上设置断点,因为数据断点可以专注于特定对象的属性,即使该属性不在范围内,而前者可能导致经常出现不相关的中断

Data breakpoints for .NET Core
.NET Core 应用程序中的数据断点
监视窗口搜索用户体验更新

我们更新了用于在“自动”、“局部变量”和“监视”窗口中搜索的 UI,界面更加简单。 “深度搜索”功能已更改为一个下拉菜单,因此可快速选择初始搜索和后续搜索所需的深度。

应用代码样式首选项
  • 现在可使用 dotnet format 全局工具从命令行应用代码样式偏好。 要进行安装,需要 .NET Core 2.1 SDK 或更高版本。 在常用终端中运行以下命令:dotnet tool install -g dotnet-format --version 3.0.0-beta4-19105-10
dotnet format video
从命令行运行 dotnet 格式。

扩展性

  • 无法再从 Visual Studio 2019 中安装使用 V1 vsixmanifest 扩展格式生成的扩展。 V1 是在 Visual Studio 2010 中引入的,在 Visual Studio 2017 中已弃用,因为它可能会导致 Visual Studio 出现可靠性问题。 在 Visual Studio 2019 中,已完全删除对 V1 的支持。 应该将针对 Visual Studio 2019 的扩展重新生成为 vsixmanifest 格式的 V2 或 V3。
  • 以同步方式自动加载扩展时,用户现在可收到通知。 请注意,在此版本中,扩展可正常加载并运行,但在下一次 Visual Studio 2019 更新中可能无法正常运行。 有关详细信息,请参阅我们有关如何通过更新扩展的自动加载行为来提高关键方案的响应能力的博客文章
统一的 SDK NuGet 包

过期,扩展创建者需要在其扩展中使用 Visual Studio SDK 的 NuGet 包时,必须单独一个一个地引用。 各个包的版本并不总是相一致,因此通常导致在编译时出现依赖项冲突和运行时问题。

若要解决这些问题,请使用名为 Microsoft.VisualStudio.SDK 的新包,该包中包含构成 Visual Studio SDK 的所有包的依赖项。 使用此包可解决版本不匹配的问题以及轻松知晓要使用的版本。 只需使用对应于扩展支持的 Visual Studio 的最低版本的包版本,即可访问整个 SDK。

现在,只存在 15.9 版的 SDK 包,但在随后的几个月里将在版本 14.0 的基础上发布更多包版本。

新的和更新的项目模板

VSIX Project 模板已进行过多次更新,旨在简化该模板并使其更易于使用:

  • 使用新的统一的 SDK NuGet 包
  • 包括 AsyncPackage 类
  • 编译包不再需要 .resx 文件
  • 以 .NET Framework 4.7.2 为目标

已创建一个新的空 VSIX Project 模板,该模板与VSIX Project 模板相同,只是未包含 AsyncPackage 类。 它还应用统一的 SDK NuGet 包,用于为 MEF 扩展和其他无包扩展类型提供一个良好的起点。

免费/付费/试用

查看扩展是被标记为免费、付费还是试用并不是那么容易。 现在这种情况已发生改变,在“扩展和更新”对话框内部,每个扩展都将被清晰地标记为试用或付费。 没有试用/付费标签的扩展即为免费。

测试工具

“测试”窗口中以前未记录但标记为公共的其他 API 已添加到弃用列表中。

源代码管理

  • 团队资源管理器的 Git 工具现在支持 Git 储藏,因此可暂时存储更改,以便处理其他任务。
  • 在 Visual Studio 2019 中使用全新的拉取请求体验,在无需离开 IDE 的情况下查看、运行甚至调试来自 Azure Repos 的拉取请求。 要开始使用,可从 Visual Studio Marketplace 下载 Visual Studio 的拉取请求扩展。
New Pull Request Experience
新拉取请求体验

MSBuild

  • MSBuild 工具集版本已从 15.0 更改为 CurrentMSBuild.exe 现包含在 %VSINSTALLDIR%\MSBuild\Current\Bin\MSBuild.exe 中。
  • MSBuild(和 Visual Studio)现面向 .NET Framework 4.7.2。 若想要使用新的 MSBuild API 功能,必须升级程序集,但现有代码将继续工作。

C#

对于 Visual Studio 2019 之前的每个版本,默认的 C# 语言版本始终等同于“最新版本”。 在 Visual Studio 2017 中,C# 发展并发布了三个次要版本:7.1、7.2 和 7.3。 但是,新项目仍然默认为 C#7.0。 对于想要使用新功能但不得不手动更改每个新项目的语言版本的 C# 开发人员而言,这种结果令人沮丧。

若要解决此问题,默认的 C# 语言版本由其目标框架确定:

  • 如果以 .NET Core 3.0 预览版为目标,则 C# 语言版本将是 C#8.0 预览版。
  • 如果以 .NET Framework 或任何非 .NET .NET 预览版为目标,则 C# 语言版本将是 C#7.3 及早期版本。

这允许默认使用最新的稳定 C# 语言功能,并且在使用 .NET Core 预览时,使用与 .NET Core 3.0 预览一致的 C#8.0 预览语言功能。

如果在项目或道具文件中通过 LangVersion 指定语言版本,则该语言版本将覆盖先前描述的默认值。

C++

  • Visual Studio Live Share 现支持 C++,可用于实现实时协作。
  • 通过使用可选扩展 IntelliCode 来节省时间,该扩展使用其广泛的培训和代码上下文,将用户最有可能使用的内容放在完成列表的顶部。 对于 C++,IntelliCode 可针对使用 STL 等热门库提供最大帮助。
  • 我们修改了几个项目模板名称和描述以适应更新的“新建项目”对话框。
  • 我们删除了 Clang/C2 实验性组件。 使用 MSVC 工具集,以完全符合 /permissive- 和/或 /std:c++17 的 C++ 标准,或者适用于 Windows 的 Clang/LLVM 工具链。 有关更多详细信息,请参阅 Visual C++ 团队博客
  • 我们已弃用 C++ 编译器 /Gm 交换机。 如果已显式定义,请考虑在生成脚本中禁用 /Gm 交换机。 或者,也可以安全地忽略针对 /Gm 的弃用警告,因为在使用“将警告视为错误”(/WX) 时不会将其视为错误。
  • 现在,C++ Android 体验默认为 Android SDK 25 和 Android NDK 16b。
效率
  • 代码分析现可自动在后台运行。 键入时,警告在编辑器中显示为绿色波形曲线。
  • 模板栏现使用速览窗口用户界面而不是模式窗口,它支持嵌套模板,并且可以将任何默认参数预先填充到速览窗口中。
  • 通过相关行上的灯泡菜单可使用 NULL->nullptr 代码分析警告 (C26477 USE_NULLPTR_NOT_CONSTANT) 的自动修复功能,C++ Core Check 类型规则集中默认启用了此功能。 IDE 中的其他快速修复功能包括添加缺失的 #include 指令、修复缺失的分号,以及修复不正确的“*”、“&”用法。
  • 对于 C++ 控制台和桌面应用,默认情况下不再生成预编译头文件。
  • “转到定义”现可用于 #include 指令,可打开相应的文件。 它包含 F12 快捷方式,提供了一种用于浏览代码的简便方法。
  • 将鼠标悬停在代码块的右大括号上,可获得有关此代码块上下文的一些有用信息。
  • 在 ConcurrencyChecker 中添加了对<互斥>标头中常见的 STL 类型的支持。
  • 生存期配置文件检查器的部分更新的实现可用于检测无关联指针和引用。
  • 在编译器中为 C++ 20 运算符 <>(“宇宙飞船”)添加了初始支持,可用于进行三向比较。
CMake
  • 为 CMake 项目中的 C++ 文件改进了 IntelliSense 性能。
  • Visual Studio 可检测 Linux 计算机上是否具有兼容的 CMake 版本,从而帮助你在 Linux 上使用 CMake 启动 C++ 开发。 如果没有兼容的版本,它会自行安装。
  • CMake 设置编辑器提供了 CMakeSettings.json 的替代方案,并且可进行一些 CMakeGUI 奇偶校验。
  • CMake 菜单已被删除并进行了调整,以便与项目和解决方案更加匹配。
  • CMakeSettings 中不兼容的设置(例如不匹配的体系结构或不兼容的 CMake 生成器设置)在 JSON 编辑器中显示为波形曲线,并在错误列表中显示错误。
  • 对于运行 vcpkg integrate install 后在 IDE 中打开的 CMake 项目,将自动为其检测并启用 vcpkg 工具链。 可通过在 CMakeSettings 中指定空工具链文件来关闭此行为。
  • CMake 项目现默认启用“仅我的代码”调试。
  • 静态分析警告现可在后台进行处理,并显示在 CMake 项目的编辑器中。
  • 我们为 CMake 项目添加了更明晰的有关生成和配置的“开始”及“结束”消息,并添加了对 Visual Studio 生成进度用户界面的支持。 此外,“工具”>“选项”中现提供 CMake 详细级别设置,用于在输出窗口中自定义 CMake 生成和配置消息的详细级别
  • CMakeSettings 现支持“cmakeToolchain”设置,无需手动修改 CMake 命令行即可指定工具链。
后端
  • 我们已实现生成吞吐量改进,包括 PDB 类型合并和创建过程中,链接器对文件 I/O 和链接时间的处理。
  • 添加了对 OpenMP SIMD 矢量化的基本支持。 通过新的 CL 开关 -openmp:experimental 即可启用此项支持。 这样会使带“#pragma omp simd”注释的循环被矢量化。 无法保证矢量化,已注释但未矢量化的循环将收到系统警告。 如果不支持 SIMD 子句,则只会将其忽略并报告警告。
  • 添加了一个新的内联命令行开关 -Ob3,它是 -Ob2 的更高版本。 -O2(优化速度二进制)仍默认为 -Ob2;如果发现编译器内联不足,请考虑传递 -O2 -Ob3。
  • 为了支持循环(包含对数学库函数的调用和整数除法等某些其他操作)的手动矢量化,添加了对短向量数学库 (SVML) 内部函数(用于计算 128 位、256 位或 512 位的向量等效项)的支持。 有关支持的函数的定义,请参阅 Intel 内部函数指南
  • 新的和已改进的优化:
    • 可使用 SIMD(向量)内部函数简化表达式的常量合并和算法(针对浮点和整数形式)
    • 提供更强大的分析功能,帮助从控制流(if/else/switch 语句)中提取信息以删除被证明为 true 或 false 的分支
    • 改进了 memset 展开,可使用 SSE2 向量指令
    • 改进了无用 struct/class 副本(特别是针对按值传递的 C++ 程序)的删除操作
    • 改进了使用 memmove(如 std::copy 或 std::vector 和 std::string 构造)优化代码的过程
弃用功能
  • 托管的 C++ 测试项目模板不再可用。 可在现有项目中继续使用托管的 C++ 测试框架,对于新的单元测试,请考虑使用 Visual Studio 为其提供模板(MSTest、Google Test)的某个本机测试框架或托管的 C# 测试项目模板。
  • Visual Studio 安装程序中不再提供 Windows 8.1 SDK。 请将 C++ 项目升级到最新的 Windows 10 SDK。 如果在 8.1 上具有硬依赖项,则可以从 Windows SDK 存档下载它。
  • Windows XP 目标将不再适用于最新的 C++ 工具集。 仍支持使用 VS 2017 级 MSVC 编译器和库的 XP 目标定向,并且可通过“单个组件”进行安装。
  • 我们的文档不推荐使用 Merge 模块部署 Visual C++ 运行时。 此版本执行了额外步骤,将 MSM 标记为已弃用。 请考虑将 VCRuntime 核心部署从 MSM 迁移到可再发行组件包。
  • ATL COM + 1.0 组件向导、ATL Active Server Pages 组件向导、ATL OLE DB 提供程序向导、ATL 属性页向导、ATL OLE DB 使用者向导、MFC ODBC 使用者、ActiveX 控件中的 MFC 类和类型库中的 MFC 类。 这些技术的示例代码存档在 VCSamples GitHub 存储库中。

F#

Visual Studio 2019 中的 F# 改进主要包括三个方面:

  • F# 4.6
  • 中型和大型解决方案的主要性能改进
  • 我们优秀的开放源代码社区开发了大量开源工作
F# 4.6

此版本包含 F# 4.6 语言:

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

F# 和编译器以及 FSharp.Core 已经可见许多改进,尤其是来自开放源代码参与者的改进:

  • fsi.exe 和 fsc.exe 现在默认为 .NET Framework 4.7.2,从而允许加载面向此框架或更低版本的组件 (#4946)。
  • 我们优化了要执行的结构和结构记录上的方法,以及类和基于类的记录上的方法 (#3057)。
  • 我们优化了 F# 代码中组合布尔逻辑的发出 IL(#635)。
  • 优化了在 F# 的字符串中对 + 的使用,以尽可能实现最少的 String.Concat 调用数 (#5560)。
  • 我们修复了 FSharp.Core 包中的一个问题,即包括带有测试资产的某些额外目录。 FSharp.Core 4.5.5 和 4.6.1 中应具有该修补程序 (#5814)。
  • 当用户定义的属性不从 Attribute 类继承时,用户将收到来自 Vasily Kirichenko 的警告。
  • 项目文件中的 AssemblyInformationVersionAttribute 值现在支持任意值,以支持 SourceLink 等方案(#4822)。
  • Steffen Forkmann修复了使用活动模式的非法语法导致内部编译器错误的 bug (#5745)。
  • BooksBaum 修复了错误地将 Module 后缀添加到递归模块中的模块,以匹配唯一差异是通用参数的类型的 bug (#5794)。
  • Alan Ball 改进了类型参数与类型名称不相邻时对错误消息的改进 (#4183)。
  • Teo Tsirpanis 在无效数字文字的错误消息中正确列出了 uint16 文字后缀 (#5712)。
  • 计算表达式的错误消息不再在消息中声明 async,而是 引用“计算表达式”,由 John Wostenberg 实现 (#5343)。
  • Bartoz Sypytkowski 修复了在 F# 交互中错误引用 .dll 时的错误消息 (#5416)。
  • Victor Peter Rouven Müller 修复了错误:静态解析的类型参数无法调用隐藏继承成员的成员 (#5531)。
  • Steffen ForkmannRobert Jeppesen 增加了对编译器的各种较小性能改进。
F# 性能改进

Visual Studio 2019 中 F# 的另一个重点关注领域是中型和大型解决方案的性能。 我们解决了一些长期存在的问题,其中一些可以追溯到 Visual Studio 的第一版 F# 工具。 我们也从优秀的 F# 开源社区获得了一些帮助。

  • 我们改进了 Roslyn 初始化 F# 语言服务的方式。 大型解决方案的类型着色总体上应该会显示地更快。
  • 我们更改了源文本的表示形式可避免在一段时间内产生大量分配,尤其处理大型文件时(#5935#5936#5937#4881)。
  • 我们将小规模编辑的生成缓存更改为文件以便使用更少内存 (#6028)。
  • 我们修改了编译器功能,该功能在输入未识别的令牌时建议只按需计算这些建议,从而在较大的解决方案中缓慢输入时显著减少 CPU 和内存 (#6044)。
  • 我们更改了 IntelliSense,使其默认情况下不再显示未打开的命名空间中的符号。 这显著提高了 IntelliSense 在具有多个引用的项目中的性能。 可以通过“工具”>“选项”>“文本编辑器”>“F#”>“IntelliSense”在设置中重新打开此功能
  • 我们改进了使用类型提供程序在完成列表中生成大量所提供类型时的内存使用率 (#5599)。
  • Avi Avni 修复了将 CPU 和内存使用减少到内部字符串比较算法(用于建议无法识别的名称)的问题 (#6050)。
  • Avi Avni 修复了大型字符串分配中突出的源问题,特别是对于 IDE 工具 (#5922)。
  • Chet Husk 修复了一个来自计算 IntelliSense 的大型对象堆分配的显著来源 (#6084)
F# 工具改进

除了性能改进之外,Visual Studio 2019 的 F# 工具还进行了其他各种改进:

  • 添加 open 语句代码修复现在默认为在文件顶部添加 open 语句。
  • 我们修复了用户代码中的 match! 使结构指南和后续作用域的代码大纲节点失效的 bug (#5456)。
  • 编辑器现在可通过可变值着色将 byrefoutrefref 值正确地标记记录字段的颜色 (#5579)。
  • 我们修复了重命名重构无法识别符号名称中的 ' 字符的 bug (#5604)。
  • 我们修复了一个长期存在的 bug,即重命名 F# 脚本文件导致着色数据丢失 (#1944)。
  • 我们清理了 IntelliSense,这样当按下退格键时,它就不会显示列表中不相关的项。
  • 打开“智能”缩进后,在将 F# 代码粘贴到编辑器中时,现在将对该代码进行格式设置,以匹配基于当前光标位置的相应范围,由 Saul Rennison 实现 (#4702)。
  • Jakob Majocha 修复了 F# 编辑器选项无法同步的问题(#5997#5998
  • Eugene Auduchinok 修复了 inherit 子句中构造函数的 IntelliSense 无法显示主构造函数的 bug (#3699)
  • Eugene Auduchinok对 F# 语言服务进行了各种较小的改进
F# 开源基础结构

我们已经完全迁移了 F# 和 F# 工具代码库,以便使用 .NET SDK。 这极大地简化了开发人员的贡献过程,尤其是如果他们不使用 Windows 时。 此外,Jakob Majocha 还根据代码库的变化帮助新参与者清理文档。

Python

根据客户反馈,Visual Studio 2019 包含管理 Python 环境的全面体验:

  • 我们添加了一个新的“添加环境”对话框,简化了在项目中创建和添加虚拟环境和 conda 环境的体验。
  • Visual Studio 安装程序不再安装完整版本的 Anaconda,减小了 Visual Studio 安装大小,避免了升级期间出现错误。
  • Miniconda 作为一个可选组件与 Python 工作负荷捆绑在一起,这样无需安装 Miniconda/Anaconda 即可创建 conda 环境。
  • 如果项目的根目录中存在 requirements.txt(虚拟环境)或 environment.yml(conda 环境),现在系统将自动提示用户添加环境。
  • 修改 Python 文件时,可使用新的 Python 环境工具栏。 利用新的工具栏,可在处理项目、使用“打开文件夹”工作区或其他项目中的松散 Python 文件时,在不同的 Python 解释器之间进行切换。
  • 对在 Python IntelliSense 中自动完成的质量的改进,改进了相对路径和命名空间导入的检测。
  • Django 项目模板已更新,可支持 Django 2.x。
  • 函数返回值现可显示在 Python 调试程序中。
  • 现可创建 VS Live Share 会话并与其他 Visual Studio 用户协作处理 Python 代码。 以前,仅在加入从 Visual Studio Code 创建的会话时才支持 Python。

JavaScript/TypeScript

  • 我们已添加在 Node.js 项目的单元测试中启用 JavaScript 调试的相关支持。 这是 Node.js 客户一直以来所期待的功能。
  • 现在,JavaScript/TypeScript 语言服务将自动加载到安装了 TypeScript NuGet 包npm 包的项目中(NuGet包支持 TypeScript 3.2 及更高版本,npm 包支持 TypeScript 2.1 及更高版本)。
  • 在语言服务方面已实现性能改进,因为提高了语言服务的内存上限,它可以处理更大型的项目。
  • 默认情况下,错误列表中不再显示已关闭的 JavaScript/TypeScript 文件的诊断信息。
  • 旧版 JavaScript 语言服务不再可用。 以前,用户可以选择还原旧版 JavaScript 语言服务。 用户现在可以使用现成的新 JavaScript 语言服务。 新的语言服务基于 TypeScript 语言服务,由静态分析提供支持。 这可提供更好的工具,因此 JavaScript 代码可以从基于类型定义的更丰富的 IntelliSense 中受益。 新服务是轻量服务,比传统服务消耗更少的内存,其代码可以缩放,因而可为用户提供更好的性能。

团队资源管理器和 Azure DevOps

我们改进了 Azure DevOps 中的 Git 工作项体验。

  • 可使用新的标识选取器为自己或其他人员分配工作项。 默认情况下,系统会显示最近使用过的人员列表。 也可使用搜索功能搜索并查找组织中的其他人员。
  • 我们改进了提交消息中的 #mentions 体验。 从 #mention 选取器中选择某个工作项时,该工作项自动添加到“相关工作项”列表中。
Assigning work items and #mention improvements
分配工作项和 #mention 改进

突出显示热路径

  • 在性能探查器的 CPU 使用情况和 DotNet 对象分配工具中,添加了对突出显示热路径功能的支持。 选择调用树中的任何功能,然后按热路径按钮,可展开 CPU 使用情况或 Dot Net 对象分配热路径。 可通过此功能轻松确定 CPU 占用百分比最高或对象分配数最多的函数调用。
Hot path highlighting in the CPU Usage tool
CPU 使用情况工具中突出显示的热路径

NET 和 ASP.NET 工具

  • 所有应用程序的发布配置文件摘要页已进行了各种细微的 UX 改进(新的分区标头和操作/快捷方式)。
  • 将 ASP.NET 应用程序发布到 Azure 应用服务时,发布配置文件摘要页现具有一个名为“依赖项”的新分区。 这一新分区目前可用于将 Azure 存储和 Azure SQL 资源与应用服务实例相关联。 预计未来将通过此机制提供更多 Azure 服务。
  • 通过增加的兼容性,配合使用代码度量和 .NET Core 项目。
  • 通过“工具”>“选项”>“文本编辑器”>“C#”>“代码样式”,使用“从设置生成 .editorconfig 文件”按钮将编辑器设置导出到 Editorconfig 文件
  • 使用 C# 和 Visual Basic 的新 Regex 分析器支持。 现可识别正则表达式,并在其上启用了语言功能。 将字符串传递给 Regex 构造函数时,或者字符串前面紧跟着包含字符串 language=regex 的注释时,可以识别正则表达式字符串。 此版本中包含的语言功能包括分类、大括号匹配、突出显示引用和诊断。
Regular expressions now have parser support
正则表达式分析器支持
  • 现可对未使用的私有成员使用死代码分析,并使用可选的代码修复来删除未使用的成员声明。
  • 访问器上的“查找引用”功能现在仅返回针对该访问器的结果。
  • 我们添加了一个用于生成析构方法的代码修补程序。
  • 将代码粘贴到文件中时,可以添加“Using”语句。 粘贴已识别的代码后会出现代码修补程序,提示添加相关的缺失导入。
  • 现在可使用“Ctrl + .”或“Alt + Enter”,实现更多的重构和快速操作:
    • 用于隐含“await”但省略的情况,现在有编译器警告。
    • 用于将本地函数转换为方法。
    • 用于将元组转换为命名结构。
    • 用于将匿名类型转换为类。
    • 用于将匿名类型转换为元组。
    • 用于 LINQ 查询或 LINQ 方法的 foreach 循环。
  • 现在已添加对在 Azure Kubernetes 服务中运行的 ASP .NET Core 应用程序的支持。 要开始使用,请参阅 GitHub 上的此 docker 示例
  • 性能探查器的 CPU 使用情况工具中现在支持 ASP.NET。
CPU Usage Tool in Performance Profiler
性能探查器中的 CPU 使用情况工具
  • 现可使用查找所有引用 (Shift+F12) 和 CodeLens 在 .NET Core 项目中显示来自 Razor (.cshtml) 文件的结果。 然后,可以导航到相关 Razor 文件中的已识别代码。
  • 我们已经添加了对在 Windows 虚拟机 (VM) 和 VM 规模集上运行的 ASP .NET(核心和桌面)应用程序的支持。
Snapshot debugger target selection UI
Snapshot Debugger 目标选择 UI
  • 使用 FxCop 运行代码分析时,现在可收到警告。 推荐使用 .NET 编译器分析器来执行代码分析。 深入了解如何迁移到 .NET 编译器平台分析器
  • 可移植类库 (PCL) 项目模板不再可用,默认情况下不会安装项目支持。 旨在面向多个平台的新项目应使用 .NET Standard 项目类型。 需要 PCL 项目支持的客户必须从 Visual Studio 安装程序中的“单个组件”选项卡单独安装该组件。
  • “Project.CopyWebSite”命令不再可用。 此功能仅适用于 .NET 的“网站”项目类型。 可通过此功能同步两个网站,使每个网站具有相同版本的文件。 在 Visual Studio 2019 中,可以从 Visual Studio 外部的远程目标复制文件,然后打开项目。
  • 已删除从远程 FTP 位置打开网站项目的功能。 FTP 用户可从 Visual Studio 外部的远程目标复制文件,打开项目并进行更改,然后使用发布功能将它们推送回远程 FTP 位置。
  • ASP.NET 和 Web 工作负载不再安装自定义 CoffeeScript 编辑体验。 Visual Studio 的 TextMate 包提供了使用 CoffeeScript 的卓越体验。
  • 编辑这些文件时,CSSLint 和 CoffeeLint 的内置副本当前生成的 CSS 和 CoffeeScript 错误不再自动呈现。 使用替代方法来运行诸如 npm 或 Visual Studio 任务运行程序资源管理器之类的 Linter。
  • Visual Studio 不再为 Knockout HTML 属性提供 IntelliSense。 在 Visual Studio 2019 中,需要键入属性。
  • 已删除在 ASP.NET 项目中使用旧版 Chrome 调试程序来调试 JavaScript 的功能。 可以继续使用 Visual Studio 中当前内置的 Chrome 调试程序。
  • 已删除在 ASP.NET 项目中使用 JavaScript 控制台功能的能力。 我们建议客户使用其最喜爱的浏览器 devtools 中包含的控制台。

容器工具

  • 添加了简化的面向容器化和调试的单一项目体验:
    • ASP.NET Web 应用程序 (.NET Framework)
    • 控制台应用程序 (.NET Core)
  • 添加了对 ASP.NET Core 应用程序(使用 Alpine 作为基础映像)调试的支持。
  • 添加了对最新 ASP.NET 和 .NET Core 映像的支持。

.NET Core 工具

.NET Core 3.0

如果安装了 SDK 预览版,则可使用此版本创建面向 .NET Core 3.0 的 ASP.NET Core、控制台和类库项目。

如果使用的是 Visual Studio RC,则还需要转到“工具”>“选项”>“项目和解决方案”>“.NET Core”,再勾选“使用 .NET Core SDK 预览版”复选框。 如果在使用 Visual Studio 预览版,则无需执行此操作。 有关此设置及其行为的详细信息,可参阅面向 Visual Studio 2017 版本 15.9 的 .NET Core 工具更新

此外,可使用“dotnet new”命令为 .NET Core 3.0 创建 Windows 窗体或 WPF 项目。 然后,可在 Visual Studio 2019 中打开这些项目。

新功能

从此版本开始,.NET SDK 样式项目的项目文件将作为 Visual Studio 中的一类文件类型。 现支持以下操作:

  • 双击项目节点,可打开项目文件
  • 单击项目节点,可在“预览”选项卡中打开项目文件
  • 可使用“转到全部”(ctrl + T) 按名称查找项目文件
  • 现可使用“在文件中查找”搜索项目文件中的 MSBuild 元素
  • 如果触发项目创作错误,则可以从错误列表中打开

此外,在控制台应用中,.NET SDK 样式的项目现将通过 F5ctrl + F5 应用新集成的控制台体验。 这会使从 Visual Studio 启动控制台应用程序的体验一致化:

  • 对于 F5,当应用执行完毕后,控制台窗口不会自动关闭。 无需再将 Console.Read() 调用添加到控制台应用中。
  • 对于 ctrl + F5,将在应用的后续运行中重复使用控制台窗口。 不再需要关闭控制台窗口的负载。

在新的控制台窗口打开时,按一个键即可使其自动关闭,也可以选择“工具”>“选项”>“调试停止时自动关闭控制台”下的选项将其关闭

现在已将许可证表达式和许可证文件的支持添加到项目属性页中。 这与在 NuGet 中弃用 licenseUrl 的更改一致。

性能改进
  • 大型解决方案的可伸缩性得到了显著改善,允许使用比以前更大的 .NET Core 解决方案。
  • 大型项目的解决方案加载时间已显著减少,加载时的 CPU 和内存使用情况也是如此。
功能奇偶一致性与非 .NET Core 项目相同

可在 16.016.0 预览版 216.0 预览版 316.0 预览版 4 里程碑中找到问题和拉取请求的完整列表。

.NET 效率

  • .NET 重构和代码修复程序:

    • 同步命名空间和文件夹名称
    • 拉取成员,使用对话框选项进行重构
    Pull members up refactoring with dialog options
    “拉取成员”对话框
    • 形参/实参的自动换行/缩进/对齐列表
    • 将匿名类型转换为元组
    • 将表达式/块主体用于 lambda
    • 反转条件表达式和逻辑运算
    • 自动关闭块注释“/”
    • 转换为复合赋值
    • 修复程序隐式类型变量不能是常量
    • 自动修复程序用于在键入内插逐字字符串时用 $@" 替换 @$"
    • 完成 #nullable enable|disable
    • 用于未使用的表达式值和参数的修复程序
    • 使提取接口能保留在同一文件中的修复程序
  • 按读/写对引用进行分类。

  • 为 csharp_prefer_braces 添加 Editorconfig when_multiline 选项。

  • .NET Compiler Platform SDK(又名 Roslyn)提供了新的分类颜色。 可以在“工具”>“选项”>“环境”>“字体和颜色”中调整这些颜色,也可以在“环境”>“预览功能”中,通过取消选中“使用增强颜色”复选框来关闭这些颜色。 我们十分欢迎你提供有关此更改对你的工作流所产生的影响的反馈。

New Roslyn classification colors
新的 Roslyn 分类颜色

ASP.NET 项目中的 JavaScript 调试

  • 如果使用 ASP.NET 项目的“浏览方式...”菜单添加了带有自定义参数的新的 Google Chrome 浏览器,则 Visual Studio 现在将在启动调试时为应用程序启用 JavaScript调试。 启动 Chrome 时,将会应用 Google Chrome 的自定义启动参数。
Adding Google Chrome with Custom arguments using 'Browse with'
使用“浏览方式...”添加带有自定义参数的 Google Chrome
注意:默认情况下,除非提供数据目录的路径作为参数,否则 Visual Studio 将使用不同于常规 Chrome 实例的数据目录启动 Chrome。 因此,如果在使用此 Chrome 实例时需要任何扩展,则需要先安装这些扩展。

ASP.NET 和 Azure Functions 工具

  • Visual Studio 2019 随附创建新项目的新体验。 具体而言,在创建新的 ASP.NET 项目时,Visual Studio 会提供附加对话框,为 ASP.NET 提供特定的选项。 这些附加对话框已进行更新,以匹配该体验其余部分的视觉样式。
  • 目前,Visual Studio 中的发布凭据已进行加密并且存储在发布配置文件的用户文件中,因此不必在每次发布应用程序时重新输入它们。 默认情况下,源代码管理中一般不包含用户文件,因为这些文件中很可能包含不应共享的机密和/或个人信息。 直到现在,如果 Azure Functions 项目的发布配置文件已签入源代码管理,但用户文件未签入到其中,则找不到发布凭据并且无法重复使用发布配置文件。 现在,我们允许编辑这些凭据以及创建新的用户文件,因此可重复使用发布配置文件。

性能向导

在 Visual Studio 2019 中,性能向导中提供的分析体验已移至性能探查器。 可以在性能探查器的检测工具中找到用于采样和检测的 CPU 使用工具。 通过此更改,不再需要性能向导,已从 Visual Studio 2019 中将其删除。 此外,VS 性能命令行工具中的采样选项已被删除,即将推出的预览版中将发布替换命令行工具。

测试工具

  • 现在可以在解决方案资源管理器中右键单击测试、测试类或测试项目,以运行或调试测试。
  • 测试运行现在自动检测在项目属性中设置的处理器体系结构。
  • 诸如 Selenium 和 Appium 等 OSS UI 测试工具经过增强,并得到了社区的强力支持。 由于这些框架已成为行业标准,因此我们不再使用编码的 UI 测试进行 UI 驱动的自动功能测试。 Visual Studio 2019 将是具有编码的 UI 测试功能的最后一个 Visual Studio 版本。 建议使用 Selenium 来测试 Web 应用程序,使用 Appium 和 WinAppDriver 来测试桌面和 UWP 应用。
  • Visual Studio 2019 将是具有负载测试功能的最后一个 Visual Studio 版本。 对于需要负载测试工具的客户,建议使用备用负载测试工具,如 Apache JMeter、Akamai CloudTest 和 Blazemeter。
  • 在 Visual Studio 2019 中,删除了一些以前标记为公开但从未正式记录过的测试窗口 API。 它们在 Visual Studio 2017 中被标记为弃用,提前通告扩展维护人员。 据我们所知,很少有扩展依赖这些 API。 这些 API 包括 IGroupByProvider、IGroupByProvider、KeyComparer、ISearchFilter、ISearchFilterToken、ISearchToken 和 SearchFilterTokenType。 如果此更改影响你的扩展,请通过在开发者社区上提交问题告诉我们。

Visual Studio Kubernetes 工具

Visual Studio Kubernetes 工具以前作为 Visual Studio 2017 的单独扩展提供,现已集成到 Visual Studio 2019 的 Azure 开发工作负荷中

将 Kubernetes 支持添加到新项目中

要将 Kubernetes 支持添加到新项目中,请打开 Visual Studio 并选择“创建新项目”选项。 在“创建新项目”窗口中,搜索 Kubernetes 并选择“适用于 Kubernetes 的容器应用程序”项目模板

Creating a Container Application for Kubernetes
创建适用于 Kubernetes 的容器应用程序

单击“下一步”,然后输入项目名称、位置和解决方案名称。 然后单击“创建” 。 选择要用于该项目的 ASP.NET Core 应用程序模板,然后单击“确定”。 Visual Studio 将自动创建 Dockerfile 和 Helm 图表,可用于生成新的应用程序并将其部署到 Kubernetes 群集。 可根据需要修改这些项目。

将 Kubernetes 支持添加到现有项目

此外,还可以向现有 ASP.NET Core 应用程序添加针对 Kubernetes 的支持。 为此,请在 Visual Studio 2019 中打开项目。 在解决方案资源管理器中,右键单击项目,指向“添加”,然后单击“容器业务流程协调程序支持”

Adding container orchestrator support
添加容器业务流程协调程序支持

在“添加容器业务流程协调程序支持”对话框中,选择“Kubernetes/Helm”并单击“确定”。 Visual Studio 将自动创建 Dockerfile 和 Helm 图表(在名为 charts 的文件夹中),可用于生成应用程序并将其部署到 Kubernetes 群集。 如果已存在这些项目中的任何一个项目,不会将其覆盖。 可根据需要修改这些项目。

创建可公开访问的终结点

向新项目或现有项目添加 Kubernetes 支持时,Visual Studio 会询问是否要为应用程序创建可公开访问的终结点。

Publicly accessible endpoint prompt
可公开访问的终结点提示

如果单击“是”,Visual Studio 将为应用程序配置 Helm 图表,以便在将应用程序部署到 Kubernetes 群集时创建 Kubernetes Ingress 对象。 通过修改 Helm 图表可随时更改此选项。

在 Azure Kubernetes 服务中调试应用程序

将 Kubernetes 支持添加到新项目或现有项目后,可使用 Azure Dev Spaces 功能在活动的 Azure Kubernetes 服务 (AKS) 群集中轻松生成、运行和调试应用程序。 这非常有助于在实际 Kubernetes 群集的上下文中测试项目或调试属于超大型应用程序的服务,而不必在本地复制整个应用程序。 Azure Dev Spaces 还包含可以使开发团队共享 AKS 群集的功能。 有关 Azure Dev Spaces 的详细信息,请参阅 Azure Dev Spaces 文档。 要开始使用此服务,请确保在 Visual Studio 中选择 Azure Dev Spaces 作为调试启动目标。

Selecting Azure Dev Spaces as debug launch target
选择 Azure Dev Spaces 作为调试启动目标

首次在 Dev Spaces 中启动项目之前,请配置要使用的 Azure 订阅和 AKS 群集。 此外,请选择要运行该项目的空间。

Configuring Azure Dev Spaces
配置 Azure Dev Spaces

通常情况下,团队在默认空间运行整个应用程序的最新稳定版本。 然后,在默认空间的子空间运行正在处理的服务版本。 现在没有必要在子空间运行其他服务;Dev Spaces 会自动将来自服务的调用路由到在默认空间运行的服务的稳定版本。 有关如何进行设置的详细信息,请参阅 Azure Dev Spaces 文档中的团队开发教程。 选择正确的订阅、群集和空间后,单击“确定”才能继续进行 Dev Spaces 配置。 如果所选的群集还没有关联的 Dev Spaces 控制器,请在以下对话框中单击“确定”,自动创建一个

Enable Dev Spaces dialog
启用 Dev Spaces 对话框

控制器的创建需要 2 分钟左右。 单击 Visual Studio 窗口左下角的“后台任务”按钮可查看其状态

Azure Dev Spaces controller creation status via Background Tasks
通过“后台任务”按钮显示的 Azure Dev Spaces 控制器创建状态

准备好 Dev Spaces 控制器后,按 F5 或单击工具栏上的 Azure Dev Spaces 调试按钮即可在 AKS 中调试项目

Azure Dev Spaces debug button
Azure Dev Spaces 调试按钮

Dev Spaces 会将代码同步到 Azure、生成包含这些代码的容器映像,然后使用项目中定义的 Helm 图表将其部署到 AKS 群集。 Visual Studio 将打开与群集中运行的服务建立的远程调试连接,这样便可以像调试本地运行的服务一样与其进行交互。

使用 Xamarin 进行移动开发

此版本改进了工作负载大小以及 Android 生成性能和可靠性,并提高了 Xamarin.Android 和 Xamarin.Forms 的生产力。

  • Xamarin 工作负载现在仅 7.69GB,比 Visual Studio 2017 15.9 版减少了 2 倍,比 15.7 版减少了 3 倍。
  • IntelliCode 扩展现在支持 Xamarin.Forms XAML。
“文件”>“新建项目”

对性能进行了改进,旨在缩短新建 Xamarin 项目所需的时间,便于更快地开始生成应用。 现在还将模板使用的 NuGet 包加入工作负荷安装项中,以缩短包还原时间(尤其是在低带宽或脱机情况下)。 在某些情况下,这些改进可使新 Xamarin 项目完全加载和还原的时间减少 50% 左右。

New Xamarin project comparison gif
在 Visual Studio 15.9 版(左)和 Visual Studio 2019(右)中创建新的 Xamarin 项目
生成进度指示器

现可在生成项目时查看更详细的生成进度信息。 在生成期间单击左下角的“后台任务”图标,将显示正在运行的当前生成目标。 这有助于确定生成(目标需要很长时间才能完成的情况)是否仍在运行。

Xamarin build progress indicator
Xamarin 生成进度指示器
Xamarin.Forms 预览器的基本预览模式

不再需要为 Xamarin.Forms XAML 预览器生成项目以显示代码的预览! 如果 XAML 文件中有自定义控件,则可能需要生成项目以预览这些控件,或者将这些控件选择加入设计时渲染

Xamarin.Forms 预览器设备下拉列表

你现在可以在不同的 Android 和 iOS 设备之间切换,以使用新设备下拉菜单预览 Xamarin.Forms XAML。

Xamarin.Forms Device Drop-Down
Xamarin.Forms 设备下拉列表
Xamarin.Forms 属性面板

现在可以在属性面板中编辑 Xamarin.Forms 控件、单元格和布局的最常用属性,并查看 XAML 中立即反映的这些更改。

Xamarin.Forms Property Panel
Xamarin.Forms 属性面板
Xamarin.Forms Shell 模板

我们更新了 Xamarin.Forms 模板以使用最新的 Xamarin.Forms 版本,并为 Xamarin.Forms Shell 应用添加了新的模板选项。 Shell 旨在简化应用,同时提高开发人员的工作效率,专注于渲染速度和内存占用率。 此模板提供适用于 Android 和 iOS 的引导 Shell 应用。

Android 生成性能和可靠性

在 Visual Studio 2017 版本 15.9 和 Visual Studio for Mac 7.7 中,我们进行了初始生成性能和生成准确性改进。 在 Visual Studio 2019 和 Visual Studio for Mac 7.8 中,我们加快了生成和部署速度。

Android Build Performance
*Android 生成速度现在比拿一杯咖啡的速度还快*
  • 现在可使用 Android 的下一代打包工具。 要启用这些功能,请在项目的 .csproj 中添加 MSBuild 标志:
    • aapt2 将 Android 打包文件分为两个步骤:编译和链接。 这可以提高增量生成的性能并提供早期错误报告。 例如,如果单个文件中有更改,则只需重新编译该文件。 <AndroidUseAapt2>True</AndroidUseAapt2>
  • 通过在项目中启用此工具,可以在生成时和运行时增强性能。 有关这些属性的更多详细信息,请参阅有关 Xamarin.Android 中的生成过程的文档。
Android Emulator 改进

在 Visual Studio 2019 中,创建 Android 仿真器图像更加轻松。 我们还继续与 Windows 团队合作,参与 Windows 10 版本 1809 的 2018 年 10 月更新,以提高在 Hyper-V 上运行时 Android 仿真器的性能。

  • 新用户只需按下运行图标即可创建第一张图像。
  • 默认情况下,我们的仿真器采集体验自动确定用户设置的最佳配置,并利用硬件加速(使用 Intel HAXM 或 Hyper-V)和快速启动。
  • 如果要创建其他图像,可以从下拉列表中选择“创建 Android 仿真器”,打开 Android Device Manager
使用 Xamarin.Android 中的生成改进缩短生成时间

我们发布了一组初始生成性能改进。 到目前为止,与之前的版本相比,Xamarin.Android 9.1.1+ 提供显著的生成性能改进。 查看 Xamarin.Android 15.9 和16.0 生成性能比较,了解详细信息。

增强了适用于 Xamarin.Android 的快速部署

到目前为止,在未对应用中打包的任何资产、资源、共享的本机库或继承自 Java.Lang.Object 的用户定义的类进行任何更改的情况下,快速部署会跳过重新生成或重新部署 Android 包(.apk 文件)的步骤,从而缩短了增量部署时间。 增强的快速部署扩展了快速部署支持,现可应用于共享的本机库和继承自 Java.Lang.Object 的类。 使用上述增强功能的快速部署功能,只需在少数情况下(例如,当 AndroidManifest.xml 文件因添加新的 Android.App.ApplicationActivity 子类而发生更改时)生成新的 .apk 文件。 当前预览版默认不启用这些增强功能。 要启用它们,请在 .csproj 文件中将 $(AndroidFastDeploymentType) MSBuild 属性设置为 Assemblies:Dexes

<PropertyGroup> 
  <AndroidFastDeploymentType>Assemblies:Dexes</AndroidFastDeploymentType> 
</PropertyGroup>
Xamarin.Android 中的新一代 Dex Compiler (d8) 和 Code Shrinker (r8) 支持

Xamarin.Android 现支持最新的 Android dex 编译器 (d8) 和 Code Shrinker (r8)。 要启用这些功能,请在 .csproj 文件中,分别将 $(AndroidDexTool)$(AndroidLinkTool) MSBuild 属性设置为 d8r8

  • d8 是新一代 dex 编译器,运行速度更快,生成的 .dex 文件更小,运行时性能更好
<PropertyGroup> 
  <AndroidDexTool>d8</AndroidDexTool>
</PropertyGroup>
  • r8 是一种实现收缩和缩小的新工具,可将 Java 字节代码转换为优化的 dex 代码,取代了对 ProGuard 的需求
<PropertyGroup> 
  <AndroidLinkTool>r8</AndroidLinkTool>
</PropertyGroup>

有关 d8 和 r8 的详细信息,请参阅文档

Xamarin.Android Designer 增强功能

我们对拆分视图中的交互提供了大量有助于提升工作效率的增强功能强。

  • 直接从工具箱拖放到源编辑器,帮助快速构建 Android 布局。
Android Designer Toolbox to Source Editor
  • 直接从源编辑器中的 XML 定义范围中选择元素。 我们通过将插入点位置与相应的 Android 视图同步来实现此功能,这样即可直接从编辑器快速访问属性面板中的元素属性。
Android Designer Source Editor to Property Editor
  • 对 XML 代码使用内联颜色预览,以便查看控件中使用的颜色。
Android Designer Color Preview
  • 使用快速信息功能,将鼠标悬停在某个值上以查找更多相关信息,例如该值的定义位置或颜色的十六进制值。
Android Designer Quick Info
*在操作中快速获取信息*
改进了 Xamarin.Android Designer,同时还提供约束布局初始支持

我们已开始努力改进 Android Designer 的启动速度。 作为此项工作的一部分,我们还改进了设计器在加载时提供的消息传递功能。

Android Designer Output

除了这些改进之外,Android Designer 现在本身支持 Android Pie (9.0) 并为 ConstraintLayout 属性提供自动完成功能。

使用 Xamarin.Android Designer 获得更出色的 XML IntelliSense 和注释优化

使用 IntelliSense 将小组件添加到布局时,现提供完整代码片段,以便从一开始就提供所需的属性。 我们为 Android XML 布局添加了智能注释和取消注释功能。

使用“转到定义”功能来提高工作效率,并在 Android 资源文件和 AndroidManifest.xml 中使用 XML IntelliSense

现可在资源 URL 上通过“Ctrl +单击”,导航到定义它们的文件或行

Android Designer Go-To-Definition

除了布局(颜色、字符串、可绘制资源、Android 清单等)之外,现支持对其他 Android XML 文件应用 IntelliSense/自动完成功能。

通用 Windows 平台

  • IntelliCode 扩展现在支持 XAML。
  • 为了降低 Visual Studio 设置的复杂性并减小其大小,已从 Visual Studio 安装中删除了 Windows Phone 仿真器。 现在需要手动下载该仿真器。
  • 已删除 Windows 10 Fall Creators Update(内部版本 16299)之前面向 Windows 10 SDK 的 UWP 应用 XAML 设计时工具。 要使用 XAML 设计器 XAML 编辑器,请将应用程序的目标重新设置为 Windows 10 版本 1709 或更高版本。
  • 不再支持使用 project.json 定义 NuGet 依赖项的 UWP 测试项目。 必须升级项目才能使用新的 PackageReference 格式。
  • Visual Studio 2019 不再支持 UWP JavaScript 应用。 无法创建或打开 JavaScript UWP 项目(扩展名为 jsproj 的文件)。 有关详细信息,请参与有关创建在 Windows 上运行良好的渐进式 Web 应用 (PWA) 的文档
  • 你可以继续像以前一样附加到 JavaScript UWP 应用,但 Visual Studio 2019 中不再提供 JavaScript 分析工具(网络、CPU 和内存探查器)。

Office 工具模板更新

在 Visual Studio 2019 中,我们对 Office、SharePoint 和 VSTO 模板进行了一些更改。

  • Visual Studio 2017 15.9 中添加的 SharePoint 2019 模板也可在 Visual Studio 2019 中使用。
  • 我们已删除对 SharePoint 顺序工作流或状态机工作流的支持。 虽然无法在 Visual Studio 2019 中创建或打开这些工作流,但可以继续在以前的 Visual Studio 版本中编辑它们。
  • Office 2010 模板将不再可用。 但是,仍可以在 Visual Studio 2019 中打开现有 Office 2010 项目。
  • 已重命名 Office 2013 和 2016 模板,以反映它们支持 Office 2013 及更高版本。

团队资源管理器和 Azure DevOps

我们发布以开发人员为中心的简化型新体验,用于将团队资源管理器连接到 Azure DevOps 项目。

  • 根据分配给你的工作项、你正在关注的工作项、你在讨论中提到的工作项以及基于你的活动的工作项筛选和透视你的视图,从而关注相关工作项。

    • 在每个视图中,可以创建内联工作项、执行简单的内联编辑、将工作项标记为完成,以及将工作项关联到挂起的更改。
  • 从工作项创建本地分支,该工作项可自动将工作项与对该本地分支进行的更改关联。 这是默认体验。 如果要切换到旧版体验,可以在 Visual Studio 中设置工作项体验请注意,此新体验仅适用于 Git 存储库。 TFVC 存储库的新体验将在以下更新中提供

    Azure DevOps Work Item Hub
    *Azure DevOps 工作项中心*
  • 在挂起的更改提交消息中执行 #mentions 时搜索工作项。 有关更多详细信息,请参阅使用“工作项”查看和添加工作项页。

    Azure DevOps #mentions
    *Azure DevOps #mentions*
  • 由于在 Azure DevOps 中的采用率较低,已从 Visual Studio 2019 的 Team Foundation Server Office 集成 2019 插件中删除对 Microsoft Project 的支持。 现在需要将工作项导出到 Excel 并手动将它们粘贴到项目中。

  • 已从 Visual Studio 2019 的 Team Foundation Server Office 集成 2019 插件中删除对 PowerPoint 的支持。 但是,用户仍然可以在 PowerPoint 中创建情节提要,并将它们手动链接到 Azure DevOps 中的工作项。

Application Insights 和 HockeyApp

  • Visual Studio 2019 中已删除 Application Insights 趋势窗口,改用功能更丰富的替代方案。 相反,可以使用 Visual Studio 中的 Application Insights 搜索窗口或 Azure 门户的 Application Insights 中一组功能丰富的诊断工具。
  • 已删除用于添加 HockeyApp SDK 和创建新 beta 发行版的向导。 建议使用 HockeyApp 的后续版本 Visual Studio App Center。 用户仍然可以正常使用 HockeyApp,除非 Visual Studio 中没有这些快捷方式。

Release Notes Icon Visual Studio 2019 RC 中已修复的问题

最近更新时间:2019 年 4 月 26 日


已知问题

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

Visual Studio 2019 Known Issues

反馈和建议

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


Blogs

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


Visual Studio 2019 发行说明历史记录

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


返回页首