2022LogoVisual Studio 2022 版本 17.4 发行说明


提示

观看 Visual Studio 2022 发布活动的录制内容,了解新功能,听取提示和技巧,并下载免费的数字材料。

开发者社区 | Visual Studio 2022 路线图 | 系统要求 | 兼容性 | 可分发代码 | 发行历史记录 | 许可条款 | 博客 | 最新版本已知问题 | Visual Studio 新增功能文档


单击按钮即可下载最新版 Visual Studio 2022。 有关如何安装和更新 Visual Studio 2022 的说明,请参阅将 Visual Studio 2022 更新到最新版本。 另请参阅如何脱机安装的说明。

下载 Community 版按钮下载 Professional 版按钮下载 Professional 版按钮

访问 Visual Studio 网站,下载其他 Visual Studio 2022 产品。


支持的时间范围

配置为在 17.4 LTSC 频道上接收更新的 Visual Studio 2022 版本 17.4 的 Enterprise 和 Professional 用户提供支持,他们将在 2024 年 7 月之前收到针对安全漏洞的修补程序。 有关 Visual Studio 支持的基线的详细信息,请查看 Visual Studio 2022 的支持策略

单击下面的按钮之一,从 17.4 LTSC 频道下载 Visual Studio 2022 版本 17.4 的最安全版本。 可以在 Visual Studio 订阅网站上找到其他 17.4 LTSC 产品。

下载 Enterprise LTSC 按钮下载 Professional LTSC 按钮

Visual Studio Community 版本仅在具有 Visual Studio 最新次要版本的最新服务版本的当前频道上受支持。

访问 Visual Studio 网站可访问最新版本的 Visual Studio 2022 产品的链接。 有关如何安装和更新 Visual Studio 2022 的说明,请参阅将 Visual Studio 2022 更新到最新版本Visual Studio 管理员指南包含有关如何在整个组织中部署 Visual Studio 的指南。

Visual Studio 2022 博客

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

我们已在此版本中解决了许多最新报告的 bug,并根据开发者社区中的建议添加了新功能。 感谢你的继续反馈。 下面是我们在此预览版中提供的建议列表。


Visual Studio 2022 版本 17.4 发行版


17.4.18 Visual Studio 2022 版本 17.4.18

发布时间:2024 年 4 月 9 日

此次发布的 17.4.18 中解决的问题

  • 安装此 bug 修补程序后,客户端现在可以在布局中使用引导程序,并传入 --noWeb 参数以在客户端计算机上安装,并确保仅从布局下载安装程序和 Visual Studio 产品。 以前,在安装过程中,有时安装程序不会执行 -noWeb 参数,而是尝试从 Web 自行更新。

已解决的安全公告

  • CVE-2024-21409 WPF 中存在“释放后使用”漏洞,在查看不受信任的文档时可能会导致特权提升。
  • CVE-2024-28929 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28930 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28931 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28932 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28933 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28934 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28935 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28936 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28937 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28938 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28941 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-28943 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。
  • CVE-2024-29043 此更新解决了 Microsoft ODBC Driver for Microsoft SQL Server 中的远程代码执行漏洞。

17.4.17 Visual Studio 2022 版本 17.4.17

发布时间:2024 年 3 月 12 日

此次发布的 17.4.17 中解决的问题

已解决的安全公告

  • CVE-2024-21392 .NET 中存在漏洞,其中特制的请求可能会导致资源泄漏,从而导致拒绝服务。
  • CVE-2024-26190 MsQuic.dll 存在漏洞,这可能会导致 Peer 节点只要在保持连接状态下就可以分配小块内存。
  • CVE-2023-27911 此公告已重新发布,以说明 Visual Studio 2022 不再支持 Autodesk® FBX® SDK。

17.4.16 Visual Studio 2022 版本 17.4.16

发布日期:2024 年 2 月 13 日

此次发布的 17.4.16 中解决的问题

已解决的安全公告

  • CVE-2024-0057 存在安全功能绕过漏洞,当基于 Microsoft .NET Framework 的应用程序使用 X.509 链生成 API 时,由于逻辑缺陷,无法完全验证 X.509 证书。
  • CVE-2024-21386 使用 SignalR 的 ASP.NET 应用程序中存在漏洞,恶意客户端可能导致拒绝服务。
  • CVE-2024-21404 分析 X509 证书时,.NET 中存在拒绝服务漏洞,带有 OpenSSL 支持。

17.4.15 Visual Studio 2022 版本 17.4.15

发布时间:2024 年 1 月 9 日

此次发布的 17.4.15 中解决的问题

  • 将 MinGit 更新到了 v2.43.0.1(该版本与 OpenSSL v3.1.4 一起提供),并解决了在某些情况下网络操作非常缓慢的性能下降问题。

已解决的安全公告

  • CVE-2024-20656 VSStandardCollectorService150 服务中存在漏洞,本地攻击者可以在运行 Microsoft Visual Studio 受影响安装的主机上提升特权。
  • CVE-2023-32027 此公告已重新发布,以解决 Visual Studio 中的 Microsoft ODBC Driver for SQL Server 远程代码执行漏洞。
  • CVE-2023-32025 此公告已重新发布,以解决 Visual Studio 中的 Microsoft ODBC Driver for SQL Server 远程代码执行漏洞。
  • CVE-2023-32026 此公告已重新发布,以解决 Visual Studio 中的 Microsoft ODBC Driver for SQL Server 远程代码执行漏洞。
  • CVE-2023-29356 此公告已重新发布,以解决 Visual Studio 中的 Microsoft ODBC Driver for SQL Server 远程代码执行漏洞。
  • CVE-2023-32028 此公告已重新发布,以解决 Visual Studio 中的 Microsoft SQL OLE DB 远程代码执行漏洞。
  • CVE-2023-29349 此公告已重新发布,以解决 Visual Studio 中的 Microsoft ODBC 和 OLE DB 远程代码执行漏洞。
  • CVE-2024-0057 存在安全功能绕过漏洞,当基于 Microsoft .NET Framework 的应用程序使用 X.509 链生成 API 时,由于逻辑缺陷,无法完全验证 X.509 证书。
  • CVE-2024-0056 Microsoft.Data.SqlClient 和 System.Data.SqlClient SQL 数据提供程序中存在漏洞,攻击者可以在 SQL 客户端和 SQL 服务器之间执行拦截攻击(有时称为 MITM,即中间人攻击)。
  • CVE-2024-21319 Microsoft 发布此安全公告的目的在于提供有关 ASP.NET Core 项目模板中漏洞的信息。

17.4.14 Visual Studio 2022 版本 17.4.14

发布时间:2023 年 11 月 14 日

此次发布的 17.4.14 中解决的问题

来自开发者社区:

已解决的安全公告

  • CVE-2023-36038ASP.NET IIS 中存在漏洞:远程未经身份验证的用户可以向 .NET 应用程序发出特制的请求,这可能会导致拒绝服务。
  • CVE-2023-36049.NET 中存在特权提升漏洞:提供给 System.Net.WebRequest.Create 的不受信任的 URI 可用于向后端 FTP 服务器注入任意命令。
  • CVE-2023-36558ASP.NET 存在安全功能绕过漏洞:未经身份验证的用户可绕过 blazor server 窗体上的验证,这可能会触发意外的操作。
  • CVE-2023-36042Visual Studio 中存在拒绝服务漏洞:格式不正确的修饰名称可能会导致无限循环。

17.4.13 Visual Studio 2022 版本 17.4.13

发布日期:2023 年 10 月 24 日

此次发布的 17.4.13 中解决的问题

安全公告已重新发布

  • CVE-2023-36799.NET 中存在一个漏洞:读取恶意制作的 X.509 证书可能会导致拒绝服务。 此问题只影响 Linux 系统。
  • CVE-2023-36796此安全更新解决了 DiaSymReader.dll 中读取损坏的 PDB 文件时可能导致远程执行代码的漏洞。
  • CVE-2023-36794此安全更新解决了 DiaSymReader.dll 中读取损坏的 PDB 文件时可能导致远程执行代码的漏洞。
  • CVE-2023-36793此安全更新解决了 DiaSymReader.dll 中读取损坏的 PDB 文件时可能导致远程执行代码的漏洞。
  • CVE-2023-36792此安全更新解决了 DiaSymReader.dll 中读取损坏的 PDB 文件时可能导致远程执行代码的漏洞。

17.4.12 Visual Studio 2022 版本 17.4.12

发布日期:2023 年 10 月 10 日

此次发布的 17.4.12 中已解决的问题

  • MSVC v143 C++ 生成工具选项 v14.32-17.2 和 v14.34-17.4 现在会安装正确的应用本地可再发行二进制文件版本。

已解决的安全公告

  • CVE-2023-36435MsQuic.dll 中存在内存泄漏漏洞,这可能导致拒绝服务。 此问题只影响 Windows 系统。
  • CVE-2023-38171MsQuic.dll 中存在空指针漏洞,这可能会导致拒绝服务。 此问题只影响 Windows 系统。
  • CVE-2023-44487ASP.NET Core Kestrel Web 服务器中存在漏洞,恶意客户端可能会向服务器发送大量特制的 HTTP/2 请求,从而导致拒绝服务。

17.4.11 Visual Studio 2022 版本 17.4.11

发布日期:2023 年 9 月 12 日

此次发布的 17.4.11 中已解决的问题

  • 将 Visual Studio 使用的 Git 版本更新为了 v2.41.0.3。
  • MSVC 工具集已修复,因此当 vcperf 会话以“/noadmin”标志启动时,CL 不会失败。 这样就可以收集 Build Insights 的数据(并优化生成时间),而无需提升权限。

来自开发者社区:

已解决的安全公告

  • CVE-2023-36799.NET 中存在一个漏洞:读取恶意制作的 X.509 证书可能会导致拒绝服务。 此问题只影响 Linux 系统。
  • CVE-2023-36796此安全更新解决了 DiaSymReader.dll 中读取损坏的 PDB 文件时可能导致远程执行代码的漏洞。
  • CVE-2023-36794此安全更新解决了 DiaSymReader.dll 中读取损坏的 PDB 文件时可能导致远程执行代码的漏洞。
  • CVE-2023-36793此安全更新解决了 DiaSymReader.dll 中读取损坏的 PDB 文件时可能导致远程执行代码的漏洞。
  • CVE-2023-36792此安全更新解决了 DiaSymReader.dll 中读取损坏的 PDB 文件时可能导致远程执行代码的漏洞。
  • CVE-2023-36759此安全更新移除了 pgodriver.sys,在其中读取恶意文件可能会导致权限提升。

17.4.10 Visual Studio 2022 版本 17.4.10

发布日期:2023 年 8 月 8 日

此次发布的 17.4.10 中已解决的问题

  • 解决了 VSWhere 的所有交换机不会返回处于不可启动状态的实例的问题。

已解决的安全公告

  • CVE-2023-35390 在权限较弱的目录中使用某些 dotnet 命令时存在漏洞,可能会导致远程代码执行。
  • CVE-2023-38180 Kestrel 中存在一个漏洞:在检测到潜在恶意客户端时,Kestrel 有时会无法断开连接,导致拒绝服务。
  • CVE-2023-38178 .NET Kestrel 中存在一个漏洞:恶意客户端可以在 ASP.NET 和 .NET 运行时中绕过 HTTP/3 中的 QUIC 流限制,导致拒绝服务。
  • CVE-2023-35391 ASP.NET Core 2.1、.NET 7.0 和 .NET 6.0 应用程序中存在漏洞:在使用 Redis 底板时使用 SignalR 可能会导致信息泄露。
  • CVE-2023-36897 针对 Office 运行时欺骗漏洞的 Visual Studio 2010 Tools 此安全更新解决了未经身份验证的远程攻击者可以在没有有效代码签名证书的情况下对 VSTO 加载项部署进行签名的漏洞。

17.4.9 Visual Studio 2022 版本 17.4.9

发布时间:2023 年 7 月 11 日

此次发布的 17.4.9 中已解决的问题

已解决的安全公告


17.4.8 Visual Studio 2022 版本 17.4.8

发布日期:2023 年 6 月 13 日

此次发布的 17.4.8 中已解决的问题

  • 修复了存储中使用的相邻浮点有时会放弃其高 32 位的 bug
  • 修复了 ASAN 初始化中在启动时导致故障的争用条件
  • 修复了在 ASAN 初始化之前分配内存的某些 GlobalLock/Unlock 和 LocalLock/Unlock 情况下的错误报告中的误报
  • 修复了将堆标记为 HEAP_REALLOC_IN_PLACE_ONLY 的 RtlReAllocateHeap 的 ASAN 问题

已解决的安全公告



17.4.7 Visual Studio 2022 版本 17.4.7

发布日期:2023 年 4 月 11 日

此次发布的 17.4.7 中已解决的问题

  • 使用 Rtl* 内存函数操作该内存时,MSVC ASAN 将忽略映射内存文件
  • 修复了当无效输入发送到在内核模式驱动程序的 PGO 训练期间使用的驱动程序时发生故障的问题
  • 修复了 ISO C++17 和 ISO C++20 的 MSVC 模板运算符解析问题

已解决的安全公告


17.4.6 Visual Studio 2022 版本 17.4.6

发布日期:2023 年 3 月 14 日

此次发布的 17.4.6 中已解决的问题

  • 解决了有关大量线程并发访问同一堆的 ASAN 性能下降问题。 此外,将 windows_hook_legacy_allocators 选项的默认值更改为了 true。
  • 修复了一个 bug:通过返回变量优化省略复制/移动构造函数,而不移除其默认参数的初始化。
  • 修复了静态分析中的误报 C6031 警告。
  • Git 2.39 已将 credential.helper 的值从“manager-core”重命名为“manager”。 有关详细信息,请参阅https://aka.ms/gcm/rename
  • 将适用于 Windows 的 mingit 和 Git 包更新至 v2.39.2,这解决了 CVE-2023-22490

已解决的安全公告

来自开发者社区


17.4.5 Visual Studio 2022 版本 17.4.5

发布日期:2023 年 2 月 14 日

此次发布的 17.4.5 中已解决的问题

  • 修复了 STL 中的回归,此问题可能导致在将由 Visual Studio 2022 的较旧版本生成的对象与由 Visual Studio 2022 版本 17.4 或更高版本生成的对象链接时,std::string 的副本不以 null 结尾。
  • 修复了使用 VS 2015 构建的程序的 std::async() 中的二进制兼容性中断,此问题可能导致因 invalid_operation 异常到达 noexcept 函数而造成的故障。
  • 修复了 STL 中的回归,此问题可能导致在无符号整型元素范围内搜索带符号的负整型值时,std::find 或 std::count 失败。
  • 修复了此 bug:在调试期间,返回的变量有时不会显示在 Visual Studio 的“监视”或“局部变量”窗口中。
  • 单个代码块中的包含对编译器内部函数“__builtin_offsetof”的嵌套调用的多个语句可能会导致 C++ 编译器故障。 为了避免出现故障,请取消嵌套 __builtin_offsetof 内部调用。
  • 调试 Windows 窗体构造函数时,局部变量在“局部变量”和“监视”窗口中显示和计算。
  • 修复了此问题:未识别出 @bind:get、@bind:set 和 @bind:after 属性修饰符,导致设计时错误。
  • 修复了更改签名重构 bug,此 bug 在大括号自动替换错误之后显示在 ChangeSignatureCodeRefactoringProvider 中的异常中 · 问题 #65298 · dotnet/roslyn (github.com)。
  • 修复了此问题:在未安装任何工作负载,且未在计算机上安装 C++ 可再发行组件包时,终端会导致故障。
  • 解决了打开 XAML 文件时 VS 可能会冻结的问题。
  • 已将 CPython 解释器更新至版本 3.9.13。
  • 添加了 Xcode 14.2 支持。
  • 请将 .NET MAUI 更新为 7.0.59 (SR3),有关发行说明,请参阅 https://aka.ms/dotnet-maui-releases
  • 已将适用于 Windows 的 mingit 和 Git 包更新至 v2.39.1.1,这解决了 CVE-2022-41903

已解决的安全公告

17.4.4 Visual Studio 2022 版本 17.4.4

发布日期:2023 年 1 月 10 日

此次发布的 17.4.4 中已解决的问题

  • 已对 C# 源文件禁用文档大纲功能
  • 解决了在 Visual Studio 更新过程中会卸载 Cascadia Code 和 Cascadia Mono 字体的问题。

来自开发者社区

已解决的安全公告

  • CVE-2023-21538 .NET 拒绝服务漏洞 .NET 6.0 中存在拒绝服务漏洞,其中恶意客户端可能会导致堆栈溢出,这可能会在攻击者向公开的终结点发送无效请求时导致拒绝服务攻击。

17.4.3 Visual Studio 2022 版本 17.4.3

发布日期:2022 年 12 月 13 日

此次发布的 17.4.3 中已解决的问题

  • 修复了在同一编译器调用中分析多个 C++ 翻译单元时,分配器中导致内存泄漏的 bug。
  • 修复了以下 bug:thread_local 变量导致链接器发出“错误 LNK1161:导出规范无效”错误。
  • 修复了在同一编译器调用中分析多个 C++ 翻译单元时,分配器中导致内存泄漏的 bug。
  • 修复了在编辑 C#/VisualBasic 代码时导致显示黄色条框消息“诊断分析器运行器崩溃”的基本异常
  • 提高了附加录制内容时在开发者社区提交反馈票证的性能。
  • 为 Xamarin.iOS 和 Xamarin.Mac 添加了对 Xcode 14.1 的支持。
  • 为适用于 iOS、tvOS、macOS、Mac Catalyst 的 .NET 添加了对 Xcode 14.1 的支持。
  • 将 .NET MAUI 更新至 7.0.52 (SR1.1),有关发行说明,请参阅 https://aka.ms/dotnet-maui-releases
  • 修复了以下故障:将 UWP 应用部署到尚未与运行 Visual Studio 的计算机配对的设备。
  • VS arm64 的 wasm-tools 体验将在 VS 17.4.3 中启用。 适用于 .NET WebAssembly 生成工具和 .NET 6.0 WebAssembly 生成工具。 这支持使用 AOT 编译进行 blazor wasm 发布

来自开发者社区

已解决的安全公告

  • CVE-2022-41089 远程代码执行 .NET Core 3.1、.NET 6.0 和 .NET 7.0 中存在远程代码执行漏洞,恶意执行组件可能会导致用户因分析恶意制作的 xps 文件而运行任意代码。

17.4.2 Visual Studio 2022 版本 17.4.2

发布时间:2022 年 11 月 29 日

此次发布的 17.4.2 中已解决的问题

  • 修复了导致 C++ 编译器使用 /analyze 时崩溃的问题。
  • 修复了错误地省略零扩展的编译器 bug
  • 修复了某些 C++ 格式设置选项在 Visual Studio 会话之间未正确保留的问题。
  • 修复了粘贴时挂起的问题
  • 此版本的 Visual Studio 包括 Win App SDK 1.2.221109.1,有关更多详细信息,请参阅 Windows 应用 SDK 发布通道 - Windows 应用 | Microsoft Docs

来自开发者社区


17.4.1 Visual Studio 2022 版本 17.4.1

发布时间:2022 年 11 月 15 日

此次发布的 17.4.1 中已解决的问题

  • 现在,在 vs 安装程序中搜索 arm64ec 或 ec 会弹出包含 arm64ec 支持的相关 arm64 组件。
  • 在 Visual Studio 2022 版本 17.3 及更高版本中,使用 GPU 训练图像分类模型时,ML.NET Model Builder 会挂起。 此死锁已解决,可以使用 CPU 或 GPU 成功训练图像分类。
  • 现在,将屏幕阅读器与集成终端配合使用可以正确提供有关运行的命令及其输出的信息。
  • 打开 .NET 7 Linux 核心转储时,Visual Studio 不会崩溃。

来自开发者社区


此发行版 Visual Studio 2022 版本 17.4 的新增内容摘要

Arm64
此预览版将继续在 Windows 11 上生成本机 Arm64 支持。 除了支持 .NET 桌面开发(WinForms 和 WPF)、使用 C++ 进行的桌面开发(在基于 MSBuild 的项目中)以及 ASP.NET 和 Web 开发,我们现在还启用了通用 Windows 平台开发工作负载。 阅读我们的博客文章,了解更多信息。

C++

  • 改进了编译器错误消息,以提供更正确和有用的信息,尤其是对于概念。
  • 添加了实验性 MSVC 标志 /experimental:log<directory>,将 SARIF 生成日志输出到指定目录。
  • 向 IntelliSense 添加了对 C23 属性的支持,并在 C++20 模块支持中继续取得进展。
  • 改进了打开新解决方案时的编制索引性能。 大型项目可以在 17.3 的基础上提高 20-35%。
  • 通过以下方式改进了命名返回值优化 (NRVO):
    • 为涉及异常处理或循环的情况启用 NRVO。
    • 如果用户传递 /Zc:nrvo 标志、/std:c++20 或更高版本或 /permissive-,则即使在 /Od 下也启用 NRVO。
    • 允许用户使用 /Zc:nrvo- 标志禁用 NRVO。
  • 已将 Visual Studio 随附的 LLVM 版本升级到 15.0.1。 有关可用内容,请参阅 LLVMClang 发行说明。
  • 已使用 CMake 项目为 Visual Studio 添加了对 vcpkg 项目的支持。 对于包含 vcpkg 清单的项目,将在项目打开时自动激活环境。 可以在 Visual Studio 博客文章中的 vcpkg 环境激活中了解有关此方面的详细信息。
  • 现在,可以将开发容器用于 C++ 项目。 可以在 适用于 C++ 的开发容器博客文章中了解有关此功能的详细信息。
  • 当预先包含标头为 PCH 时,将 IntelliSense 设置为遵循预先包含标头的顺序。 以前,当通过 /Yu 使用 PCH 并通过 /FI 强制包含它时,IntelliSense 将始终先处理它,然后再处理通过 /FI 包含任何其他标头。 这与生成行为不匹配,因此通过此更改,可以按照指定 /FI 标头的顺序处理该标头。
  • 从测试资源管理器中的 CTest 名称中删除了内部前缀。
  • 将 Visual Studio 随附的 CMake 版本升级到了版本 3.24.1。 有关可用内容的信息,请参阅 CMake 发行说明
  • Android SDK 更新
    • Ant 脚本已删除,因此用户将不再在“新建项目”对话框中看到基于 Ant 的模板。 有关从 Ant 模板迁移到 Gradle 模板的帮助,请参阅:从 Apache Ant (gradle.org) 迁移生成
    • 添加了对使用 NDK 23 和 24 生成的支持
    • 已将 NDK 组件更新到 LTS 版本 23
  • 添加了 ranges::min_element()ranges::max_element()ranges::minmax_element() 的矢量化实现
  • 我们继续跟踪 C++ 标准化的最新开发进程,可通过在编译器选项中包含 /std:c++ 最新版来支持以下 C++ 23 功能
    • P2302ranges::containsranges::contains_subrange
    • P2499string_view 范围构造函数应为 explicit
    • P0849R8auto(x):语言中的 decay-copy
    • 编译器部件尚未实现;最初实现范围时,库部件是在 C++20 模式下实现的。
    • P0881R7<stacktrace>
    • P2301R1 添加 std::stacktracepmr 别名
    • P1328R1constexpr type_info::operator==()
    • P2440R1ranges::iotaranges::shift_leftranges::shift_right
    • P2441R2views::join_with
  • 添加了“创建声明/定义后导航”选项,允许你选择“创建声明/定义”功能的导航行为。 可以在速览(默认)或打开文档或无导航之间进行选择。
  • Visual Studio 的 Arm64 版本现在绑定了 CMake 和 Ninja 的 Arm64 版本。
  • 添加了对 CMake 预设版本 4 的支持。 有关可用内容的详细信息,请参阅 CMake 发行说明
  • 使用连接管理器连接到远程系统现在支持 SSH ProxyJump,该 SSH ProxyJump 用于通过另一个 SSH 主机访问 SSH 主机(例如,访问防火墙后面的主机)。

开发者社区亮点

调试和诊断

  • DataTable 可视化工具现已升级,在筛选、排序、导出和主题设置等方面进行了新改进。
  • 要导出 CSV/Excel 格式的数据导出,请使用右上角的下拉菜单。
  • 利用可视化工具还可以筛选基于数据的所需筛选字符串。 可视化工具将返回包含与筛选器字符串匹配的值的所有行。 还可以以 CSV/Excel 格式导出经筛选和排序的结果。
  • 可视化工具窗口将按照所选的 Visual Studio 主题设置主题。

编辑器功能

  • Visual Studio 中现已提供音频提示。 若要启用音频提示,请转到“工具”>“选项”,然后前往“文本编辑器”>“常规”。 在“设置”部分中,选中“启用音频提示”选项以启用音频提示。选中此选项后,当编辑器中的插入符号到达含有错误、断点或警告的行时,Visual Studio 将播放音频提示。 在差异视图中查看文件时,当行到达已添加或删除的行时,它还将播放提示。 这些提示可以在 Windows 中的“设置”控制面板中单独启用或修改。
  • 按住 Shift 键同时在编辑器上滚动鼠标滚轮,现在会导致编辑器水平滚动。 可以在“文本编辑器”>“高级”下的“工具”>“选项”中配置编辑器滚动量。
  • 突出显示编辑器中的当前行号以提高可见性。
  • “输出”窗格现在有一个按钮,该按钮将在每行前面附加一个时间戳,使开发人员能够更轻松地查看运行时间较长的进程中的步骤之间的时间。
  • 我们修复了在某些情况下阻止正确保存打印机设置的问题。
  • 在编辑器中选择文本时,Visual Studio 现在将自动突出显示匹配的字符串。 若要启用此功能,请转到“工具”>“选项”,然后前往“文本编辑器”>“常规”。 在“显示”部分中,选中“显示所选内容匹配项”选项。 选中此选项后,每当选择包含不超过 100 个字符的单行文本时,任何匹配项都会立即突出显示。

F#

本地函数参数的工具提示

Git 工具

开发者社区亮点

其他功能

  • 多存储库支持意味着,一次最多可以有 10 个活动 Git 存储库,这样就可以使用跨越多个存储库的解决方案,同时在多个存储库中执行提交、拉取和推送等 Git 操作。 通过跨多个存储库打开包含项目的解决方案或文件夹,开始使用多存储库支持。 阅读我们的博客文章,了解详细信息并分享你的反馈
  • 取消跟踪并忽略跟踪的 Git 文件
  • 根据最近的 Git 安全更新,我们通过改进存储库状态和利用新的信任对话框,增强了信任单个和多个 Git 存储库的用户体验。

安装和更新

回退

Visual Studio 现在支持返回到以前安装的版本。 有关详细信息,请访问回滚博客文章

移除不受支持的组件

Visual Studio 2022 版本 17.4 安装程序包含一项新功能,你可以通过此功能轻松地批量移除 Visual Studio 安装的已转换为“不支持”状态的所有组件。 这将帮助你维护一个安全且合规的环境。 开发人员可以在更新或修改时启动此操作,IT 管理员可以按策略强制实施此操作。 对于使用布局的企业,可以配置一次布局,然后未来的管理员更新将遵循此设置。 如果这些客户端计算机已更新为使用最新的 Visual Studio 安装程序,则此功能也适用于 Visual Studio 2017 和 2019。 有关此功能工作原理的其他详细信息,请参阅 Visual Studio 管理员指南博客文章

通过管理员模板 (ADMX) 配置策略

今天,我们发布了 Visual Studio 管理模板文件 (ADMX/ADML),它使 IT 管理员能够轻松发现、管理和控制可供策略管理的 Visual Studio 行为。 ADMX 文件也易于与常见的管理和部署工具(如组策略编辑器或 Microsoft Endpoint Manager)集成。 请在此处查找其他信息

Visual Studio 安全更新现已通过适用于企业的 Windows 更新的 Microsoft 更新渠道提供

适用于 Visual Studio 的所有受支持版本的所有 Visual Studio 安全更新现在可用于连接新式云的 Azure Active Directory (Azure AD) 联接的设备,这些设备使用 ,并由 Microsoft Endpoint Manager(以前称为 Intune)等移动设备管理解决方案管理。 可以通过将 AdministratorUpdatesEnabled 策略设置为 2,在客户端设备上启用此功能。 有关更多详细信息,请参阅博客文章Visual Studio 管理员指南

IntelliCode

当 IntelliCode 提供修改或删除单个代码行的部分内容的建议时,该建议现已在 C# 用户的编辑器图面上显示为“差异视图”。 通过使用 TAB 键,用户可以接受预测。

Microsoft Teams 开发工具(Teams 工具包)

  • 使用此新版本的 Teams 工具包时,需要更新 Azure Active Directory 模板文件、projectSettings.json 和应用清单文件。 执行 Teams 工具包菜单命令后,这些更新会自动完成,并且不会更改项目源代码。 输出窗口将显示更新状态。
  • Microsoft Teams 应用项目模板向导中的 Tab 应用程序类型包括是否配置单一登录的选项。 稍后使用 Project > Teams 工具包 > 添加身份验证代码来添加它。 在以下文档中了解有关 Teams 工具包的详细信息:https://aka.ms/teams-toolkit-vs-docs

.NET 效率

  • 有一个新的内联重命名 UI,可用于重命名类型。 按 Ctrl+R 键,再按 R 键显示新的内联重命名体验。 请注意,新 UI 现在将显示在类型下,并带有重命名注释、字符串和符号文件的选项。

内联重命名

  • 现在可以选择禁用 Source Link 和 Embedded 源。 可以在“工具”>“选项”>“文本编辑器”>“C#”>“高级”中禁用此源,然后取消选择“启用对 Source Link 和 Embedded 源的导航”。

禁用 Source Link 和 Embedded 源

DataTable 可视化工具

  • 现在,可以在“文档大纲”窗口中一目了然地轻松查看文件的结构。 “文档大纲”窗口在编辑器中显示文件的符号树,有助于快速导航和编辑项目文件。 可以通过转到“查看”>“其他窗口”>“文档大纲”或使用快捷键 Ctrl+Alt+T 可以打开“文档大纲”。

文档大纲

测试工具

  • Live Unit Testing 现在提供用于重置所有状态的按钮。 转到“测试”>“Live Unit Testing”>“重置解决方案的 Live Unit Testing 状态”。
  • Live Unit Testing 现支持 Razor 文件。
  • 运行测试直到失败有助于查找不可靠测试,并运行单元测试,直到它们达到失败或直到它们达到“选项”中设置的阈值。
  • 查看代码覆盖率报告,范围仅限于使用新的代码覆盖率变更集报告更改的文件/行。

性能改进

在此版本中,我们已在 Visual Studio 的以下方面进行了性能改进:

  • 在文件中查找和替换
  • Git 分支切换
  • 单元测试性能
  • 语言服务配置切换优化
  • 响应式文件保存
  • C++ 索引

详细了解此版本中的所有性能增强


Dev Box 上的 Visual Studio

  • 由于 Dev Box 不在本地网络上,因此需要使用公共 IP 通过 Internet 连接到本地网络上的任何 Mac。
  • 如果 Android Emulator 无法加载,请转到“Windows 功能”对话框,确保启用了 Hyper-V。 如果未选中 Hyper-V 复选框,请启用它,然后在尝试使用仿真器之前重启 Dev Box。

来自开发者社区


已知问题

.NETSDK:.NET SDK 升级到 17.4 后,不加载我的任何项目 [7.0] 如果安装了 .NET 7 预览版 SDK 工作负载,则使用特定工作负载的项目不会加载、生成和运行:如果安装了预览版 .NET 7 SDK,则具有工作负载依赖项(如 microsoft.net.workload.mono.toolchain)的项目可能无法构建、加载和运行。 此处介绍了此问题的示例。

解决方法:解决此问题的最佳方法是卸载任何 .NET 7 预览版 SDK。 有关详细说明,请参阅 dotnet 卸载说明。 例如,在 Windows 上,可以使用“添加/删除程序”卸载 dotnet 预览版 SDK。 另一种方法是尝试删除文件夹 C:\Program Files\dotnet\sdk-manifests\microsoft.net.workload,但这仅适用于基于文件的安装。 Dotnet-core-uninstall 是用于卸载 .NET 7 预览版 SDK 的另一种方法。

Python 和本机混合模式调试:使用虚拟环境时,Python 和本机混合模式调试存在已知 bug。 由于 Python for Windows 将存根 python.exe 用于 venvs,Visual Studio 会查找并加载 python.exe 作为子进程。 对于 Python 3.8 及更高版本 - 启动调试会话时,由于混合模式不支持多进程调试,因此它最终只调试该存根进程,而不是实际应用。 对于附加场景,解决方法是附加到正确的python.exe。 对于启动/F5 场景,没有解决方法,因此你将不得不避免 venvs。 对于 3.8 之前的 Python 版本,混合模式调试应在 venvs 中按预期方式工作。 在任何版本的 Python 中,在全局环境中运行都不会导致这些问题。 有关详细信息,请参见无法同时调试 Python 和本机

发现/运行 Nunit 测试:从测试资源管理器发现/运行 Nunit 测试在 17.4 上失败,“输出”窗格中出现“未知框架版本 7.0”异常

解决方法:如果有对 Nunit3TestAdapter 的引用,请确保已更新到 4.3.1 或更高版本。

NuGet 包Visual Studio 17.4 在发布类库项目时不会生成 NuGet 包。

解决方法 这是 17.4 中的有意更改,旨在使 Visual Studio 中的发布行为在所有 .NET 项目类型中保持一致。 若要为类库项目生成 NuGet 包,建议的方法是:

  1. 将项目属性设置为在构建时生成 NuGet 包,如此处所述,或者
  2. 运行右键单击时可用的 pack 命令 -> 包,如此处所述 通过此项新增更改,publish 命令将为类库生成发布输出,类似于它对所有其他 .NET 项目类型的行为方式。 有关详细信息,请参阅此文档页。 还可以使用各种 pack msbuild 属性来更改包行为,如此处所述

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


.NET 7 现已推出

.NET 7 为应用带来了 C# 11/F# 7、.NET MAUI、ASP.NET Core/Blazor、Web API、WinForms、WPF 等的更高的性能和新功能。 使用 .NET 7,还可以轻松地将 .NET 7 项目容器化,在 GitHub 操作中设置 CI/CD 工作流,并实现云原生可观测性。

反馈和建议

我们期待你的宝贵意见和建议! 可使用安装程序或 Visual Studio IDE 右上角的“发送反馈”图标,或者通过“帮助”>“发送反馈”来报告问题或提出功能建议“反馈”图标。 可在 Visual Studio 开发者社区跟踪你的问题,也可在这里添加评论和查找解决方案。 此外,还可通过实时聊天支持获得免费安装帮助。


Blogs

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


返回页首