注释
不再支持此版本的 Visual Studio 2022。 支持的最新版本为 17.14。 更新安装 或升级到 最新版本的 Visual Studio ,以保持受支持。 有关 Visual Studio 支持的基线的详细信息,请查看 Visual Studio 2022 的支持策略。 Visual Studio 管理员指南包含有关如何在整个组织中部署 Visual Studio 的指南。
有关详细信息,请参阅 17.14 发行说明 或 发布历史记录页。
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 的连接字符串
- 在 ntdll.dll 中,
iisexpress 崩溃 - (旧的)“新建对象”对话框中缺少“显示紧凑视图”按钮
- 从版本 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>) 的初始实验性支持。 可在/experimental:c11atomics模式或更高版本中使用/std:c11标志来启用此实验性功能。 - 向生存期检查器添加了一组新的实验性高置信度检查,以减少干扰。
- 启用了一个新的预览功能“远程文件资源管理器”,可在 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 右上角的“发送反馈”图标,或者通过
Feedback Icon帮助 发送反馈来>。 可在 Visual Studio 开发者社区跟踪你的问题,也可在这里添加评论和查找解决方案。 此外,还可通过实时聊天支持获得免费安装帮助。
Blogs
通过参考开发人员工具博客网站中的见解和建议,随时掌握所有新版本的最新最全资讯,并发表有关大量功能的深入分析帖子。
已知问题
- 政府标识不能用于向 Visual Studio 授予许可
- VS 17.5 预览版 2 错误编译 boost-build
- 编译 C++/CLI 目标项目时出现错误 C2049。
- 在“整个项目”或“整个解决方案”中执行“查找全部”不会搜索任何文件,也不会在“.Test”等文件夹中返回任何结果
.NET 运行时
通过以下链接查看 Visual Studio 2022 中所有待解决问题和可用暂避方法。
Visual Studio 2022 版本 17.5 发行说明