Visual Studio 2022 版本 17.5 发行说明
提示
观看 Visual Studio 2022 发布活动的录制内容,了解新功能,听取提示和技巧,并下载免费的数字材料。
开发者社区 | Visual Studio 2022 路线图 | 系统要求 | 兼容性 | 可分发代码 | 发行历史记录 | 许可条款 | 博客 | 最新版本已知问题 | Visual Studio 新增功能文档
单击按钮即可下载最新版 Visual Studio 2022。 有关如何安装和更新 Visual Studio 2022 的说明,请参阅将 Visual Studio 2022 更新到最新版本。 另请参阅如何脱机安装的说明。
访问 Visual Studio 网站,下载其他 Visual Studio 2022 产品。
Visual Studio 2022 版本 17.5 发行版
- 2023 年 4 月 11 日 - Visual Studio 2022 版本 17.5.4
- 2023 年 3 月 21 日 - Visual Studio 2022 版本 17.5.3
- 2023 年 3 月 14 日 - Visual Studio 2022 版本 17.5.2
- 2023 年 2 月 28 日 - Visual Studio 2022 版本 17.5.1
- 2023 年 2 月 21 日 - Visual Studio 2022 版本 17.5.0
Visual Studio 2022 博客
可从 Visual Studio 2022 博客获取来自 Visual Studio 工程团队的官方产品见解。 有关 Visual Studio 2022 版的详细信息,可参阅以下文章:
我们已在此版本中解决了许多最新报告的 bug,并根据开发者社区中的建议添加了新功能。 感谢你的继续反馈。 下面是我们在此预览版中提供的建议列表。
开发者社区建议:你问的,我们会专心聆听!
- 使用正则表达式指定彩色选项卡的配色方案 63 票
- 我希望 Visual Studio 具有针对注释和包含建议的代码的拼写检查器。 34 票
- 允许 --layout 选项与 --config 选项一起使用 23 票
- 添加本机 Markdown 支持 10 票
- 改进 __builtin_FUNCTION 内部函数(与 std::source_location 相关)的输出 3 票
查看作为 17.5 的一部分提供的所有开发者社区建议列表
Visual Studio 2022 版本 17.5.4
发布日期:2023 年 4 月 11 日
此次发布的 17.5.4 中已解决的问题
- 此更改修复了当无效输入发送到在内核模式驱动程序的 PGO 训练期间使用的驱动程序时发生故障的问题。
- 修复了 ISO C++17 和 ISO C++20 的 MSVC 模板运算符解析问题
- 使用 Rtl* 内存函数操作该内存时,MSVC ASAN 将忽略映射内存文件。
- 请将 .NET MAUI 更新为 7.0.81 (SR4),有关发行说明,请参阅 https://aka.ms/dotnet-maui-releases。
- 将 .NET iOS 更新为 16.2.127.0,请参阅发行说明。
- 将 .NET Android 更新为 33.0.46.0
- 解决配置 API 中可能导致双重释放漏洞的修补程序的问题。
- VSIXInstaller 已更新,可防止信任警告在 UI 中隐藏。
已解决的安全公告
- CVE-2023-28260 .NET 远程代码执行漏洞:在 Windows 上运行的 .NET 中存在一个漏洞,即运行时 DLL 可以从意外位置加载,从而导致远程代码执行。
- CVE-2023-28296 Visual Studio 远程代码执行漏洞
- CVE-2023-28299 Visual Studio 欺骗漏洞
- CVE-2023-28262 Visual Studio 特权提升漏洞
- CVE-2023-28263 Visual Studio 信息泄露漏洞
开发者社区亮点
- 使用实体框架更新向导时,VS2022 17.5 不再允许使用来自 app.config 的连接字符串
- iisexpress crashes in ntdll.dll
- (旧的)“新建对象”对话框中缺少“显示紧凑视图”按钮
- 从版本 17.1 升级到 17.4 后,专有 Visual Studio 扩展强制打开“另存为”对话框
- 所有重构功能均显示未找到引用
Visual Studio 2022 版本 17.5.3
发布日期:2023 年 3 月 21 日
此次发布的 17.5.3 中已解决的问题
- 移除用于 ASP.NET Web 工作负载的集成 Edge 开发人员工具
- 解决了有关大量线程并发访问同一堆的 ASAN 性能下降问题。 此外,将 windows_hook_legacy_allocators 选项的默认值更改为了 true。
- MSVC C++ 工具集已更新到 14.35.32216.01
- 编辑 Razor 文件时,添加一些计算编辑构造的缓存可以提高性能。
- 修复了以下 bug:当 Text 属性包含多行(在 InitializeComponent 中生成代码时由 vbCrLf 分隔)时,VB-WinForms 项目中的多行文本框将被删除。
- 修复了以下 bug:WinForms 进程外设计器中非常大的窗体或 UserControl 需要很长时间才能保存。 请注意,Forms/UserControl > 3,000 行代码将在某些情况下采用不同的格式或不受命名空间/此(Visual Basic 中的 Me)缩减的约束。 请考虑将非常大的窗体的一部分重构为专用的 UserControl,并在更大的窗体中使用这些 UserControl 来改进性能并简化维护。
- 修复了以下 bug:当上一行以引号或双引号字符结尾时,InitializeComponent 中的 VB-Tick-Comments 现将正确换行到各个行中。
- 修复了以下 bug:在 Visual Basic 中重命名 Code-behind Designer 文件的 WithEvents 定义的 Control 字段不再导致多次定义/处理的事件。
开发者社区亮点
- Visual Studio 中不再包含 Edge 开发人员工具
- 对自定义异常的构造函数参数使用 fmtlib 并引发异常会直接导致 MSVC 17.10 崩溃
- C1001:编译从 variadic 模板调用的 std::format 时出现内部编译器错误。
- AnyCode 通过在 UI 线程上同步执行关闭工作区导致死锁
- 使用 NRVO 的 Visual Studio 17.4 C++ 出现错误 codegen
- 在 WSL 上使用 CMake 时,单独生成目标不起作用
- IntelliSense 报告了提升库的许多错误
- MSVC 17.4.2 中出现编译器故障,位置:“msc1.cpp”的第 1592 行
- 将用户控件与 ushort 属性结合使用时 Visual Studio WinForms Designer 中产生的 bug
- 在 IDE 中更改窗体对象后,在编译和运行时窗体事件丢失
- 保存 winform 时显示“应该有两个或更多个类部件”
- Sqlproj 文件在具有由 VS 的内置 master.dacpac 文件提供的某些主数据库引用时无法生成
- Visual Studio 17.5 中断了 SqlPackage.exe
- 无法根据解决方案顺序运行云服务外延支持项目
- “新建项目”和“新建文件”均不显示任何模板。 对于后者,它一直显示“正在加载模板”。 17.5.0 的全新安装
Visual Studio 2022 版本 17.5.2
发布日期:2023 年 3 月 14 日
此次发布的 17.5.2 中已解决的问题
- 修复了标记帮助程序查找中的一个 Razor 编译器优化 bug,该 bug 在很多情况下造成 ViewComponent 标记帮助程序损坏。
- 这向 17.5 版本新增了
@bind:after
支持。 此功能最初是在 17.4 版本中增添的,但未正确移植到 17.5 代码库中。 - 在“一站式搜索”体验中,预览面板对所有结果都是只读的。 我们在致力于处理细节并解决预览编辑体验方面的问题,感谢你在此期间的耐心等待。
- 将适用于 Windows 的 mingit 和 Git 包更新至 v2.39.2,这解决了 CVE-2023-22490
- 移除用于 ASP.NET Web 工作负载的集成 Edge 开发人员工具
已解决的安全公告
- CVE-2023-22490 Mingit 远程代码执行漏洞
- CVE-2023-22743 Git for Windows Installer 特权提升漏洞
- CVE-2023-23618 Git for Windows 远程代码执行漏洞
- CVE-2023-23946 Mingit 远程代码执行漏洞
开发者社区亮点
- 测试资源管理器(SpecFlow 测试):转到功能类文件而不是功能文件
- 双击错误列表中的消息时,Visual Studio 终止
- 自 v.17.5.0 Preeview 3 起无法使用 Docker
- 使用拼写检查器会导致 Visual Studio 崩溃(经常)
- Visual Studio 中不再包含 Edge 开发人员工具
Visual Studio 2022 版本 17.5.1
发布日期:2023 年 2 月 28 日
此次发布的 17.5.1 中已解决的问题
- 将解决方案生成项的输出路径指定为警告时,.NET CLI 中出现降级错误。 解决方案级
--output
选项不再对生成相关命令有效
开发者社区亮点
- The VCFileCodeModel.EndPoint 属性不在 VS2022 中返回正确结果
- 问题:由于因“CommandLineArgsForDesignTimeEvaluation”而必须升级到 17.5,无法生成项目
Visual Studio 2022 版本 17.5
发布日期:2023 年 2 月 21 日
开发者社区亮点
- 重启后无法记住批生成中的选择 29 票
std::move
(和类似函数)导致调试性能下降,调试体验变差 - 29 票- 允许 --layout 选项与 --config 选项一起使用 24 票
- 选择“在运行单元测试之前自动部署数据库项目”选项后出现生成错误 - 19 票
- C/C++“左大括号的位置”设置不断自动更改 - 13 票
- 适用于 CSS 的热重载不适用于托管的 Blazor WebAssembly 13 票
- Git - 无法启动已配置的比较工具 12 票
- Visual Studio 在调用 OnBeforeSave 之前清除脏标志 11 票
- 解决方案资源管理器项自行折叠 - 11 票
- 正在写入解决方案文件夹的 JSON 架构 10 票
- 重命名测试方法时,单元测试启动失败并出现异常 10 票
- IIF 所处条件 - SQL46010:附近的语法不正确 9 票
- Intellisense 无法识别 C++20 字符串字面量运算符模板 - 8 票
- Html 属性颜色在最新的 VS 预览版中出现故障 7 票
- C++、Visual Assist 在文件中查找可为整个解决方案或当前项目中的搜索提供部分结果 7 票
- MFC 对话框由对话框编辑器重设大小 - 6 票
- Intellisense 无法处理模块标头 - 6 票
- Visual Studio 2022 在外部修改导致重新加载后在无提示情况下损坏 utf-8 源代码和内容文件 6 票
- CMake + Ninja 无法分析包含路径输出 (/showIncludes) - 5 票
- 静态分析中的误报 c6031 警告 - 5 票
- Visual Studio 冻结,需要在任务管理器中终止 5 票
- MSVC 在可能的情况下未使用 bswap - 5 票
- 解决方案尚未完成分析;浏览结果可能不准确 4 票
- C++ Intellisense 因某些模板参数而永久挂起 - 1 票
- 版本 17.5.0 预览版 2.0 热重载不适用于 Xamarin.Forms - 1 票
- Xamarin Profiler 模拟器问题
此发行版 Visual Studio 2022 版本 17.5 的新增内容摘要
集成终端中的 ASP.NET 输出
- 在 Visual Studio 中启动的 ASP.NET Core 应用程序现在将输出重定向到集成终端工具窗口,而不是外部控制台窗口。
在没有 Dockerfile 的情况下生成容器映像
- 使用 .NET 7,现在只需使用 .NET SDK 即可生成和发布容器映像。 不需要 Dockerfile 就可以面向所需的任何 .NET 运行时,包括以前的版本。
按正则表达式为制表符着色
- 根据定义的路径匹配规则直观地区分不同的文件。
C++
std::move
、std::forward
、std::move_if_noexcept
和std::forward_like
现在不会在生成的代码中生成函数调用,即使在调试模式下也是如此。 这是为了避免命名强制转换在调试版本中导致不必要的开销。/permissive-
或表示它的标志(例如/std:c++20
或std:c++latest
)是必需的。- 添加了
[[msvc::intrinsic]]
以支持上述项。 这可应用于由单个强制转换组成的非递归函数,该函数仅采用一个参数。 - 在允许终端 I/O 的集成终端中添加了对 Linux 控制台的支持。
- 添加了对 C11 原子基元 (
<stdatomic.h>
) 的初始实验性支持。 可在/std:c11
模式或更高版本中使用/experimental:c11atomics
标志来启用此实验性功能。 - 向生存期检查器添加了一组新的实验性高置信度检查,以减少干扰。
- 启用了一个新的预览功能“远程文件资源管理器”,可在 VS 中查看远程计算机上的文件目录,并可在其中上传和下载文件。
- 更改了 Visual Studio 随附的 CMake 可执行文件的版本控制,以与 Kitware 版本匹配。
- 向 CMake 项目模板添加了对热重载的支持。
- C++ 的“转到定义”现在将使用更精细的操作指示器,这需要花费更多时间,取代了以前版本中的模式对话框。
- 已开始推出一项试验,在 C++ 自动完成和成员列表中提供额外的智能结果。 此功能以前称为“预测 IntelliSense”,但现在使用一种新的表示方法。
- 我们现在提供带 LLVM 工作负载的本机 Arm64 Clang 工具集,允许在 Arm64 计算机上进行本机编译。
- 添加了图像查看扩展的本地化(注意:此扩展在市场中提供,并且未通过 Visual Studio 安装程序捆绑)。
- 添加了在当前运行的开发人员容器中打开终端窗口的支持。
- 对 IntelliSense 宏扩展进行了多项改进。 值得注意的是,我们在更多上下文中启用了递归扩展,并在弹出窗口中添加了将扩展复制到剪贴板或内联扩展宏的选项。
- 串行监视器现在支持并发监视。 并发监视允许同时并排监视多个端口! 只需按加号按钮即可打开另一个串行监视器并开始使用。
- 现在可以查看在 Unreal Blueprint 资产中修改的基类的属性,而无需退出 Visual Studio。 双击 C++ 类或属性的蓝图引用,在 Visual Studio 中打开 UE 资产检查器。
- 在远程 Linux 计算机上启用了运行中的 DevContainers。
- 在 CMake 目标视图中选择了要构建的多个目标。
- 添加了对 CMakePresets.json 版本 5 的支持。 有关新功能的信息,请参阅 CMake 文档。
- 启用了测试资源管理器以并行生成和测试多个 CMake 目标。
- 在开发容器中添加了“在终端中打开容器”选项。
- 实现了标准库功能:
这些备注用于说明此版本中提供“大括号对着色”功能。 不幸的是,此功能已推迟直到版本 17.6 发布。 可立即下载 17.6预览版 1 进行试用。
代码搜索和导航
- 一站式搜索将代码 (Ctrl+T) 和 IDE 功能 (Ctrl+Q) 搜索功能合并到一个 UI 中。
- 通过代码搜索 (Ctrl+T),可快速导航到解决方案中的文件、类型和成员。
- 通过功能搜索 (Ctrl+Q),可轻松访问 Visual Studio 中提供的各种工具、选项、模板和组件。
- 在“代码搜索”选项卡中,通过“预览面板”,无需打开所选结果即可查看该结果周围的上下文。 你甚至可以直接在搜索窗口中调整代码。
- 在此处详细了解一站式搜索。
- 我们计划逐步开启这一全新的搜索体验。 可手动启用/禁用此体验:“工具”>“管理预览功能”>“新的 Visual Studio 搜索体验(需要重启)”。
调试和诊断
- 文本可视化工具启用了其他工具和字符串操作选项,例如 URL 编码和解码、Base64 编码和解码、JWT 解码等。
- 文本可视化工具和快速监视窗口现在提供对深色、蓝色和浅色 VS 主题的完全主题设置支持。
- 并行和调用堆栈窗口将具有指示器图标,可引起对死锁线程或阻塞线程等关键场景的注意。
- “托管内存”窗口现在将显示名为“重复字符串”的快照/转储的新自动见解。
- “托管内存”窗口中的新选项卡“见解”会显示在堆上多次分配的字符串列表。 还会显示内存浪费总量,即实例数减去字符串大小的一倍。
- 还可以通过单击“查看实例”按钮转到实例,该按钮显示与“内存”窗口类似的实例视图。 它还会显示字符串对象的保留关系图。
性能增强功能
针对大型解决方案的更快速的解决方案加载:Visual Studio 增加了一项名为“生成加速”的新功能,该功能可提高增量生成性能。 “生成加速”指示 Visual Studio 仅生成有修改的项目,而跳过未更改的项目。
启用生成加速可以使 SDK 风格的 .NET 项目的增量生成时间缩短 80%。 有关启用/禁用生成加速的更多详细信息和说明,请访问以下链接:https://aka.ms/vs-build-acceleration外部源反向编译:在 17.5 中,反向编译大型 .NET 模块的速度提升了 10 倍,从而提高了调试和排查问题的效率。
- 线程窗口:线程窗口的响应时间比 17.4 快 2 倍,并且可在具有大量线程的情况下高效地扩展。
- 代码覆盖率:添加了新的静态检测选项,可提供比动态检测更高的性能。
快速添加新文件
- 在不搜索模板的情况下将新文件添加到项目中。
Markdown
- Visual Studio 现在支持编辑 Markdown (.md) 文件。
- 若要开始,请打开任何文件扩展名为 .md 的文件。
- 使用编辑器窗口左上角的“预览”按钮预览已处理的 HTML。 Shift+F7 还可用于打开预览。 使用 Ctrl+Alt+向上键将键盘焦点移动到“预览”按钮,然后按空格键切换预览。
- 在某些情况下,新的 Markdown 编辑器可能不会自动启用。 如果无法打开 .md 文件,找不到“预览”按钮,或者在编辑器中看不到修饰,请检查“工具\选项”的“预览功能”页面中的“Markdown 语言服务”预览功能是否已启用。
- 请注意,如果当前使用扩展来编辑 Markdown 文件,则可能需要在 .md 文件中显示上下文菜单并显式选择“打开方式…”,然后选择你的首选选项。
SQL Server 2022
- 使用为 SQL Server 2022 引入的新 T-SQL 语法
拼写检查器
- Visual Studio 现在可以对 C++、C# 和 Markdown 文件进行拼写检查。 此功能处于预览阶段,可通过选中“预览功能”中的“文本拼写检查器”选项来启用。 也可通过“编辑\高级”下的“切换文本拼写检查器”命令或主工具栏中的按钮来切换此功能。 对于 C++ 拼写检查,还必须选中“C++ 拼写标记器”。
- 默认情况下,拼写检查器将使用 en-us 词典,将拼写错误的单词标记为警告,并将扫描注释、字符串和标识符中拼写错误的单词。 可使用 .editorconfig 文件修改此行为。
- 以下属性可用于控制 .editorconfig 中的拼写检查器:
spelling_languages = _language_,_language_,etc...
spelling_checkable_types = strings,identifiers,comments
spelling_error_severity = error OR warning OR information OR hint
spelling_exclusion_path = absolute OR relative path to exclusion dictionary (File must be UTF16 with BOM encoding)
.editorconfig 示例:
spelling_languages = en-us,fr-fr
spelling_checkable_types = identifiers,comments
spelling_error_severity = error
spelling_exclusion_path = .\exclusion.dic
设置和更新
- 现在可使用导出的 *.vsconfig 文件轻松配置组件并将其添加到脱机布局。
- 现在可通过“工具选项”>“产品更新”对话框获取在关闭时始终更新的选项。 这样就可以更轻松地自动保持更新和安全状态。 有关详细信息,请访问博客文章。
- Visual Studio 在安装程序添加了音频提示! 音频提示会提醒用户已在安装程序上完成操作或者播放声音时出错。 这包括安装、更新、修改和安装程序执行的其他许多操作,或者尝试请求的操作时出现的任何错误对话框。 此功能默认处于启用状态,用户可以按照此处概述的说明将其关闭:在安装程序中禁用声音
- Visual Studio 现已通过 Windows 数据包管理器工具提供
Teams 工具包更新
- 借助新的 Microsoft Teams 应用和工作流机器人项目模板,可以更轻松地开始创建任务(如审批流程或票证系统)的顺序工作流。
- 17.5 预览版 2 和预览版 3 中的预览功能和项目模板更改包括针对以前创建的任何 Microsoft Teams 应用项目的重大更改,并且这些更改不会包含在 17.5 正式版中。 我们将在 17.6 预览版中继续预览这些功能更改并收集反馈。
Windows 身份验证代理
- 通过启用 Windows 身份验证代理,获得增强的安全性和更少的提示。
反馈和建议
我们期待你的宝贵意见和建议! 可使用安装程序或 Visual Studio IDE 右上角的“发送反馈”图标,或者通过“帮助”>“发送反馈”来报告问题或提出功能建议 。 可在 Visual Studio 开发者社区跟踪你的问题,也可在这里添加评论和查找解决方案。 此外,还可通过实时聊天支持获得免费安装帮助。
Blogs
通过参考开发人员工具博客网站中的见解和建议,随时掌握所有新版本的最新最全资讯,并发表有关大量功能的深入分析帖子。
已知问题
- 政府标识不能用于向 Visual Studio 授予许可
- VS 17.5 预览版 2 错误编译 boost-build
- 编译 C++/CLI 目标项目时出现错误 C2049。
- 在“整个项目”或“整个解决方案”中执行“查找全部”不会搜索任何文件,也不会在“.Test”等文件夹中返回任何结果
.NET 运行时
通过以下链接查看 Visual Studio 2022 中所有待解决问题和可用暂避方法。