RCLogoVisual Studio 2019 版本 16.7 发行说明


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


注意

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



支持的时间范围

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

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

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

Visual Studio 2019 版本 16.7 发行版

Visual Studio 2019 已存档的发布说明

Visual Studio 博客

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


Release Notes Icon Visual Studio 2019 版本 16.7.28

发布日期:2022 年 4 月 19 日

此次发布的 Visual Studio 2019 版本 16.7.28 内容

  • 修复了 16.7.27 的 vctip.exe 回归

Release Notes Icon Visual Studio 2019 版本 16.7.27

发布日期:2022 年 4 月 12 日

此次发布的 Visual Studio 2019 版本 16.7.27 内容

安全顾问公告

CVE-2022-24765 特权提升漏洞 Git for Windows 中存在潜在的特权提升漏洞,其中 Git 操作可以在存储库外部运行,同时搜索 Git 目录。 Git for Windows 现已更新为版本 2.35.2.1。

CVE-2022-24767 DLL 劫持漏洞 在 SYSTEM 用户帐户下运行卸载程序时,Git for Windows 安装程序中存在潜在的 DLL 劫持漏洞。 Git for Windows 现已更新为版本 2.35.2.1。

CVE-2022-24513 特权提升漏洞 当 Microsoft Visual Studio 更新程序服务错误分析本地配置数据时,存在潜在的特权提升漏洞。


Release Notes Icon Visual Studio 2019 版本 16.7.26

发布日期:2022 年 3 月 8 日

此次发布的 Visual Studio 2019 版本 16.7.26 内容

安全顾问公告

CVE-2020-8927 漏洞 .NET 5.0 和 .NET Core 3.1 中存在远程代码执行漏洞,其中在 1.0.8 之前的 Brotli 库版本中存在缓冲区溢出。

CVE-2022-24464 漏洞 分析某些类型的 http 表单请求时,.NET 6.0、.NET 5.0 和 .NET CORE 3.1 中存在拒绝服务漏洞。

CVE-2022-24512 漏洞 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在远程代码执行漏洞,其中堆栈缓冲区溢出发生在 .NET Double Parse 例程中。

CVE-2021-3711 OpenSSL 缓冲区溢出漏洞 OpenSSL 中存在潜在的缓冲区溢出漏洞,Git for Windows 会使用该漏洞。 Git for Windows 现已更新为版本 2.35.1.2,解决了此问题。


Release Notes Icon Visual Studio 2019 版本 16.7.25

发布时间:2022 年 2 月 8 日

此次发布的 Visual Studio 2019 版本 16.7.25 内容

安全顾问公告

CVE-2022-21871 诊断中心标准收集器运行时权限提升漏洞 若诊断中心标准收集器错误处理数据操作,就存在权限提升漏洞


Release Notes Icon Visual Studio 2019 版本 16.7.24

发布日期:2022 年 1 月 11 日

此次发布的 Visual Studio 2019 版本 16.7.24 内容

  • 修复了当 Windows 终端被用作默认终端时,无法多次调试应用程序的问题。
  • 安装修补程序以解除对受限配置客户的限制
  • 修复了阻止客户端更新一个更新的引导程序的问题。 一旦客户端使用 2022 年 1 月版本或更高版本随附的引导程序和安装程序,所有使用后续引导程序的更新都应在产品生命周期内有效。

来自开发者社区


Release Notes Icon Visual Studio 2019 版本 16.7.23

发布时间:2021 年 12 月 14 日

此次发布的 Visual Studio 2019 版本 16.7.23 内容

  • 将 Python 3.9.7 添加到了 Python 工作负载。 由于安全漏洞,删除了 Python 3.7.8。

安全顾问公告

CVE-2021-43877 漏洞 ANCM 中存在一个特权提升漏洞,当 .NET Core、.NET 5 和 .NET 6 应用程序托管在 IIS 中时,该漏洞可能会允许提升特权


Release Notes Icon Visual Studio 2019 版本 16.7.22

发布时间:2021 年 11 月 16 日

此次发布的 Visual Studio 2019 版本 16.7.22 的内容

  • 引导程序现在尊重 --useLatestInstaller 参数,这会导致最新安装程序集成到布局中。 此最新安装程序随 Visual Studio 2022 一起提供,支持企业希望将其客户从一个布局位置转换到另一个布局位置的场景。 有关详细信息,请参阅 [Visual Studio 管理员指南](* 引导程序现在遵循 --useLatestInstaller 参数,这会导致最新的安装程序集成到布局中。此最新安装程序随 Visual Studio 2022 一起提供,使企业能够将客户端从一个布局位置转换为另一个布局位置的方案。有关详细信息,请参阅 Visual Studio 管理员指南。)。

Release Notes Icon Visual Studio 2019 版本 16.7.21

发布时间:2021 年 11 月 9 日

此次发布的 Visual Studio 2019 版本 16.7.21 的内容

  • 修复了导致开始菜单快捷方式链接消失的 bug。 仅在更新同一计算机上不同产品 SKU 的多个实例时,才会出现该 bug。

安全顾问公告

CVE-2021-42319 权限提升漏洞 Visual Studio 安装程序中包含的 WMI 提供程序存在权限提升漏洞

CVE-2021-42277 诊断中心标准收集器服务权限提升漏洞 当诊断中心标准收集器错误处理文件操作时,就存在权限提升漏洞


Release Notes Icon Visual Studio 2019 版本 16.7.20

发布时间:2021 年 10 月 12 日

此次发布的 Visual Studio 2019 版本 16.7.20 的内容

安全顾问公告

CVE-2021-41355 .NET 5.0 中存在泄露漏洞 当 System.DirectoryServices.Protocols.LdapConnection 在 Linux 上以纯文本形式发送凭据时,.NET 中存在信息泄露漏洞

CVE-2020-1971 OpenSSL 拒绝服务漏洞 Git 使用的 OpenSSL 库中存在潜在的拒绝服务漏洞

CVE-2021-3449 OpenSSL 拒绝服务漏洞 Git 使用的 OpenSSL 库中存在潜在的拒绝服务漏洞

CVE-2021-3450 OpenSSL 拒绝服务漏洞 Git 使用的 OpenSSL 库中存在潜在的标志绕过漏洞


Release Notes Icon Visual Studio 2019 版本 16.7.19

发布日期:2021 年 9 月 14 日

此次发布的 Visual Studio 2019 版本 16.7.19 内容

安全顾问公告

CVE-2021-26434 Visual Studio 错误的权限分配特权提升漏洞 安装了使用 C++ 的游戏开发并选择了 Unreal Engine 安装程序工作负载后,Visual Studio 中存在权限分配漏洞。 该系统在安装过程中容易受到 LPE 的攻击,它会创建一个对所有用户都具有写入访问权限的目录。

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


Release Notes Icon Visual Studio 2019 版本 16.7.18

发布日期:2021 年 8 月 10 日

此次发布的 Visual Studio 2019 版本 16.7.18 内容

  • 修复了影响 update 命令的命令行执行的问题。 如果第一次更新失败,则后续发出 update 命令现在会导致更新从中断的位置继续先前的操作。

安全顾问公告

CVE-2021-26423 .NET Core 拒绝服务漏洞 提供 WebSocket 终结点的 .NET (Core) 服务器应用程序在尝试读取单个 WebSocket 帧时可能会陷入无限循环,此时存在拒绝服务漏洞

CVE-2021-34485 .NET Core 信息泄露漏洞 当工具创建的用于收集故障转储和按需转储的转储在 Linux 和 macOS 上使用全局读取权限创建时,存在信息泄露漏洞

CVE-2021-34532 ASP.NET Core 信息泄露漏洞 当因无法解析 JWT 令牌而记录该令牌时,存在信息泄露漏洞。


Release Notes Icon Visual Studio 2019 版本 16.7.17

发布时间:2021 年 7 月 13 日

此次发布的 Visual Studio 2019 版本 16.7.17 内容

  • .NET 3.1.411 SDK 已插入 Visual Studio 2019。

Release Notes Icon Visual Studio 2019 版本 16.7.16

发布日期:2021 年 6 月 08 日

此次发布的 Visual Studio 2019 版本 16.7.16 内容

安全顾问公告

CVE-2021-31957 ASP.NET 拒绝服务漏洞 当 ASP.NET Core 未正确处理客户端断开连接的情况时,存在拒绝服务漏洞


Release Notes Icon Visual Studio 2019 版本 16.7.15

发布日期:2021 年 5 月 11 日

在此版本 Visual Studio 2019 v16.7.15 中

  • 修复了管理员创建用于部署更新的 Visual Studio 新布局时导致更新失败的问题。 由于布局已移动位置,客户端计算机更新将会失败。

安全顾问公告

CVE-2021-27068 在嵌套文件夹中种植 python.exe 时可以使用 RCE 打开包含 python 代码的工作区并且该工作区的脚本子文件夹中包含 python.exe 时,存在远程代码执行漏洞

CVE-2021-31204 .NET Core 权限提升漏洞 当用户在基于 Linux 或 macOS 的操作系统上运行单个文件应用程序时,.NET 5.0 和 .NET Core 3.1 中存在权限提升漏洞


Release Notes Icon Visual Studio 2019 版本 16.7.14

发布日期:2021 年 4 月 13 日

在此版本 Visual Studio 2019 v16.7.14 中

  • 优化器错误地删除活动代码
  • 在正常输出详细级别还原包时,NuGet 将报告包源和包内容哈希
  • NuGet 会在全局包文件夹中将包源保存在该包的 .nupkg.metadata 文件中。 全局包文件夹中的现有包不会获得此附加信息。 可以清除全局包文件夹以收集所有包的包源信息。

安全顾问公告

CVE-2021-27064 Visual Studio 安装程序权限提升漏洞 当 Visual Studio 安装程序在提升状态下执行反馈客户端时,存在远程代码执行漏洞

CVE-2021-28313 / CVE-2021-28321/ CVE-2021-28322 诊断中心标准收集器服务权限提升漏洞 当诊断中心标准收集器错误处理数据操作时,存在权限提升漏洞


Release Notes IconVisual Studio 2019 v16.7.13

发布时间:2021 年 3 月 9 日

在此版本 Visual Studio 2019 v16.7.13 中

安全顾问公告

CVE-2021-21300 Git for Visual Studio 远程代码执行漏洞 Visual Studio 克隆恶意存储库时存在远程代码执行漏洞

CVE-2021-26701 .NET 远程代码执行漏洞 由于文本编码的执行方式,.NET 5 和 .NET Core 中存在远程代码执行漏洞


Release Notes Icon Visual Studio 2019 版本 16.7.12

发布时间:2021 年 2 月 09 日

此次发布的 Visual Studio 2019 版本 16.7.12


Release Notes Icon Visual Studio 2019 版本 16.7.11

发布时间:2021 年 2 月 09 日

此次发布的 Visual Studio 2019 版本 16.7.11

Visual Studio 2019 版本 16.7.6 的优化编译器中的 bug

安全顾问公告

CVE-2021-1639 TypeScript 语言服务远程代码执行漏洞 当 Visual Studio 加载包含 JavaScript 或 TypeScript 代码文件的恶意存储库时,存在远程代码执行漏洞

CVE-2021-1721 .NET Core 拒绝服务漏洞 在 X509 证书链生成期间创建 HTTPS Web 请求时,存在拒绝服务漏洞

CVE-2021-24112 .NET 5 和 .NET Core 远程代码执行漏洞 当图形界面仍然引用元文件时,在处理元文件时存在远程代码执行漏洞。 此漏洞仅存在于在 MacOS 或 Linux 上运行的系统中。


Release Notes Icon Visual Studio 2019 版本 16.7.10

发布时间:2021 年 1 月 12 日

此次发布的 Visual Studio 2019 版本 16.7.10

安全顾问公告

CVE-2021-1651 / CVE-2021-1680 诊断中心标准收集器服务权限提升漏洞 当诊断中心标准收集器错误处理数据操作时,存在权限提升漏洞

CVE-2020-26870 Visual Studio 安装程序远程代码执行漏洞 当 Visual Studio 安装程序尝试显示恶意 markdown 时,存在远程代码执行漏洞

CVE-2021-1723 .NET Core 和 Visual Studio 拒绝服务漏洞 Kestrel 的实现中存在拒绝服务漏洞


Release Notes Icon Visual Studio 2019 版本 16.7.9

发布时间:2020 年 12 月 8 日

此次发布的 Visual Studio 2019 版本 16.7.9

安全顾问公告

CVE-2020-17156 Visual Studio 远程代码执行漏洞 Visual Studio 克隆恶意存储库时存在远程代码执行漏洞


Release Notes Icon Visual Studio 2019 版本 16.7.8

发布时间:2020 年 11 月 10 日

此次发布的 Visual Studio 2019 版本 16.7.8 内容

安全顾问公告

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



Release Notes Icon Visual Studio 2019 版本 16.7.7

发布日期:2020 年 10 月 27 日

此次发布的 Visual Studio 2019 版本 16.7.7 内容


Release Notes Icon Visual Studio 2019 版本 16.7.6

发布日期:2020 年 10 月 13 日

此次发布的 Visual Studio 2019 版本 16.7.6 内容


Release Notes Icon Visual Studio 2019 版本 16.7.5

发布日期:2020 年 9 月 29 日

此次发布的 Visual Studio 2019 版本 16.7.5 内容


Release Notes Icon Visual Studio 2019 版本 16.7.4

发布日期:2020 年 9 月 21 日

此次发布的 Visual Studio 2019 版本 16.7.4 内容

  • 添加对 Xcode 12.0 GM 的支持。
  • 现支持设置在 Info.plist 编辑器中设为主题色的颜色。

Release Notes Icon Visual Studio 2019 版本 16.7.3

发布日期:2020 年 9 月 8 日

此次发布的 Visual Studio 2019 版本 16.7.3 内容

安全顾问公告

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,并对其名称进行百分号编码。

此次发布中已修复的其他问题

  • 解决了编译器对使用模式匹配的 switch 语句或 switch 表达式崩溃的问题。
  • 通过终止测试运行还原了单元测试的“停止调试 (Shift +F5)”工作流。
  • 防止了当 WinForms .NET Core 设计器具有未保存的更改时切换项目配置导致 VS 崩溃的问题。
  • 如果 .NET Core 不受支持的版本在 VS 安装之外被删除,那么将不再在修复或升级期间重新安装它们。
  • 解决了“在文件中查找”中未准确搜索到外部依赖项的问题。
  • 在解决方案资源管理器上下文菜单的 Git 子菜单中重新引入了“提交…”按钮。
  • 修复了导致 TFVC 签入说明标签不可见的 bug。
  • 解决了将 SDK 样式的 csproj 中的 WinForm 设计器与多个目标框架结合使用时出现崩溃的问题。
  • 修复了 <d:Style.DataContext> 报告“无效标记”错误的问题。

Visual Studio 2019 版本 16.7.3 中修复的开发者社区内的主要问题


Release Notes Icon Visual Studio 2019 版本 16.7.2

发布日期:2020 年 8 月 18 日

此次发布的 Visual Studio 2019 版本 16.7.2 内容

Visual Studio 2019 版本 16.7.2 中修复的开发者社区内的主要问题


Release Notes Icon Visual Studio 2019 版本 16.7.1

发布日期:2020 年 8 月 11 日

此次发布的 Visual Studio 2019 版本 16.7.1 内容

Visual Studio 2019 版本 16.7.1 中修复的开发者社区内的主要问题


Release Notes Icon Visual Studio 2019 版本 16.7.0

发布日期:2020 年 8 月 5 日

此次发布的 Visual Studio 2019 版本 16.7.0 内容

C++

  • 我们的远程 C++ 支持现涵盖更广泛的 Linux 发行版和 Shell,包括 sh、csh、bash、tsch、ksh、zsh 和 dash。 可通过 ConnectionManager.exe 修改新的“shell”属性,覆盖为远程连接选择的 Shell。 此支持已通过基于 MSBuild 的 Linux 项目以及面向远程 Linux 系统或 WSL 的 CMake 项目进行测试。
  • 你现可使用 Ninja(一种可超快速评估增量生成的生成系统)缩短基于 MSBuild 的 Linux 项目的增量生成时间。 你可通过在“常规属性”页面中将“启用增量生成”设置为“使用 Ninja”,选择使用此功能。 Ninja (ninja-build) 必须安装在远程 Linux 系统或 WSL 上。
  • 实现了新的 C++20 标准库功能。 有关详细列表,请参阅 GitHub 上的 STL 更改日志
  • 现可在连接管理器中编辑和设置默认远程 SSH 连接。 这意味着你可编辑现有远程连接(例如在其 IP 地址更改时),还可设置在 CMakeSettings.json 和 launch.vs.json 中使用默认连接。 借助远程 SSH 连接,可直接通过 Visual Studio 在远程 Linux 系统上生成和调试 C++ 项目。
Edit remote connections in the Connection Manager
在连接管理器中编辑远程连接
  • 增强了对 Visual Studio 中 Clang on Windows (clang-cl) 的 IntelliSense 支持。 clang include 路径现包含 clang 库,我们改进了在使用 std 库时编辑器内的波形曲线显示效果,还添加了对 clang 模式下 C++2a 的支持。
  • 现在可以尝试为代码错误加下划线,并在 C++ 项目中查看更多建议的快速修补程序。 为启用此功能,请转到“工具”>“选项”>“文本编辑器”>“C/ C++”>“试验性”> 将“禁用试验性代码 Linter”设置为 false。 通过 C++ 团队博客了解详细信息。
IntelliSense code linter
IntelliSense 代码 Linter
  • 添加了后面 4 条新的代码分析规则,在 C++ 中加入了额外的安全功能:C26817C26818C26819C26820
  • 我们针对使用 gdbserver 在远程系统上调试 CMake 项目添加了一流的支持。
  • 在 Visual Studio 中使用 C++ AddressSanitizer 的试验性实现来轻松查找内存损坏错误,现可用于 x64 本机项目。 我们现在支持使用调试运行时(/MTd、/MDd、/LDd)。
  • IntelliSense 现在具有对概念、指定的初始化表达式和其他几个 C++20 功能的基本支持。
  • .ixx 和 .cppm 文件现在已被视为 C++,并将由语法突出显示和 IntelliSense 以这种方式处理。

动态定义播放列表

现在,你可以基于项目、类或命名空间动态地定义播放列表。 这意味着,你可以将播放列表配置为包括某个项目/类/命名空间中的所有内容;添加到该组的任何新测试都将自动包含在播放列表中!

  • 通过在测试资源管理器中右键单击项目、命名空间或类分组来创建播放列表。
Test Explorer: Create a playlist
测试资源管理器:创建播放列表
  • 单击工具栏中的“编辑”按钮,编辑要包含在播放列表中的组。 将显示复选框。 根据需要编辑组。
Test Explorer: Edit a playlist
测试资源管理器:编辑播放列表
  • 这些播放列表不是静态测试列表,而是基于规则动态更新。 如果想要更好地了解哪些规则生成动态播放列表,请使用“保存”按钮将播放列表文件保存到磁盘中,并查看生成的 xml 格式的规则。
PlayList file dynamic rule set
播放列表文件动态规则集
  • 你可以继续包含/排除个别测试,播放列表可以更新其动态规则,也可以切换回以静态列表的形式跟踪测试。 还可以直接编辑播放列表 xml 文件,使用特征来定义动态组。

Git 效率

通过切换开启“工具 | 选项 | 环境”中的“新 Git 用户体验”预览功能,以使用这种体验。

  • 创建新的 Git 存储库,先从任何文件夹或空白的新文件夹开始
  • 在开始新的克隆操作之前,请保存并关闭已打开的文件夹或解决方案
  • 在提交文本框中清晰查看提交内容或明确隐藏消息错误
  • 在新的 Git 存储库窗口中查看和管理树视图中的 Git 分支
  • 使用 Git 存储库窗口在每个分支的历史记录关系图中切换并与之交互
  • 在 Git 存储库窗口中查看传入和传出的提交内容
  • Git 生产力团队博客,其中有最新功能的更多细节
Manage branches and view history in a focused Git Repository window
在聚焦的 Git 存储库窗口中管理分支和查看历史记录

结合以下项使用 Git 集中合并编辑器来解决合并冲突:

  • 出现合并冲突的文件中的信息栏,它会提示你打开合并编辑器
  • 合并编辑器中信息更丰富的标题和描述文字,以及更有序的布局
  • 冲突中的差异,它们与匹配和行一致、显示单词级别的差异,并在仅空格存在差异时显示可见空格。
  • 针对文件级添加/添加冲突的双向合并
  • 单击一下即可对照单侧内容解决所有冲突的能力
  • 只关注冲突而忽略没有冲突的差异的开关
New Merge Editor Experience
使用合并编辑器解决合并冲突

JavaScript/TypeScript

  • 已更新“完成”和“快速信息”的实现以更好地支持 LiveShare 场景。

本地 Kubernetes 进程

Local Process with Kubernetes
本地 Kubernetes 进程

通过本地 Kubernetes 进程,你可在开发工作站上编写、测试和调试 .NET 代码的同时,在 Kubernetes 群集上与其余应用程序或服务保持连接。 将开发工作站连接到群集后,就无需再在开发计算机上手动运行和配置附属服务。 群集中的环境变量、连接字符串和卷可用于你在本地运行的微服务代码。 无需 Dockerfile 或 Kubernetes 清单等额外的资产。 可像平时一样运行、调试和测试你的 .NET 代码。

要启用本地 Kubernetes 进程,请转到“工具”>“选项”>“环境”>“预览功能”,然后选择“对 Kubernetes 服务启用本地调试”。

Enable Preview Features
启用预览功能

对于 .NET 控制台应用程序,需要额外执行步骤, 即安装“Microsoft.VisualStudio.Azure.Kubernetes.Tools.Targets”Nuget 包。

.NET 效率

当存在抑制运算符但该运算符无效时,现会显示一个警报和代码修复。 还会提供第二个代码修复,它建议了正确的取非表达式。 将光标放在抑制运算符上。 按 (Ctrl + .) 触发“快速操作和重构”菜单 。 接下来,在下列各项中选择一项:

  • 若要完全删除该运算符,请选择“请删除运算符(保留语义)”
Code fix to remove suppression operator
用于删除抑制运算符的代码修复
  • 若要对表达式取非,请选择“取非表达式(更改语义)”
Code fix to negate expression
用于对表达式取非的代码修复
  • 你还可使用新的 C# 9 not 模式(若可在项目中使用)对表达式取非:
Code fix to negate expression using not
使用 not 对表达式取非的代码修复

在类型中生成构造函数时,你现可生成属性。 将光标放在实例上。 按 (Ctrl + .) 触发“快速操作和重构”菜单 。 选择“在 <QualifiedName> 中生成构造函数(包含属性)”

Generate properties when generating constructor
在生成构造函数时生成属性
  • “快速信息”现显示诊断 ID 和一个帮助链接,你可通过该链接轻松导航到我们的文档,详细了解你代码中的警告和错误。
Quick Info Diagnostic ID and Help Link
快速信息中的诊断 ID 和帮助链接
  • 现提供了一个快速操作,用于向类添加调试器显示属性。 这允许你在代码中以编程方式固定调试器中的属性。 请将光标置于类名称上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“添加‘DebuggerDisplay’属性”。 这会将调试器显示属性添加到类的顶部,并生成一个返回 ToString() 的自动方法,你可以对其进行编辑以返回要在调试器中固定的属性值。
Add Debugger Display Attribute
添加调试器显示属性
  • 现在为同一变量的意外赋值或比较提供了代码修复。 将光标置于警告上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 对于意外赋值,请选择“赋值给 <QualifiedName>.value”。 对于意外赋值,请选择“与 <QualifiedName>.value 比较”
Accidental Assignments Code Fix
意外赋值代码修复
Accidental Comparisons Code Fix
意外比较代码修复
  • 现在可以为实现 IComparable 的类型生成比较运算符。 将光标置于类内部或 IComparable 上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“生成比较运算符”。 将使用比较运算符为你生成一个样板文件。
Generate Comparison Operators
生成比较运算符
  • 现在可以在生成结构的 .Equals 时生成 IEquatable 运算符。 对于值类型,我们已经重构到“生成 Equals 和 GetHashCode”。 有了结构,现在将为你自动添加 IEquatable 以及 equals 和 not equals 运算符。 将光标置于结构内。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“生成 Equals(object)”
Generate IEquatable Operators
生成 IEquatable 运算符
  • 现在可以为所有未使用的构造函数参数创建和分配属性或字段。 我们已经有了一个快速操作,允许你对单个参数执行此操作,但现在可以同时为所有未使用的参数执行此操作。 将光标置于任何剩余的参数上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 若要创建并初始化属性,请选择“将剩余项作为属性创建并分配”。 若要创建并初始化字段,请选择“将剩余项作为字段创建并分配”
Create and Assign Remaining Fields
创建并分配剩余字段
Create and Assign Remaining Properties
创建并分配剩余属性
  • 现在会在 DateTime 和 TimeSpan 字符串文本中出现 IntelliSense 完成。 将光标置于 DateTime 或 TimeSpan 字符串文本中,然后按(Ctrl+空格键)。 然后,你将看到完成选项和每个字符所表示内容的说明。 将提供日期时间格式和示例。
IntelliSense Completion in DateTime and TimeSpan
DateTime 和 TimeSpan 字符串文本中的 IntelliSense 完成
  • 现在可以在“更改签名”对话框中添加参数。 将光标置于该方法的签名中。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“更改签名”。 此时将打开以下对话框,你可以在其中选择“添加”以添加参数。 选择“添加”后,将打开新的“添加参数”对话框。 可通过“添加参数”对话框添加类型名称和参数名称。 可以选择使用默认值使参数为必需或可选。 然后,可以在调用站点中添加一个值并为该值选择一个命名参数,也可以引入一个 TODO 变量。 TODO 变量将 TODO 置于你的代码中,以便你可以访问每个错误并单独遍历每个调用站点,然后决定要传递的内容。 对于可选参数,你可以选择完全省略调用站点。
Change Signature Dialog
“更改签名”对话框
Add Parameter Dialog
“添加参数”对话框
  • 分析器作者现在可以使用 CompletionProviders 在通过 NuGet 传送其分析器时实现 IntelliSense 完成。 以前,库作者必须创建单独的 VSIX,因为 CompletionProviders 仅可用于 VSIX。 现在,库作者可以在其分析器所在的 NuGet 包中实现 IntelliSense 完成,而无需单独执行此操作。 NuGet 包中实现的完成提供程序还将提供特定于单个项目的建议,并将在支持该功能的每个 IDE 中自动运行。

Razor

请选择“启用实验性 Razor 编辑器”预览功能,在所有 Razor 文件 (.cshtml/.razor) 上试用语言服务器协议 (LSP) 支持的新版实验性 Razor 编辑器

测试资源管理器

“Run/Debug All Tests In View”已添加到测试资源管理器中。 这些命令将替换测试资源管理器中出现“Run All Tests”和“Debug All Tests”命令出现的位置。 此更改阐明了这些命令遵循测试资源管理器的筛选器,因此只会运行窗口中可见的测试。 这包括列筛选器和搜索框筛选器。

Test Explorer Run/Debug All Tests in View commands
Test Explorer Run/Debug All Tests in View 命令

Global Run/Debug All 命令现在将仅显示在顶级“测试”菜单中。 它们不再包括在测试资源管理器工具栏或任何测试窗口视图的上下文菜单中。 当从测试资源管理器触发时,Analyze Code Coverage for All Tests 现在也适用于测试窗口视图

快捷键:

  • Ctrl R,A - Run All Test - Global 命令始终运行所有测试
  • Ctrl R,V - Run All Tests In View - Only 有效命令,当测试窗口(测试资源管理器、播放列表、Live Unit Testing 窗口)是活动窗口时
  • Ctrl R,Ctrl A - Debug All Test - Global 命令始终调试所有测试
  • Ctrl R,Ctrl V - Debug All Tests In View - Only 有效命令,当测试窗口(测试资源管理器、播放列表、Live Unit Testing 窗口)是活动窗口时

调试器

通过本机指针查看托管的 COM 对象

此功能自动解码本机指针引用的托管 COM 对象,使你可以完全检查“局部变量”窗口中的值。 可以在 Visual Studio 博客中找到更多详细信息。

探查器

新增 .NET 性能计数器工具

.NET Performance Counters Tool
.NET 性能计数器工具

可以在 Visual Studio Profiler 中使用 .NET 性能计数器工具可视化 dotnet 计数器。 若要试用该工具,请转到“调试”->“性能探查器”->“选中标记 .NET 性能计数器工具”

Xamarin

  • 针对具有 Android 布局文件的用户所遇到的最常见类型的问题,我们引入了代码修复程序。
  • Xamarin.Forms 模板选择体验现具有更直观的全新外观,布局和选项卡式模板现使用 Shell。 请在此处详细了解 Shell。 如果由于某种原因,你不想使用 Shell,则请使用空白模板。
New Xamarin.Forms template selection experience
选择 Xamarin.Forms 模板

XAML 工具(WPF、UWP 和 Xamarin.Forms)

XAML 热重载:

  • 应用内工具栏改进:我们进一步优化了应用内工具栏体验,它是 WPF 和 UWP 的 XAML 热重载工具工作流的一部分。 更改包括缩短了工具栏的长度,使其不再遮盖正在运行的应用程序;还更改了折叠机制,现在单击时将先折叠 XAML 热重载文本,单击第二下再完全折叠整个栏。

XAML 设计器:

  • 面向 WPF 和 UWP 的扩展设计时数据支持:在此版本中,我们为 WPF .NET Core 和 UWP 开发人员引入了一种新的设计时数据功能。 这项新功能将通过使用 d: 前缀扩展当前可访问设计时属性的列表。 Xamarin.Forms 开发人员会很熟悉该功能,因为它提供了相同的方法来使用“d:”前缀指示一个属性,该属性仅应在设计时呈现,绝不会编译到正在运行的应用中,因此可以非常安全地用于设计时 UI 验证。 在此版本中,我们支持 WPF 和 UWP 的所有现成控件,并计划在将来的版本中支持第三方控件和自定义控件。
  • XAML 设计器刷新按钮:我们向 XAML 设计器添加了一个“刷新”按钮,这个新图标可在缩放级别指示器旁边的左下角图标区域中找到。 在需要解决呈现问题时(此情况很少出现),此刷新操作的重置效果与关闭设计器视图再重新打开它的效果一样。 此功能适用于 WPF .NET Core 和 UWP 开发人员。

XAML 代码编辑器:

  • 颜色可视化工具:我们针对 WPF .NET Core、WPF .NET Framework 和 Xamarin.Froms 项目进一步优化了 XAML 代码编辑器中新的颜色可视化工具。 在此版本中,我们增添了对直观呈现资源中颜色的支持,该操作之前在上个预览版中不受支持。
Inline Color Previews in XAML Code Editor
XAML 代码编辑器中的内联颜色预览

在没有包引用的情况下显示 NuGet 包中的工具箱项

很多控件库作者希望即使当前项目尚未引用库,他们的控件也在工具箱中显示,因为这有助于用户发现他们的控件。 WPF .NET Framework SDK 一直使用注册表项实现了这一点,但 .NET Core 不支持此操作。 对于 WPF .NET Core,工具箱中现可填充来自 VisualStudioToolsManifest.xml 文件的控件,这些文件可在 NuGet 回退文件夹中的 WPF .NET Core NuGet 包中找到。 有关更多详细信息,请参阅 XAML 设计器可扩展性 GitHub 存储库中的文档。

Windows 窗体

适用于 .NET Core 的 Windows 窗体设计器

.NET Core 项目的 Windows 窗体设计器现已可用。 若要在 Visual Studio 中启用该设计器,请转到“工具”>“选项”>“环境”>“预览功能”,然后选择“将预览版 Windows 窗体设计器用于 .NET Core 应用”选项。

在此版本中,现在支持以下控件及其他改进:

  • UserControl 和自定义控件基础结构
  • TableLayoutPanel
  • 第三方控件支持基础知识
  • 数据绑定支持基础知识
  • 改进了设计器与 TableLayoutPanel 的交互

Bug 修复

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

  • 修复了 WMI 提供程序组件安装失败的问题。
  • 修复了用户单击底部栏左侧的按钮后看不到测试运行进度的问题。
  • 提高了发现可用 Visual Studio Codespace 计费计划的性能。
  • 创建 Visual Studio Codespace 时,我们将默认挂起时间从 30 分钟改为了 3 小时。
  • 修复了“Git 更改”窗口会在用户实际上没有传入/传出的提交时通知他们有的 bug。
  • 改进了诊断工具和性能探查器的稳定性。
  • 解决了 Azure Sphere Visual Studio 扩展由于次要版本不匹配而不能自动更新的问题。 通过此修复,Azure Sphere 将能够在 VSIX 自动更新程序运行时自动更新。

来自开发者社区


已知问题

通过以下链接查看 Visual Studio 2019 中所有待解决问题和可用暂避方法。

反馈和建议

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


Blogs

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


Visual Studio 2019 发行说明历史记录

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


返回页首