Visual Studio 2019 版本 16.9 发行说明
开发者社区 | 系统要求 | 兼容性 | 可分发代码 | 发布历史记录 | 许可条款 | 博客 | Visual Studio 新增功能文档
注意
此版本不是最新版本的 Visual Studio。 若要下载最新版本,请访问 Visual Studio 网站。
Visual Studio 2019 v16.9 的新变化
支持的时间范围
Visual Studio 2019 v16.9 是 Visual Studio 2019 的第四个受支持的服务基线。 建议需要采用长期稳定且安全的开发环境的 Enterprise 和 Professional 客户对此版本进行标准化。 正如我们在生命周期和支持策略中详细说明的那样,2022 年 10 月将通过修补程序和安全更新来支持版本 16.9。 2022 年 10 月是已声明为最后一个服务基线的 Visual Studio 2019 版本 16.11 发布后的一年。
此外,鉴于版本 16.9 已发布,上一服务基线版本 16.7 将再获得 12 个月的支持,并将于 2022 年 4 月不再获得支持。 另请注意,版本 16.8 也不再获得支持。 这些中间版本仅在下一次次要更新发布之前收到服务修补程序。
可以在 my.visualstudio.com 的下载部分中获取 Visual Studio 2019 版本 16.9 的最新最安全版本。 请参阅最新版本的发行说明或访问 Visual Studio 站点下载最新支持的 Visual Studio 2019 版本。 有关 Visual Studio 支持的基线的详细信息,请查看 Visual Studio 2019 的支持策略。
Visual Studio 2019 v16.9 发行版
- 2022 年 10 月 11 日 — Visual Studio 2019 版本 16.9.26
- 2022 年 9 月 13 日 - Visual Studio 2019 版本 16.9.25
- 2022 年 8 月 9 日 - Visual Studio 2019 版本 16.9.24
- 2022 年 7 月 12 日 - Visual Studio 2019 版本 16.9.23
- 2022 年 6 月 14 日 - Visual Studio 2019 版本 16.9.22
- 2022 年 5 月 10 日 - Visual Studio 2019 版本 16.9.21
- 2022 年 4 月 19 日 - Visual Studio 2019 版本 16.9.20
- 2022 年 4 月 12 日 - Visual Studio 2019 版本 16.9.19
- 2022 年 3 月 8 日 - Visual Studio 2019 版本 16.9.18
- 2022 年 2 月 8 日 — Visual Studio 2019 版本 16.9.17
- 2022 年 1 月 11 日 — Visual Studio 2019 版本 16.9.16
- 2021 年 12 月 14 日 — Visual Studio 2019 版本 16.9.15
- 2021 年 11 月 16 日 — Visual Studio 2019 版本 16.9.14
- 2021 年 11 月 9 日 — Visual Studio 2019 版本 16.9.13
- 2021 年 10 月 12 日 — Visual Studio 2019 版本 16.9.12
- 2021 年 9 月 14 日 — Visual Studio 2019 版本 16.9.11
- 2021 年 8 月 10 日 — Visual Studio 2019 版本 16.9.10
- 2021 年 7 月 13 日 — Visual Studio 2019 版本 16.9.9
- 2021 年 6 月 15 日 — Visual Studio 2019 版本 16.9.8
- 2021 年 6 月 8 日 — Visual Studio 2019 版本 16.9.7
- 2021 年 5 月 18 日 — Visual Studio 2019 版本 16.9.6
- 2021 年 5 月 11 日 — Visual Studio 2019 版本 16.9.5
- 2021 年 4 月 13 日 — Visual Studio 2019 版本 16.9.4
- 2021 年 3 月 30 日 — Visual Studio 2019 版本 16.9.3
- 2021 年 3 月 16 日 — Visual Studio 2019 版本 16.9.2
- 2021 年 3 月 9 日 — Visual Studio 2019 版本 16.9.1
- 2021 年 3 月 2 日 — Visual Studio 2019 版本 16.9.0
Visual Studio 2019 已存档的发布说明
- Visual Studio 2019 版本 16.8 发行说明
- Visual Studio 2019 版本 16.7 发行说明
- Visual Studio 2019 版本 16.6 发行说明
- Visual Studio 2019 版本 16.5 发行说明
- Visual Studio 2019 版本 16.4 发行说明
- Visual Studio 2019 版本 16.3 发行说明
- Visual Studio 2019 版本 16.2 发行说明
- Visual Studio 2019 16.1 版发行说明
- Visual Studio 2019 16.0 版发行说明
Visual Studio 2019 博客
可从 Visual Studio 2019 博客获取来自 Visual Studio 工程团队的官方产品见解。 有关 Visual Studio 2019 版的详细信息,可参阅以下文章:
- 现已推出! Visual Studio 2019 v16.9 和 v16.10 预览版 1
- Visual Studio 2019 v16.9 预览版 3 即刻推出!
- 即将为你带来 Visual Studio 2019 v16.9 预览版 2 和新年祝福!
- Visual Studio 2019 v16.8 和 v16.9 Preview 现已推出
- Visual Studio 2019 v16.8 预览版 3.1 中的新增功能
- Visual Studio 2019 v16.8 预览版 2 今天发布新功能!
- Visual Studio 2019 v16.7 和 v16.8 预览版 1 今天发布!
- Visual Studio 2019 v16.7 预览版 2 即刻推出!
- Visual Studio 中针对 Git 体验的精彩新更新
- 现已发布! Visual Studio 2019 v16.6 和 v16.7 预览版 1
- Visual Studio 2019 版本 16.6 预览版 2 推出适合你的新功能
- Visual Studio 2019 版本 16.5 现已正式发布!
- Visual Studio 2019 v16.4 发行版,圣诞季
- Visual Studio 2019 v16.4 预览版 2,秋日运动与南瓜风味
- Visual Studio 2019 版本 16.3 中的 .NET Core 支持及更多功能 - 立即更新!
- Visual Studio 2019 版本 16.3 预览版 2 和 Visual Studio 2019 for Mac 版本 8.3 预览版 2 现已发布!
- Visual Studio 2019 版本 16.2 和 16.3 预览版 1 现已推出
- Visual Studio 2019 版本 16.2 预览版 2
- Visual Studio 2019 版本 16.1 和预览版 16.2 预览
- Visual Studio 2019:更快速地编写代码。 更智能的工作。 开创未来。
Visual Studio 2019 版本 16.9.26 ![新版本图标](media/buttons/new_button.svg)
发布日期:2022 年 10 月 11 日
此版本中解决的问题:
- 管理员将能够从布局更新脱机客户端计算机上的 VS 安装程序,而无需更新 VS。
安全顾问公告
- CVE-2022-41032 .NET 特权提升漏洞 .NET 7.0.0-rc.1、.NET 6.0、.NET Core 3.1 和 NuGet 客户端(NuGet.exe、NuGet.Commands、NuGet.CommandLine、NuGet.Protocol)存在漏洞,恶意执行组件可能导致用户执行任意代码。
Visual Studio 2019 版本 16.9.25
安全顾问公告
- CVE-2022-38013 .NET 拒绝服务漏洞 ASP.NET Core 3.1 和 .NET 6.0 中存在拒绝服务漏洞,其中恶意客户端可能会导致堆栈溢出,这可能会在攻击者发送在模型绑定期间分析的自定义有效负载时导致拒绝服务攻击。
Visual Studio 2019 版本 16.9.24
发布日期:2022 年 8 月 9 日
此版本中解决的问题:
- 将适用于 Windows 的 Git 更新为 v2.37.1.1,用于解决 CVE-2022-31012。
安全顾问公告
- CVE-2022-34716 .NET 信息泄露漏洞 .NET 6.0 和 .NET Core 3.1 中存在信息泄露漏洞,可能导致未经授权的特权信息访问。
- CVE-2022-31012 远程代码执行 适用于 Windows 的 Git 的安装程序可能会被欺骗执行不受信任的二进制文件
- CVE-2022-29187 特权提升 恶意用户可以在超级用户拥有的文件夹中创建 .git 目录
- CVE-2022-35777 远程代码执行 Visual Studio 2022 预览版 Fbx 文件分析程序堆溢出漏洞
- CVE-2022-35825 远程代码执行 Visual Studio 2022 预览版 Fbx 文件分析程序 OOBW 漏洞
- CVE-2022-35826 远程代码执行 Visual Studio 2022 预览版 Fbx 文件分析程序堆溢出漏洞
- CVE-2022-35827 远程代码执行 Visual Studio 2022 预览版 Fbx 文件分析程序堆 OOBW 漏洞
Visual Studio 2019 版本 16.9.23
发布日期:2022 年 6 月 14 日
此版本中解决的问题:
- 更新了 LibraryManager 以适应 cdnjs API 的更改
安全顾问公告
- CVE-2022-30184 .NET 信息泄露漏洞 NuGet 内的 .NET 6.0 和 .NET Core 3.1 中存在漏洞,其中可能发生凭据泄漏。
- CVE-2022-24513 特权提升漏洞 当 Microsoft Visual Studio 更新程序服务错误分析本地配置数据时,存在潜在的特权提升漏洞。
Visual Studio 2019 版本 16.9.21
发布日期:2022 年 5 月 10 日
此版本中解决的问题:
- 已将 Visual Studio 使用的 Git for Windows 版本以及可安装可选组件更新到 2.36.0.1
- 修复了 git 集成的问题,其中,如果拉取/同步已分离的分支,则输出窗口不会显示有关如何解决该问题的本地化提示。
安全顾问公告
CVE-2022-29117 .NET 拒绝服务漏洞 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在漏洞,恶意客户端可以操纵 Cookie 并导致拒绝服务。
CVE-2022-23267 .NET Core 拒绝服务漏洞 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在漏洞,恶意客户端可利用通过 HttpClient 分配的过量内存导致拒绝服务。
CVE-2022-29145 .NET 拒绝服务漏洞 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在漏洞,恶意客户端可在分析 HTML 表单时导致拒绝服务。
CVE-2022-24513 特权提升漏洞 当 Microsoft Visual Studio 更新程序服务错误分析本地配置数据时,存在潜在的特权提升漏洞。
Visual Studio 2019 版本 16.9.20
发布日期:2022 年 4 月 19 日
此版本中解决的问题:
- 修复了 16.9.19 的 vctip.exe 回归
Visual Studio 2019 版本 16.9.19
发布日期:2022 年 4 月 12 日
此版本中解决的问题:
安全顾问公告
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 更新程序服务错误分析本地配置数据时,存在潜在的特权提升漏洞。
Visual Studio 2019 版本 16.9.18
发布日期:2022 年 3 月 8 日
此版本中解决的问题:
安全顾问公告
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,解决了此问题。
Visual Studio 2019 版本 16.9.17
发布时间:2022 年 2 月 8 日
此版本中解决的问题:
安全顾问公告
CVE-2022-21986 漏洞 当 Kestrel Web 服务器处理某些 HTTP/2 和 HTTP/3 请求时,.NET 5.0 和 .NET 6.0 中存在拒绝服务漏洞
CVE-2022-21871 诊断中心标准收集器运行时权限提升漏洞 若诊断中心标准收集器错误处理数据操作,就存在权限提升漏洞。
Visual Studio 2019 版本 16.9.16
发布日期:2022 年 1 月 11 日
此版本中解决的问题:
- 修复了使用 Visual Studio 16.8.5 或更高版本构建大型项目时 link.exe 的间歇性故障。
- 修复了当 Windows 终端被用作默认终端时,无法多次调试应用程序的问题。
- 安装修补程序以解除对受限配置客户的限制
- 修复了阻止客户端更新一个更新的引导程序的问题。 一旦客户端使用 2022 年 1 月版本或更高版本随附的引导程序和安装程序,所有使用后续引导程序的更新都应在产品生命周期内有效。
来自开发者社区
Visual Studio 2019 版本 16.9.15
发布时间:2021 年 12 月 14 日
此版本中解决的问题:
- 将 Python 3.9.7 添加到了 Python 工作负载。 由于安全漏洞,删除了 Python 3.7.8。
安全顾问公告
CVE-2021-43877 漏洞 ANCM 中存在一个特权提升漏洞,当 .NET Core、.NET 5 和 .NET 6 应用程序托管在 IIS 中时,该漏洞可能会允许提升特权。
Visual Studio 2019 版本 16.9.14
发布时间:2021 年 11 月 16 日
此版本中解决的问题:
- 引导程序现在尊重 --useLatestInstaller 参数,这会导致最新安装程序集成到布局中。 此最新安装程序随 Visual Studio 2022 一起提供,支持企业希望将其客户从一个布局位置转换到另一个布局位置的场景。 有关详细信息,请参阅 [Visual Studio 管理员指南](* 引导程序现在遵循 --useLatestInstaller 参数,这会导致最新的安装程序集成到布局中。此最新安装程序随 Visual Studio 2022 一起提供,使企业能够将客户端从一个布局位置转换为另一个布局位置的方案。有关详细信息,请参阅 Visual Studio 管理员指南。)。
Visual Studio 2019 版本 16.9.13
发布时间:2021 年 11 月 9 日
此版本中解决的问题:
- 修复了导致开始菜单快捷方式链接消失的 bug。 仅在更新同一计算机上不同产品 SKU 的多个实例时,才会出现该 bug。
安全顾问公告
CVE-2021-42319 权限提升漏洞 Visual Studio 安装程序中包含的 WMI 提供程序存在权限提升漏洞。
CVE-2021-42277 诊断中心标准收集器服务权限提升漏洞 当诊断中心标准收集器错误处理文件操作时,就存在权限提升漏洞。
Visual Studio 2019 版本 16.9.12
发布时间:2021 年 10 月 12 日
此版本中解决的问题:
- 更新了二进制文件和 POGO 检测运行时之间的 ARM64 和 ARM64EC 接口。
安全顾问公告
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 库中存在潜在的标志绕过漏洞。
Visual Studio 2019 版本 16.9.11
发布日期:2021 年 9 月 14 日
此版本中解决的问题:
- 我们已经修复了由未命名结构导致的内部编译器错误,该结构的字段引用自 SAL 注释。
- 修复了分析使用 __uuidof 的模板代码时发生的罕见故障。
安全顾问公告
CVE-2021-26434 Visual Studio 错误的权限分配特权提升漏洞
安装了使用 C++ 的游戏开发并选择了 Unreal Engine 安装程序工作负载后,Visual Studio 中存在权限分配漏洞。 该系统在安装过程中容易受到 LPE 的攻击,它会创建一个对所有用户都具有写入访问权限的目录。
来自开发者社区
Visual Studio 2019 版本 16.9.10
发布日期:2021 年 8 月 10 日
此版本中解决的问题:
- 在报告安装哪些扩展时,不再在磁盘上发送路径。
- 修复了在类中模板专用化过程中处理静态数据成员时发生的 IntelliSense 故障。
- 修复了影响 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 令牌,则记录该令牌时存在信息泄漏漏洞。
Visual Studio 2019 版本 16.9.9
发布时间:2021 年 7 月 13 日
此版本中解决的问题:
- 修复了使用加载项时 Outlook 出现故障的 ARM64X 问题。
- 修复了 C++ 编译器中将错误地执行 if-conversions 的问题。
- 修复了有关最新 Windows 更新兼容性的 ASan 问题。
- ASan 不再报告误报 memcpy 内存区域重叠错误。
- 具有数组类型的未命名函数参数的函数模板导致分析器跳过后续函数定义,导致在评估常数表达式中对它的调用时出现虚假的 constexpr 错误,即未定义函数。 此修复重新启用了对跳过的函数定义的分析。
- 我们已修复由一个检查器扩展导致的性能问题和误报,此问题会发现滥用 VARIANT 的 bug。
- 我们已修复由一个检查器扩展导致的性能问题,此问题会发现滥用枚举值作为索引的 bug。
- 修复了在编译多个 TU 时内存泄漏的问题。
- 并发分析器不应再生成自动锁模式的错误警告 C26110(获取锁失败)。
- 此修补程序通过跳过对外部标头的分析并抑制来自外部标头的警告来恢复外部标头的行为。
- 代码分析中的并发检查更智能。 它们很难被复杂的控制流所欺骗。
- 修复了与布局创建相关的问题。
- 修复了由于缺少更新通道信息导致更新可能失败的问题。
来自开发者社区
- 开发者社区有此版本中发布的所有项的完整列表。
- 分析器 C26110 的不正确锁定警告
- EnforceProcessCountAcrossBuilds 对系统标头发出代码分析警告
- 在 VS 16.10 预览版 4 中,STL functional.h 出现代码分析警告 C6285。 在 16.10 预览版 2 中可正常工作
- Functional(813) 存在警告 C6285
- lmaccess.h/bcrypt.h 中存在 C28301 警告
- 关于 _variant_t/VARIANT 的 C33005 误报
- 升级到 VS 2019 16.10 后,Microsoft 标头中出现不正确的 C28251 消息
- 在运行 /analyze on C 代码时出现大量虚假 C28251 和 C28301 警告
Visual Studio 2019 版本 16.9.8
发布日期:2021 年 6 月 15 日
来自开发者社区
Visual Studio 2019 版本 16.9.7
发布日期:2021 年 6 月 08 日
此版本中解决的问题:
- 修复了 SSA 指令克隆程序中的 bug。
- 修复了导致 mspdbcore.dll 故障的问题。
- 修复了客户代码库的长期运行/超时生成问题。
- 修复了阻止开发人员构建 PyTorch 的问题。
- 修复了使用 32 位 MSBuild.exe 进程生成大型代码库时出现的内部 MSBuild 错误 (MSB0001)。
- 修复了开发人员试图查看映射的端口,然后切换到其他容器时,容器工具窗口中导致 Visual Studio 2019 故障的问题。
安全顾问公告
CVE-2021-31957 ASP.NET 拒绝服务漏洞
ASP.NET Core 未正确处理客户端断开连接问题时,存在拒绝服务漏洞。
来自开发者社区
以下是 16.9.7 中发布的得票最多的一些问题:
Visual Studio 2019 版本 16.9.6
发布日期:2021 年 5 月 18 日
此版本中解决的问题:
- 修复了尝试创建证书或运行自动预配时出现的“无法访问已释放的对象。 对象名称: "System.Net.Http.StringContent"”的问题。
- 修复了阻止 iOS 热重启功能正常工作的问题。
来自开发者社区
以下是 16.9.6 中发布的得票最多的一些问题:
- 使用 /O2 生成的错误代码
- 添加 Apple 开发者帐户时出错:身份验证服务不可用
- 错误 C1001:内部编译器错误(编译器文件 'D:\a01_work\4\s\src\vctools\Compiler\Utc\src\p2\main.c',第 213 行)
- VS 16.9.5 不能部署 iOS 应用
Visual Studio 2019 版本 16.9.5
发布日期:2021 年 5 月 11 日
此版本中解决的问题:
- 修复了使用导出功能时 Office 工具未如预期工作的问题。
- 修复了在 x64 和 ARM64EC DLL 之间执行某些虚拟调用期间 Visual Studio 2019 发生故障的问题。
- 解决了运行多线程 ASan 检测的代码时发生误报的问题。
- 修复了生成以下错误的项目失败问题:“对 COM 组件的调用返回了 HRESULT E_FAIL”。
- 修复了在启动时打开 C++ 文件偶尔会导致 Visual Studio 2019 停止响应的问题。
- 修复了 CmakeSettings.js 文件配置中无法持久保存新设置的问题。
- 修复了文件路径包含一或多个非 ASCII 字符时分析源文件所导致的内部编译器错误。
- 修复了打开覆盖率文件时单个库含有代码覆盖率文件中多个条目的问题。
- 修复了导致启用远程桌面的客户在使用非工作帐户登录时可能遇到访问遭拒的 bug。
- 修复了在开发者自定义其菜单并单击自定义对话框中的分隔符时导致 Visual Studio 2019 发生故障的 bug。
- 打开解决方案时,将还原浮动文档窗口。
- 修复了管理员创建用于部署更新的 Visual Studio 新布局时导致更新失败的问题。 由于布局已移动位置,客户端计算机更新将会失败。
- 修复了导致启用快速部署的项目构建失败或部署需要很长时间的问题。
- 添加了 Xcode 12.5 支持。
- 修复了管理员创建用于部署更新的 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 中存在特权提升漏洞。
来自开发者社区
以下是 16.9.5 中发布的得票最多的一些问题:
- 如果在浮动窗口中关闭,Visual Studio 将不会在解决方案加载时还原先前打开的文档。
- C26497 错误:无法为函数“fun”标记 constexpr
- 使用对话时,CMakeSettings.json 不会更改变量。
- 单击工具栏编辑器中的分隔线会导致 Visual Studio 2019 发生故障。
- Xamarin iOS 绑定项目生成功能不再适用于 Visual Studio v16.9。
- 消息:激活远程语言服务器时出错。
- 升级到 16.9.2 以后, 我收到远程语言服务器错误。
- [接受无效] msvc 会在无效位置接受 [[maybe_unused]]
- Visual Studio v16.9 link.exe 退出时出现 57009 错误
- 优化时出现代码生成 bug。
- 添加 Apple 开发者帐户时出错:身份验证服务不可用。
- ASAN 运行时在 windows.storage.dll 中导致随机 AV。
- 无法加载 Visual Studio 扩展程序。
- Visual Studio 2019 升级至 16.9.4 时引发编译/链接错误。
- MsBuild 16.9 增量构建中断。
- 在 Visual Studio 中尝试自定义工具栏时出现故障。
Visual Studio 2019 版本 16.9.4
发布日期:2021 年 4 月 13 日
此版本中解决的问题:
- 修复了一个 SFINAE bug,该 bug 会导致在非依赖基类中某些形式的模板名称出现错误。
- 修复了 IntelliCode 尝试登录到临时目录,但对临时目录的访问遭到拒绝的情况。
- 并行安装了第三方特权管理软件时,某些 Visual Studio 功能受到限制的问题。
- 解决了客户在 XBox 上重复启动调试时消耗越来越多的内核资源的问题。 最终需要重启 XBox,这会丢失任何状态。
- 解决了使用 Windows 预览体验计划预览生成来调试本机代码时挂起的问题。
- 修复了键盘焦点的可访问性 bug。
- 在“新建项目”对话框中加回了丢失的 Xamarin 模板(iOS/Android 类库、iOS/Android 绑定库、Android Wear、Xamarin.UITest)。 错误地隐藏了这些模板。
- 对于使用 SSH 连接的基于 C++ CMake、面向 Linux 的项目,由
CMakeSettings.json
中的remoteCMakeListsRoot
属性中指定的目标目录已还原到 VS 16.8 中的旧行为,其中副本的目标对应于源目录的根。 详细信息见票证与远程 Linux 计算机的连接使用不正确的目标路径。
安全顾问公告
CVE-2021-27064 Visual Studio 安装程序特权提升漏洞
Visual Studio 安装程序在提升状态下执行反馈客户端时,存在远程代码执行漏洞。
CVE-2021-28313 / CVE-2021-28321 / CVE-2021-28322 诊断中心标准收集器服务特权提升漏洞
如果诊断中心标准收集器对数据操作的处理不当,就会存在特权提升漏洞。
来自开发者社区
下面是 16.9.4 中投票最多的一些问题:
- Visual Studio 16.8 升级中断了与生成文件项目的链接依赖关系。
- 升级后启动 Visual Studio 16.9 时出现错误“‘环境包窗口管理包’未正确加载”。
- 工具集 16.9 生成静态库的回归 vcxproj:不再将 pdb 复制到输出。
- Visual Studo 在 Win32 调试期间冻结。
- 与远程 Linux 计算机的连接使用不正确的目标路径。
- 在 Visual Studio 2019 中找不到 Xamarin Android 绑定库模板。
- 由于以下错误,无法启动 Visual Studio:System.InvalidOperationException: 控制器未响应传入的请求。
- Visual Studio 2019 16.9 中的 SFINAE bug:“未能使别名模板专用化”。
- ASAN 与 RTC 不兼容。
- 更新到版本 Visual Studio 2019后,在编辑器中收到此错误。
Visual Studio 2019 版本 16.9.3
发布时间:2021 年 3 月 30 日
此版本中解决的问题:
- 修复了在尝试使用包含网站项目的 MSBuild.exe 生成解决方案时,MSBuild 中发生的崩溃。
- 修复了由 Servicehub 上的依赖项导致的崩溃情况。
- 解决了阻塞性问题:Xbox 或 IoT 设备上的 XAML 视觉诊断工具用户被禁止进行远程调试。
来自开发者社区
下面是 16.9.3 中投票最多的一些问题:
- web.config 中存在错误。
- 发布前必须选择发布配置文件
- 从 16.8 更新到 16.9 后,ServiceHub.Host.CLR.X86 停止工作
- 打开 XAML 编辑器时,Visual Studio 2019 版本 16.9.2 崩溃。
- 关于最新 Visual Studio 2019 更新的问题
Visual Studio 2019 版本 16.9.2
发布时间:2021 年 3 月 16 日
此版本中解决的问题:
- 更新 ARM64X 全局函数指针名称
- 对使用 link -lib -extract 提取 ARM64X LIB 的第一个 OBJ 的修复
- 修复了错误:使用地址擦除器和优化项编译的代码可能会导致生成错误代码,进而导致 Visual Studio 2019 崩溃。
- 修复了通过“资源编辑器”中的“对话框编辑器”添加函数导致的崩溃
- 不再需要将 Nuget.org 作为包源进行两次删除
- 改进了 NuGet 包分析性能
- 修复了客户在使用服务器资源管理器中的 Azure SQL 数据库节点时收到的有关弃用的 API 的错误消息
- 修复了导致出现指示 CascadePackage 未正确加载的错误消息的问题
- 修复了在启用快速部署的情况下构建项目时导致部署失败或需要较长时间的问题
- 修复了导致热重载现在在“整页”模式下显示保存的更改的问题
- 修复了热重载导致实时可视化树无法工作或应用更改的问题。
来自开发者社区
下面是 16.9.2 中投票最多的一些问题:
- 在 C# 中,Escape 有时不再取消内联查找对话框
- 部署了热重启的 Xamarin.Forms 应用程序在 iPhone 上崩溃
- 性能探查器报告错误的会话持续时间
- 自 VS2019 16.9.0 起,Xamarin HotReload 无法正常工作
Visual Studio 2019 版本 16.9.1
发布时间:2021 年 3 月 9 日
安全顾问公告
CVE-2021-21300 Git for Visual Studio 远程代码执行漏洞
当 Visual Studio 克隆恶意软件时,会存在远程代码执行漏洞。
CVE-2021-26701 .NET Core 远程代码执行漏洞
由于文本编码的执行方式,.NET 5 和 .NET Core 中存在远程代码执行漏洞。
此版本中解决的问题:
- 修复了将错误的 ARM64EC 元数据发送到 OBJ 的问题。
- 修复了启用了 FixIt(默认选项)的 C++ 在打开代码后显示错误波形曲线的问题。
- 在某些情况下,C++ IntelliSense 试图使用极大量的 includePath,进而变得无响应。
- 提高了 C++ 方案中的 Live Share 稳定性。
- 修复了 IntelliCode 会停止加载符号的问题。
- 缩短了在用户启用了新的试验 Razor 编辑器时解决方案的加载和关闭时间。
- 修复了 ServiceHub 在打开“扩展和更新”对话框后关闭 Visual Studio 时可能发生的故障情况。
- 修复了在较慢的虚拟机上检查是否有更新时通过消息提示没有可用更新的错误。
- 提升了在增量更改期间从 Visual Studio 启动 WAP 项目的性能。
- 修复了使用意大利语区域设置时导致设置启动失败的问题。
- 修复了初始化 .NET Core 模板缓存时导致安装程序停止响应的升级方案。
来自开发者社区
下面是 16.9.1 中投票最多的一些问题:
Visual Studio 2019 版本 16.9.0
发布时间:2021 年 3 月 2 日
汇总了此版本 Visual Studio 2019 v16.9.0 的新变化
C++
- 地址擦除器:
- Windows 上的 AddressSanitizer 支持现已不处于实验性阶段,已进入正式发布阶段。
- 扩展了 RtlAllocateHeap 支持,修复了在创建可执行内存池时使用 RtlCreateHeap 和 RtlAllocateHeap 侦听器的兼容性问题。
- 添加了对旧 GlobalAlloc 和 LocalAlloc 内存函数系列的支持。 可以使用
ASAN_OPTIONS=windows_hook_legacy_allocators=true
启用这些侦听器。 - 更新了影子内存交错和侦听失败的错误消息,以显式显示问题和解决方法。
- IDE 集成现在可以处理 ASan 会报告的异常完整集合。
- 如果编译器和链接器检测到你正在使用 ASan 生成但未发出调试信息,它们将建议发出调试信息
- 现在可以将 OpenMP 运行时的 LLVM 版本定位到新的 CL 开关/openmp:llvm。 这增加了对 #pragma omp 部分的 lastprivate 子句以及并行 for 循环中的无符号索引变量的支持。 openmp:llvm 开关目前仅适用于 amd64 目标,仍为试验性。
- Visual Studio CMake 项目现提供对远程 Windows 开发的一流支持。 这包括将 CMake 项目配置为面向 Windows ARM64,将项目部署到远程 Windows 计算机,以及从 Visual Studio 调试远程 Windows 计算机上的项目。
- Windows 上的 Visual Studio 附带的 Ninja 版本已更新到版本 1.10。 有关包含的内容的详细信息,请参阅 Ninja 1.10 发行说明。
- Visual Studio 附带的 CMake 版本已更新到版本 3.19。 有关包含的内容的详细信息,请参阅 CMake 3.19 发行说明。
- 在 STL 中将多个 lock/guard 类型标记为 nodiscard:https://github.com/microsoft/STL/pull/1495
- IntelliSense:
- 提高了在 IntelliSense 中提供导入模块和标头单元完成的稳定性和功能。
- 添加了对模块导入的转到定义,对导出的索引支持 { … },以及对具有相同名称的模块的更准确的引用。
- 提高了 C++ IntelliSense 的语言符合性,方法是添加对引用直接初始化的临时复制初始化、__builtin_memcpy 和 __builtin_memmove、修复 constexpr 和 consteval 函数之间的不一致性、常数表达式的生存期扩展临时项以及类似类型和引用绑定的支持。
- 为 make_unique、make_shared、emplace 和 emplace_back 添加了完成,这将根据指定的类型参数提供完成。
- MSVC 现在确定了二进制文件所需的正确地址擦除系统运行时。 Visual Studio 项目会自动获取新的更改。 在命令行上使用地址擦除系统时,你现在只需将 /fsanitize=address 传递到编译器即可。
- Visual Studio 的连接管理器现支持使用 ECDSA 公钥算法的私钥。
- 已将安装程序中提供的 LLVM 和 Clang 版本更新为 v11。 有关详细信息,请参阅 LLVM 和 Clang 的发行说明。
- Visual Studio 现在将使用工具链文件中的 CMake 变量来配置 IntelliSense。 这将为嵌入式开发和 Android 开发提供更好的体验。
- 更多 Constexpr 容器建议的实现,这允许析构函数和新表达式用作 constexpr。 这为诸如 constexpr std::vector 和 std::string 之类的实用工具做好了准备。
- 对 C++20 模块 IntelliSense 的扩展支持,包括“转到定义”、“转到模块”和成员完成。
- MSVC 编译器现在支持缩写的函数模板。
Javascript/TypeScript
- 现支持针对 WPF、WinForms 和 WinUI 3 项目等应用程序进行基于 Edge Chromium 的 WebView2 JavaScript/TypeScript 调试。 可以通过从“项目属性”对话框中选择 JavaScript 调试器来启用此功能。 有关入门的详细信息,请参阅此处
Debugger
- 添加了新的自动分析器,用于检查线程是否存在死锁。
![用于检查线程是否存在死锁的自动分析器。](media/16.9/16.9_p3_auto_analyzer_deadlock.png)
- 新增了自动分析器,用于检查 .NET Core Finalizer 队列,并检测潜在的阻塞性对象。
![用于检查 .NET Core Finalizer 队列的自动分析器](media/16.9/16.9_p3_auto_analyzer_finalizer_queue.png)
- 当调试器因堆栈溢出异常而停止时,Visual Studio 现在可以从调用堆栈中过滤掉冗余的重复帧。 现在可以看到无限递归起源的堆栈底层,希望能更容易调查这类 bug。
![当调试器因堆栈溢出异常而停止时,从调用堆栈中过滤掉冗余的重复帧。](media/16.9/16.9_p3_callstack_stackoverflow.png)
探查器
- 新增了动态检测方案,不仅速度更快(不需要 VSInstr),还可以检测 .NET Core 应用程序,而无需使用 PDB。
![动态检测分析](media/16.9/16.9_p3_dynamic_instrumentaion.gif)
F# 和 F# 工具
此版本对适用于 Visual Studio 的 F# 工具进行了多项工作效率功能和性能改进:
- .NET Core FSI 支持
- 函数应用程序的签名帮助
- 14 个新的快速修复
- F# 工具的重大性能和响应能力修复
可以在 Visual Studio 16.9 的 F# 和 F# 工具更新或产品发行说明中了解相关信息。
- 现提供预处理器符号的 IntelliSense 完成。
- 解决方案资源管理器目前显示新的 .NET 5.0 源生成器。
- “转到全部”不会在 netcoreapp3.1 和 netcoreapp2.0 中显示重复结果。
- “快速信息”现在显示编译器警告 ID 或禁止显示的编号。
- 现在,在将类型复制和粘贴到新文件时,using 指令将自动添加。
- 按
;
以接受完成列表中的方法时,IntelliSense 现在会自动插入括号和分号,用于对象创建和方法调用。 - C# 9.0 记录的语义着色。
- 删除不必要的弃元的重构。
- 将逐字字符串和正则字符串转换为内插字符串的重构,该内插字符串保留要在输出中使用的大括号。
- Visual Basic 中的代码修补程序,用于在将共享的方法转换为模块时删除共享的关键字。
- 建议在非争议性方案中使用
new(…)
的重构 - 对 C# 和 Visual Basic 删除冗余相等表达式的代码修复程序
- .NET 代码样式 (IDE) 分析器现在可以在构建时强制执行
- Syntax Visualizer 显示增强颜色的当前前景色
- 当将鼠标悬停在诊断 ID 之上以查看 pragma 警告时出现的工具提示
- 在注释内键入 return 键时,现在会自动注释掉新行
- 内联参数名称提示增强功能
- 通过 WSL 2 进行 .NET Core 调试
- 现在,可以使用测试资源管理器配置音频提示,“分组依据”菜单对于屏幕阅读器更易于访问,并且查看长测试输出更为简单,通过可单击的链接直接打开日志文件即可查看。
- HTML 和 C# 语义着色
- 已关闭的 Razor 文件中反映的 C# 符号的重命名
- Razor 文件中更多的 C# 灯泡
- 对 Razor 文件中混合内容格式的进一步改进
- 使用 Visual Studio 的“发布”(即,右键单击 > 解决方案资源管理器中的“发布”),将 Steeltoe 应用程序部署到 Azure Spring Cloud。
- 增强了 .NET 对作为连接服务的 Azure 应用程序配置的支持
- 通过将 Azure 应用程序配置作为连接服务集成,管理应用程序的配置设置和功能标志
XAML 工具(WPF、WinUI、UWP 和 Xamarin.Forms)
MVVM 工具
- 改进了 MVVM 支持:在此版本中,XAML 编辑器中引入了 Lightbulbs,以在可用的视图模型中生成属性和命令。 此外,还添加了 Lightbulbs 来帮助将 XAML 中的设计 DataContext 设置为可用的视图模型,从而改进绑定 IntelliSense。
Xamarin.Forms
在此版本中,我们为 Xamarin.Forms 开发人员进行了多项改进:
XAML 热重载“仅更改”模式现在是 Xamarin.Forms 5.x 项目的默认设置:自 Visual Studio 16.9 起,XAML 热重载“仅更改”模式现在是定目标到 Xamarin.Forms 5.x 或更高版本的项目的默认 XAML 热重载体验。 定目标到 4.x 的项目将自动回退到“整页”XAML 热重载,因为“仅更改”只与 Xamarin.Forms 5.x 或更高版本兼容。 如果你使用的是 Xamarin.Forms 5.x,但出于某种原因想要使用旧的“整页”热重载模式,则可以在“工具”>“选项”>“调试”>“热重载”下转到“热重载”设置来执行此操作。
输出窗口中的 XAML 热重载状态更新:使用 XAML 热重载的 Xamarin.Forms 客户现在可以使用输出窗口,查看有关 XAML 热重载管道情况的更多详细信息。 若要开始使用,请使用“视图”>“输出”打开“输出”窗口,然后在窗口顶部的“显示输出来自”下选择“Xamarin 热重载”。
![XAML 热重载 - 输出窗口信息](media/16.9/16.9_xamarinformsxamlhotreload-output.png)
- Xamarin.Forms + UWP – 解决了 System.ExecutionEngineException:从 Visual Studio 2019 版本 16.8 开始,我们无意中引入了一个运行时异常:当开发人员调试面向 Windows (UWP) 的 Xamarin.Forms 应用时,将触发 System.ExecutionEngineException 错误。 从此版本(16.9 预览版 4)开始,结合对 Microsoft.NETCore.UniversalWindowsPlatform NuGet(版本 6.2.12+)的更新,现在应可解决此问题。 注意:此修补程序不仅适用于 Visual Studio 2019 版本 16.9。 对于 Visual Studio v16.9,将项目更新为使用新的 NuGet 包应该也可以解决此问题。
适用于 Unity 的工具
- 在“局部变量”窗口的新“活动场景”节点中进行调试时,查看根游戏对象。
- 在“局部变量”窗口的新“this.gameObject”节点中进行调试时,查看 GameObject 上的所有组件。
- 使用“局部变量”窗口的“子节点”和“组件”节点查看所有子游戏对象和组件。
- 在检查“活动场景”属性时,查看场景中 GameObject 的位置。
- 新增了对 JobEntityBatch/Lambdas 的支持,便于将实体用于源生成器。
- 改进了对使用索引桶显示大型数组的支持。
- 用于 raytrace 着色器、UXML 和 USS 文件的语法高亮显示。
- 在使用 Unity 项目时,Visual Studio 现在将检测缺少哪些组件,并提示你安装这些组件。
- 更新了用于所有用作协同例程的方法的 Unity 消息 API。
- 我们已使用内置的提供反馈链接为新增 Git UX 刷新了预览功能标志,该链接可直接指向产品团队。
- “团队资源管理器主页和连接”页显示要转换到新增 Git UX 的详细内容。
- 支持分支推送通知中的自定义远程内容。
- 双击“Git 存储库”窗口中的分支可以签出。
- 通过键盘快捷键 Ctrl+Enter 提交更改。
- 从“Git 更改”窗口推送所有标记。
- 启动时,Visual Studio 安装程序不再提升
- Visual Studio 安装程序现支持 HDR 显示
- Visual Studio 安装程序支持导航器屏幕阅读器
- 已将安装程序更新简化为 Visual Studio 更新
- Visual Studio 安装程序增加了深色主题支持
Visual Studio 2019 v16.9.0 的新变化的详细信息
Git 效率
- 通过键盘快捷方式 Ctrl+Enter 提交更改
![用于提交的 Ctrl+Enter](media/16.9/ctrlentercommit.png)
- 从“Git 更改”窗口推送所有标记。
![推送所有标记](media/16.9/pushalltags.png)
.NET 效率
- 使用 WSL 2 进行 .NET Core 调试,你可以通过 Visual Studio 在 WSL 2 中运行和调试 .NET Core 控制台和 Web 应用程序。 这允许面向 Linux 生产环境的 Windows 开发人员具有保真度更高的本地调试体验。
![通过 WSL 2 进行 .NET Core 调试](media/16.9/16.9_p1_wsl2_debugging.gif)
- 现在有一个重构,它建议在非争议性方案中使用
new(…)
。 将光标置于字段声明上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“使用 ‘new(…)’”。
![使用 new(...) 重构](media/16.9/16.9_p1_use_new().png)
- 现在有一个代码修补程序,用于删除 C# 和 Visual Basic 的多余相等表达式。 将光标置于多余的相等表达式上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“删除多余的等式”。
![删除多余的相等表达式代码修补程序](media/16.9/16.9_p1_remove_redundant_equality_expressions.png)
- 现在,.NET 代码样式 (IDE) 分析器可以在构建时强制执行。 可以安装 .NET 代码样式分析器作为 C# 和 Visual Basic 的 NuGet 包,也可以在“项目属性”中启用它们。 若要访问“项目属性”,请在解决方案资源管理器中右键单击一个项目,然后选择“属性”。 接下来,选择“代码分析”选项卡,可在其中选择“在生成时强制实施代码样式(试验)”。
![用于启用 .NET 代码样式分析器的“项目属性”窗口](media/16.9/16.9_p1_project_properties_code_style.png)
- 现在,Syntax Visualizer(与 .NET Compiler Platform SDK 一起安装)显示当前的前景色以增强颜色。 只需使用可视化工具导航到要为其更改颜色的文本,或在编辑器中选择,然后单击已分类的颜色即可更改颜色。
![Syntax Visualizer 着色](media/16.9/16.9_p1_syntax_visualizer.gif)
- 现在,将鼠标悬停在诊断 ID 上获取 pragma 警告时,会出现一个工具提示。 诊断工具提示还具有一个可单击的链接,该链接可导航到该文档。
![pragma 警告的诊断工具提示](media/16.9/16.9_p1_diagnostic_tooltip_pragma_warnings.png)
- 在注释内键入 return 键时,你可能注意到现在新行会被自动注释掉。这是默认情况下启用的新选项。 若要防止新行自动被注释掉,请访问“工具”>“选项”>“文本编辑器”>“C#”或“基本”>“高级”,并取消选中“编写 // 注释时,在新行的开头插入 //”。
在 16.8 预览版 2 中,我们添加了内联参数名称提示,可在函数调用中的每个参数之前插入对文本、强制转换文本和对象实例化的修饰。 在此版本中,我们添加了以下增强功能:
要插入的修饰类型的更多自定义选项。
具有推断类型和 lambda 参数类型的变量的内联类型提示。
当参数名称与方法的目的匹配并且参数名称仅在后缀上不同时,用于禁用内联参数名称提示的选项。
现在,在将类型复制和粘贴到新文件时,using 指令将自动添加。 首先,需要在“工具”>“选项”>“文本编辑器”>“C#”或“Basic”>“高级”中启用此选项,然后选择“粘贴时添加缺少的 using 指令”。
![粘贴时添加缺少的 using 指令](media/16.9/16.9_p2_add_missing_usings_on_paste.gif)
- 按
;
以接受完成列表中的方法时,IntelliSense 现在会自动插入括号和分号,用于对象创建和方法调用。
![方法调用完成](media/16.9/16.9_p2_method_call_completion_semicolon.gif)
- 现在提供 C# 9.0 记录的语义着色。 可以在“工具”>“选项”>“环境”>“字体和颜色”中自定义颜色。 在“显示项”中,滚动到“用户类型 - 记录”并选择要应用于记录的颜色。
![记录的语义着色](media/16.9/16.9_p2_semantic_colorization_records.png)
- 在 C# 9.0 中,弃元在某些模式匹配的情况下是不必要的。 现在,我们淡化不必要的弃元,并提供代码修补程序来删除它们。 将光标置于淡化的弃元上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“删除不必要的弃元”。
![删除不必要的弃元](media/16.9/16.9_p2_remove_unnecessary_discard.png)
- 现在提供将逐字字符串和正则字符串转换为内插字符串的重构,该内插字符串将保留要在输出中使用的大括号。 如果将该字符串分配给一个常量,则不提供此重构。 将光标置于该字符串上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“转换为内插字符串”。
![转换为将保留大括号的内插字符串](media/16.9/16.9_p2_convert_interpolated_string.png)
现在,Visual Basic 中提供了一个代码修补程序,用于在将共享的方法转换为模块时删除共享的关键字。
现提供预处理器符号的 IntelliSense 完成。 开始键入
#if
指令,以查看当前在范围中定义的符号的新完成选项。
![预处理器符号的 IntelliSense 完成](media/16.9/16.9_p3_completion_preprocessor_symbols.png)
- 解决方案资源管理器现在会在分析器节点下显示新的 .NET 5.0 源生成器,以便你可以轻松导航和查看生成的代码。
![解决方案资源管理器中的源生成器节点](media/16.9/16.9_p3_source_generators_node.png)
- “转到全部”窗口将不会在 netcoreapp3.1 和 netcoreapp2.0 中显示重复结果,也不会显示仅用于包装其他嵌套类型的分部类型的结果。 这将有助于整理结果,以便你可以轻松查找并导航到代码。 结果现在还包括部分符号的文件名。
![“转到全部”不会在 netcoreapp3.1 和 netcoreapp2.0 中显示重复结果](media/16.9/16.9_p3_go_to_all_duplicates.png)
- “快速信息”现在显示编译器警告 ID 或禁止显示的编号。 将光标悬停在警告 ID 或编号上,以查看此诊断 ID 的“快速信息”。
![编译器警告 ID 或禁止显示的编号上的“快速信息”](media/16.9/16.9_p3_quick_info_suppression_numbers.png)
谢谢
最后但同样重要的是,非常感谢以下人士在这个月对 .NET 效率(又名 Roslyn)所做的贡献:
- Youssef Victor (@Youssef1313):
- Martin Strecker (@MaStr11):
- Joseph Musser (@jnm2):
- Huo Yaoyuan (@huoyaoyuan):
- Jon Senchyna (@TheSench)
using
关键字歧义的功能 PR #48898 - Mathias Lykkegaard Lorenzen (@ffMathy):将最大建议增加到 5 PR #49687
- Alireza Habibi (@alrz):为
use pattern matching
codefix 中的隐式转换生成显示强制转换 PR #49757 - Raf (Raffaele Rialdi) (@raffaeler):添加了对在单行上标准化自动属性的支持 PR #49495
- Youssef Victor (@Youssef1313):
- 已实现 Visual Basic 代码修补程序,用于删除模块成员的共享 - PR #48289
- 支持 CSharpSyntaxFacts 中的 init 访问器 - PR #48137
- 已将默认 WarningLevel 提升到测试中的最新级别 - PR #47077
- 删除不必要的抑制 - PR #48277
- 提取方法重构以使用记录 - PR #48531
- 修复对隐藏诊断的 WarningLevel - PR #48397
- 修复查找所有引用计数的目标类型新 bug - PR #48434
- 修复当属性包含括号时的属性解析 - PR #48598
- 修复当异常筛选器包含 switch 表达式时的 InvalidCastException - PR #48260
- Louis Zanella (@louis-z):实现了将正则字符串和逐字字符串转换为保留大括号的内插字符串的重构 PR #48502
- Shimmy (@weitzhandler):成员之间的默认构造函数建议 PR #48503
- Kai Jellinghaus (@HurricanKai:使 GreenNode.CreateList 为静态,并调整所有用途 PR #48536
- Jon Senchyna (@TheSench):
- Petr Onderka (@svick):修复了对动态和元组的文档注释 ID 处理 PR #48359
- Huo Yaoyuan (@huoyaoyuan):
- Rastislav Novotny (@duracellko):支持二进制运算符中的 NotNullIfNotNull PR #48490
- Alireza Habibi (@alrz):修复可以为 null 的类型模式分析,以实现更好的错误恢复 PR #48447
- Lingling Tong (@LinglingTong):为 XAML 启用 LSP 拉取模型诊断 PR #49145
- David Maas (@PathogenDavid):修复顶级语句的模块级 SkipLocalsInit PR #49435
- Martin Strecker (@MaStr11):支持“快速信息”中抑制的警告编号 PR #49102
- Adam Speight (@AdamSpeight2008):性能提升 PR #49459
- Adam Ralph (@adamralph):修复向公共方法添加可选参数时的无效代码片段 PR #48725
.NET Web 工具
- 使用 Visual Studio 的“发布”(即,右键单击 > 解决方案资源管理器中的“发布”),将 Steeltoe 应用程序部署到 Azure Spring Cloud。 如果未看到此选项,请确保你的项目包含 NuGet 包 Microsoft.Azure.SpringCloud.Client 版本 1.0.0-preview.1 或更高版本。
![将 Steeltoe 应用程序部署到 Azure Spring Cloud](media/16.9/16.9_p2_steeltoe_azurespringcloud.png)
Web 工具
添加应用程序配置作为连接服务会自动将应用程序连接到 Azure 应用程序配置资源。 现支持自动生成 .NET Core 控制台项目代码,以及为 .NET Framework 项目自动添加 NuGet 包。 若要将此连接服务集成到应用,请单击“连接服务”并将 Azure 应用程序配置添加为“服务依赖项”。
![将应用配置添加到连接的服务](media/16.9/16.9_p3_connectedservices_appconfiguration.png)
- “连接服务”选项卡现在支持 Azure 应用程序配置。 通过应用程序配置,可集中管理应用程序设置和功能标志。 添加此服务依赖项时,代码将自动更新,以连接到应用程序配置资源。 其中包括安装最新的 NuGet 包,以及在本地或 Key Vault 中存储机密。
![通过 Azure 应用程序配置管理配置](media/16.9/16.9_p2_connectedservices_appconfgiuration.png)
Visual Studio 安装程序
为了响应客户的请求,Visual Studio 安装程序加入了几项新功能。
许多用户现使用该安装程序来识别、启动和管理 Visual Studio 的多个副本。 为了对此使用模式提供帮助,Visual Studio 安装程序在启动时不再需要进行提升,只有在对 Visual Studio 和计算机进行更改时才需要提升。 其他活动(如导出安装配置、导航新闻和查看更新详细信息)不再要求用户首先进行提升。
早期版本的安装程序偶尔会要求用户执行其他步骤来更新安装程序。 通过此更新,所需的安装程序更新现在会在安装操作的过程中进行处理,从而不再需要执行额外的步骤。
安装程序现在增加了深色模式主题选择。 用户可以通过标题栏中的“太阳/月亮(☼ / ☽)”按钮来更改安装程序的主题。 从 Visual Studio IDE 中启动的更新将使用 Visual Studio 的当前主题选择。
![具有深色主题和内联安装程序更新的 VS 安装程序](media/16.9/16.9_p2_vsinstallerdarktheme.png)
测试资源管理器音频提示和辅助功能更新
- 测试资源管理器现在可以在测试运行完成时播放声音。 有两种声音可选:一种声音表示测试运行成功,所有测试都通过;另一种声音表示测试运行已完成,但至少有一个测试失败。 此功能作为用户请求启动,可通过添加音频提示来改善测试资源管理器的可访问性,这对于有视觉障碍的开发人员非常有用。 声音选择使用默认的 Windows 10 声音对话框,在该对话框中,还可以从预设声音中进行选择,或者从计算机的任何音频文件中进行选择!
- 使用屏幕阅读器读取时,现在可以使用更简明的短语和单词排序功能,更轻松地访问测试资源管理器中的“分组依据”。
- 现在可以简单地使用链接直接打开日志文件(而不是使用特殊文档控件)从测试资源管理器的“测试详细信息”窗格中查看长测试输出。
测试体验
- 增加了对使用 Fakes 的 .NET Core 测试项目的代码覆盖率收集支持。
- 减少了合并多个代码覆盖率报表所需的时间。
IntelliCode
- IntelliCode 现在直接在 IntelliSense 完成列表中提供重复的编辑建议。 你可以查看建议更改的预览,在该位置应用或直接从完成项中忽略这些建议。 详细了解 IntelliCode 建议。
实验性 Razor 编辑器更新
- HTML 和 C# 语义着色
- 已关闭的 Razor 文件中反映的 C# 符号的重命名
- Razor 文件中更多的 C# 灯泡:
- 添加
DebuggerDisplay
特性 - 创建和分配属性
- 创建和分配字段
- 实现接口或抽象类,包括对“with pattern”的支持,即“用释放模式实现接口”
- 生成 Equals、哈希代码、构造函数
- 添加
- 为参数添加 null 检查和添加所有 null 检查
- 对 Razor 文件中混合内容格式的进一步改进
若要启用实验性 Razor 编辑器,请转到“工具”>“选项”>“环境”>“预览功能”,选择“启用实验性 Razor 编辑器”,然后重新启动 Visual Studio。
来自开发者社区
下面是 16.9.0 中投票最多的一些问题:
- “快速查找”对话框在右侧当前选项卡组中的当前文件以外的其他选项卡组(左)中打开
- 分析月份时区分大小写
- 无法编译面向 .NET 5 的 WPF 应用程序
- 调试时继续执行“编辑并继续”操作后,VisualStudio 16.6.5 出现故障
- Javascript 编辑器语法/IntelliSense 突出显示 bug
- 未经调试启动在 MSBuild Linux 项目上不起作用
- SoftDebuggerSession.cs - 未在第 1612 行设置对象引用
- MSVC 16.7 错误地引发 C2355,以在类非静态成员的初始化时使用此指针
- 由于 Xamarin 更新到 V16.7,生成会混乱但出现警告
- 禁用 IntelliCode 2.2.733.31896 会在编辑 .ts 文件时中断 TypeScript 3.x,且出现 CompositionFailedException
- “值不能为 NULL。 参数名:hierachy”。
- TypeScript IntelliSense 保持停止
- 获取通过 using 声明发布的继承成员函数的地址失败,出现 C2448
- 在 Visual Studio 2019 16.8 中,用于 NET Core 3.1 和 .NET 5.0 的 ClickOnce 发布向导不会生成部署 publish.htm
- 在 16.8 更新之后,尽管某些规则集设置为警告,但还是出现了大量的代码分析错误
- 错误的代码生成/缺失错误
- 内部编译器错误 VS 16.7.0
- 16.7 回归自动常量表达式带有推导出的数组 #include using std::array; void f() { using A1 = array; auto const v1 = array{
- 带有分区的模块将不会编译
- 16.7.4 中的源代码管理“正在进行生成或调试时,无法启动在解决方案后更改文件的操作”
- 回归:16.7.0 中使用 /std:c++17 的 c++ 内部编译器错误(编译器文件“msc1.cpp”,第 1591 行)
- 在我每次点击 CMakeFiles.txt 或 CMakeSettings.json 时,VS2019 仍会擦除 CMakeBuild 目录
- Visual Studio 16.8.0 在开始创建方法时消失
- 文件在更改后不保存
- 使用 VS2019 16.8.0 预览版 1,在 constexpr 函数中编译含有 static_cast 的数组的列表初始化失败
- 在最新 VS 中使用 clan clang-cl 编译 std 出现 Bug
- 在使用不带分隔符的格式时,[MSConnect 3093410] std::get_time 失败
- 将 Coroutines-TS 与 ASIO 一起使用时,IntelliSense 停止工作。
- 将 Coroutines-TS 与 ASIO 一起使用时,IntelliSense 停止工作。
- 当 Windows 处于高对比度模式时,Visual Studio 强制用户使用其高对比度主题。
- 使用带有显式 continue 和 break 语句的无限循环构造时,Visual Studio 2019 会生成错误代码。
- “验证 (CSS 4.0) 警告出现,无法更改为 CSS 3.0 验证
- Intellisense: scss 地图报告意外字符序列
- VS 2019 中的诊断工具窗格为空/损坏
- VS for Linux:生成取消 (Ctrl+Break) 对复杂解决方案不起作用! VS 无法关闭!
- git 合并和未提交操作 bug
- 添加新报表 (.rdl) 失败,并出现错误“找不到成员 0x80020003 DISP_E_MEMBERNOTFOUND”
- 模块和 chaiscript:内部编译器错误
- 远程 Linux 调试路径因共享项目引用而中断
- 16.8 中的任务运行程序资源管理器中断
- 具有运算符 decltype 的 c2833
- 默认 VB.Net Core WinForms 项目在创建设置时出错。
- Microsoft Azure Tools:找不到的方法:“Void Microsoft.WindowsAzure.ServiceModel.Service.set_IsSLBPartialGS(Microsoft.WindowsAzure.ServiceModel.Expr
- __is_nothrow_constructible 内部函数将忽略可能引发的参数转换
- 不能选择“一致性模式”中的 /permissive
- 由于项目引用,Linux 链接失败
- 当 Windows 处于高对比度模式时,Visual Studio 强制用户使用其高对比度主题
- 在 16.8 更新之后,尽管某些规则集设置为警告,但还是出现了大量的代码分析错误
- 由 ClickOnce 安装的 .NET Core 3.1 或 .NET 5.0 应用程序可能无法在其安装之后启动。
- 关于 _variant_t 的 C33005 误报
- Git 合并和提交操作 bug
- 无法通过 net5.0-windows* TFM 查看任务或并行堆栈信息
- 单击 SQL 架构比较上的“更新”时不会保存对 sqlproj 文件所做的更改
- 数据库项目:将文件从解决方案资源管理器拖动到打开的文件时,将从文件系统中删除该文件!
- Visual Studio 2019 上的 Intellicode 模型训练失败
- 打开 LiveShare 协作会话失败
已知问题
通过以下链接查看 Visual Studio 2019 中所有待解决问题和可用暂避方法。
反馈和建议
我们期待你的宝贵意见和建议! 如有问题,请通过安装程序或 Visual Studio IDE 右上角的“报告问题”选项告知我们。 图标位于右上角。
可以在 Visual Studio 开发者社区中提出产品建议或跟踪问题,也可在其中提问、寻找答案和建议新功能。
此外,还可通过实时聊天支持获得免费安装帮助。
Blogs
通过参考开发人员工具博客网站中的见解和建议,随时掌握所有新版本的最新最全资讯,并发表有关大量功能的深入分析帖子。
Visual Studio 2019 发行说明历史记录
要详细了解 Visual Studio 2019 的历史版本,请查看 Visual Studio 2019 发行说明历史记录。