2022LogoVisual Studio 2022 版本 17.8 发行说明


提示

观看 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 产品。


Visual Studio 2022 版本 17.8 发行版

Visual Studio 2022 博客

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


17.8.10 Visual Studio 2022 版本 17.8.10

发布日期:2024 年 5 月 14 日

此版本中新增功能的摘要

  • “Xamarin”和“Xamarin Profiler”安装程序组件已标记为“停止支持”。
  • 修复了在 VS Debugger 中无法正确显示的数据结构:Concurrency::concurrent_unordered_set、Concurrency::concurrent_unordered_multiset、Concurrency::concurrent_unordered_map、Concurrency::concurrent_unordered_multimap。
  • 修复了 arm64 上的调用约定 bug,其中调用方和被调用方对于在哪里查找大于 16 字节的通过值传递的过度对齐参数没有达成一致。
  • 此版本还将 OpenSSL 更新到了 v3.2.1

开发人员社区

已解决的安全公告

  • CVE-2024-32002 支持符号链接的、不区分大小写的文件系统上的递归克隆很容易受到远程代码执行的影响。
  • CVE-2024-32004 克隆特制本地存储库时发生远程代码执行
  • CVE-2024-30045 .NET 7.0 和 .NET 8.0 中存在一个远程代码执行漏洞:.NET Double Parse 例程会发生堆栈缓冲区溢出。
  • CVE-2024-30046 Microsoft.AspNetCore.Server.Kestrel.Core.dll 中存在一个漏洞:可能发生死锁,导致出现拒绝服务错误。

17.8.9 Visual Studio 2022 版本 17.8.9

发布时间:2024 年 4 月 9 日

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

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

已解决的安全公告

  • CVE-2024-21409 WPF 中存在 use-after-free 漏洞,在查看不受信任的文档时可能会导致特权提升。
  • 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.8.8 Visual Studio 2022 版本 17.8.8

发布时间:2024 年 3 月 12 日

此次发布的 Visual Studio 2022 版本 17.8.8 的新增内容摘要

  • 修复了有关 Window 旧版分配器的 Address Sanitizer 误报以及启动时的争用条件(具体取决于加载 Address Sanitizer dll 的时间)。
  • 进行了修复,以防止在 std::round() 函数的内联扩展中将标量内存加载更改为矢量访问。 尽管矢量访问不会改变计算结果,但它更长,在标量加载成功时可能会出错。
  • 修复了静态链接时使用的 libconcrt.lib 可能包含旧版 X64 系统上非法的 SSE 4.2 指令的 bug。

开发人员社区

已解决的安全公告

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

17.8.7 Visual Studio 2022 版本 17.8.7

发布日期:2024 年 2 月 13 日

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

  • Visual Studio 能够在 SYSTEM 帐户下运行窗体。
  • 将 .NET 7 MAUI 更新到 8.0.6 SR1。

开发人员社区

已解决的安全公告

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

17.8.6 Visual Studio 2022 版本 17.8.6

发布时间:2024 年 1 月 30 日

此次发布的 Visual Studio 2022 版本 17.8.6 中新增内容摘要

开发人员社区


17.8.5 Visual Studio 2022 版本 17.8.5

发布时间:2024 年 1 月 17 日

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

  • 添加了 Xcode 15.1 支持和 API 修补程序,如需完整的发行说明,请访问我们的 macios 发行页面
  • 修复了某些客户在更改 Razor 项目的目标框架后无法看到随后添加的组件的问题。
  • 修复了启动“调试 > 附加到进程”对话框时的崩溃。
  • 修复了在设置设计器中更改访问修饰符时崩溃的问题。

开发人员社区


17.8.4 Visual Studio 2022 版本 17.8.4

发布时间:2024 年 1 月 9 日

此发行版 Visual Studio 2022 版本 17.8.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.8.3 Visual Studio 2022 版本 17.8.3

发布日期:2023 年 12 月 5 日

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

  • 修复了使用 razor 文件作为链接文件或共享项目中的项目的问题。

开发人员社区

已知问题

  • 安装了 Delinea 特权管理软件的用户可能会在启动 Visual Studio 时遇到问题。 Delinea 已了解此问题并已解决此问题。 请通过 https://delinea.com/support 联系他们,获取有关如何解决此问题的说明。

17.8.2 Visual Studio 2022 版本 17.8.2

发布日期:2023 年 11 月 28 日

此次发布的 Visual Studio 2022 版本 17.8.2 的新增内容摘要

  • 修复了以下问题:在某些情况下,文档窗口停滞不前,一直显示“正在加载”消息。
  • 在某些情况下(当项目位于解决方案文件夹下时),当你保存项目时可能会看到错误。 该项目会保存,但你会看到有关无法强制转换 COM 对象的错误。 此问题现已得到修复,因此不再显示该错误。

开发人员社区


17.8.1 Visual Studio 2022 版本 17.8.1

发布时间:2023 年 11 月 21 日

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

  • IncrediBuild 的更新版本修复了以下问题:使用标准生成菜单命令生成 CMake 项目时,默认情况下会错误地将生成重定向为使用 IncrediBuild。

开发人员社区


17.8.0 Visual Studio 2022 版本 17.8.0

发布时间:2023 年 11 月 14 日

Visual Studio 2022 版本 17.8 这一发行版的新增功能摘要

提高生产力的功能

功能 社区建议
GitHub Copilot
按大小写查找和替换 🙏- 76 票
Create a Pull Request 🙏- 293 票
摘要差异 🙏–7 票
多存储库限制提高 🙏- 8 票
已将 GitHub 虚拟形象添加到 Git 存储库窗口
远程 Linux 单元测试支持
将全局函数设为静态
对 #include 指令排序
代码搜索和导航
Teams 工具包
Visual Studio 更新通知

C++ 和游戏开发

功能 社区建议
Unreal Engine 代码片段
Unreal Engine 测试适配器
Build Insights 函数视图 🙏–141 票
将成员函数设为 const 的提示
大小和对齐提示

F# 改进

功能 社区建议
F#

调试和诊断

功能 社区建议
跨平台 Enc/热重载调试支持
通过附加到进程调试 Linux 应用服务
BenchmarkDotNet IDiagnosers
断点设置窗口的增强主题支持
通过计量 API 提供对新检测的 .NET 计数器支持
使用 VS Profiler 进行测试分析
调试方案中的 .NET 计数器工具

Razor 工具

功能 社区建议
用于生成事件处理程序方法的代码操作
C# 代码的背景色

JavaScript 和 TypeScript 开发

功能 社区建议
新的 React TypeScript 和 ASP.NET 组合模板
打开文件夹的 launch.json 支持

SQL

功能 社区建议
在 SQL Server Data Tools 中将 Microsoft.Data.SQLClient (MDS) 从版本 3.0 升级到了版本 5.0

测试:

功能 社区建议
预览版中现在推出了新的 IntelliTest

性能增强功能

功能 社区建议
提高了 Razor/Blazor 响应速度
增强了 F5 速度
针对 C++ Unreal Engine 进行优化的 IntelliSense
非 SDK 样式 .NET 项目的生成加速

企业管理

功能 社区建议
面向 IT 管理员的简化客户端初始化步骤

其他开发者社区建议:你们发问了,我们聆听了!


提高生产力的功能

GitHub Copilot

你可以在 Visual Studio 的最新版本中更轻松地通过 Visual Studio 提高工作效率。 GitHub Copilot 自动完成现已作为可选组件提供,因此可以更轻松地随新的 Visual Studio 安装一起安装,或者让管理员通过更新进行打包。 激活功能需要订阅;有免费试用版可用

此处的组件详细信息:Visual Studio Enterprise 工作负载和组件 ID | Microsoft Learn。

保留大小写 - 查找和替换

执行替换时,现在可以在代码中保留每个匹配项的原始大小写。 请注意,若要获取 Pascal 大小写和 Camel 大小写,替换字符串必须位于 Pascal 大小写或 Camel 大小写中。

保留大小写 - 查找和替换

在“替换”窗口中使用 Alt+V 切换大小写保留,或者单击“保留大小写”选项

快速替换 (Ctrl+H):

保留大小写 - 快速替换

在文件中替换 (Ctrl+Shift+H):

保留大小写 - 在文件中替换

在此“开发者社区”工单上分享你对保留大小写替换体验的想法:保留大小写 - 跨多个文件搜索和替换

在 Visual Studio 中创建拉取请求

可以在 Visual Studio 中创建拉取请求,而不是使用浏览器。 通过单击“预览”按钮,将 Markdown 编辑器与拉取请求说明一起使用来呈现标题、项目符号列表和其他 Markdown 语法。 通过“预览功能”>“拉取请求”启用此功能。

使用 Markdown 并添加评审者拉取请求

我们已在预览版中迭代,以提供更好的错误处理和改进的审阅者体验。 请在此处告知我们你对拉取请求体验的看法。

将审阅者添加到拉取请求

现在可以将审阅者添加到 Visual Studio 中针对 Azure DevOps 和 GitHub 的拉取请求。

向拉取请求添加评审者

通过单击推送时显示的“创建拉取请求”链接,或从顶级菜单中选择“Git”>“GitHub”或“Azure DevOps”>“新建拉取请求”来尝试此操作。 然后,导航到“审阅者”部分并搜索要添加的审阅者。 我们计划继续更新以改进此拉取请求体验,因此请在此处分享有关此功能的反馈,并就开发者社区中的建议票证与我们互动。

我们还添加了更好的错误处理并改进了审阅者搜索。 请在此处告知我们你对拉取请求体验的看法。

“摘要”差异

随着我们持续努力改进 Visual Studio 中的差异比较体验,我们在差异和比较视图中实现了“摘要”视图。 使用此新选项,可以仅根据几行上下文来查看文件中的更改,从而使提交的更改审阅或者两个文件之间的比较变得更高效。

摘要差异

通过在此提供反馈让我们了解你对此功能的看法,同时通过在开发人员社区中提交建议票证与我们联系。

多存储库激活设置和限制增加

在某些工作流中,控制是否自动激活多存储库非常重要。 借助新的设置,你可以将注意力集中在单个存储库上,而无需查看多存储库 UI。 此外,我们还将一次性可以使用的存储库数量增加到 25 个。

多存储库设置

已将 GitHub 虚拟形象添加到 Git 存储库窗口

可以在 Git 存储库窗口的多分支图形中查看你的 GitHub 虚拟形象。

GitHub 头像

GitHub Actions 工具

我们解决了解决方案资源管理器中未托管在 GitHub.com 上的存储库中新 GitHub Actions 节点出现的意外行为。 新节点现在应该仅出现在 GitHub.com 上托管的存储库中。 接下来,我们将开发通过“工具”>“选项”关闭新节点的功能。

代码搜索和导航

由于我们一直致力于提高一体式搜索体验的性能和可靠性,我们还添加了一个状态栏用于显示返回的每种结果的计数。

一站式搜索

Microsoft Teams 工具包

在最新的 Visual Studio 2022 版本 17.8 中,我们引入了更多项目模板,以适应更多业务方案,并简化入门。 新模板包括:

- 可以复述用户输入的“复述机器人”模板。 -“链接展开”模板,它是一种消息扩展应用,可以将 URL 链接呈现到自适应卡片。 -“自定义搜索结果”模板,它是消息扩展应用的一种搜索类型,可以让用户直接在聊天区域或搜索栏中搜索并显示结果。 -“从输入收集和处理数据”模板,它是消息扩展应用的一种操作类型,用于获取用户输入,执行某种逻辑,然后将结果发送回用户。

我们还优化了 UI,让你更轻松地在模板之间进行选择。我们为不同类型的模板添加了筛选器和标记。

Teams 工具包模板 UI

Visual Studio 更新通知

发现了新东西? 对于 Visual Studio 2022,我们在 VS 任务栏图标中添加了覆盖图标,帮助你了解 VS 何时更新。
当有可用的更新且“关闭时更新”选项已启用时,该图标就会出现。 关闭 VS 后将立即开始更新,因此图标也会消失。 有关“关闭时更新”的详细信息,请访问 VS 关闭时更新

更新

此外,我们解决了 Git SCC 提供程序在“打开文件夹”模式下绑定到非 Git 文件夹并阻止其他提供程序(例如 VisualSVN)正常工作的问题。


C++ 和游戏开发

  • 我们添加了一项支持服务,让用户可以在 Visual Studio 中的测试资源管理器和通过连接管理器连接到的任何远程 Linux 计算机之间运行其远程 Linux 单元测试

  • 添加了用于导航结构化诊断的“问题详细信息”窗口。 可使用“错误列表”中条目的“详细信息”图标打开它。

结构化诊断

  • 我们现在实现了对可选 C11 线程库的支持。 这包括线程、互斥体、条件变量和线程本地存储。
  • 在涉及 C++ 工作负载的桌面开发中,Visual Studio 现在会随附 CMake 版本 3.27。
  • 现在,可以通过右键单击解决方案资源管理器中的任意位置并选择“切换到 CMake 目标视图”来导航到“CMake 目标视图”。

切换到 CMake 目标视图按钮

  • 现在还可以通过从“视图”下拉菜单中选择“CMake 目标视图”来访问该视图。

CMake 目标视图下拉列表

  • CMake 目标视图已得到简化,用户无需单击不包含可生成的可执行文件的文件夹即可转到所需的目标。
  • 现在,可以通过“远程文件资源管理器”窗口在 Visual Studio 中查看和编辑远程计算机上的文件。

远程文件资源管理器

  • 现在可以轻松将全局函数设置为“静态”。
  • 如果你有一个不在匿名命名空间中的自由函数并且头文件中缺少前向声明,你将收到将该函数标记为“静态”的建议。

将全局函数设为静态的示例

  • 可以通过转到“工具”>“选项”>“文本编辑器”>“C/C++”>“IntelliSense”来调整此功能的设置。

“将全局函数设为静态”的设置

  • 为 Unreal Engine 添加了新代码片段。 开始在编辑器窗口中输入,UE 代码片段将开始显示为 Unreal Engine 项目中的成员列表项。 按 Tab 或 Enter 创建代码片段。 支持的片段包括(UClass、UClassExported、UENUM、UFUNCTION、UINTERFACE、UINTERFACEExported、UPROPERTY、USTRUCT、USTRUCTExported、UELOG、SWidget、TActorRange、TObjectRange、WITH _EDITOR)

Unreal Engine 代码片段

  • 现在,可以在 Visual Studio 中创建、管理和运行虚幻引擎测试。 为确保正确启用 Unreal Engine 测试适配器,请在 Visual Studio 安装程序中的“使用 C++ 进行游戏开发”工作负载下选择“Unreal Engine 测试适配器”。 安装 UE 测试适配器后,打开 Visual Studio 时,Unreal Engine 测试将自动显示在测试资源管理器中。 需要安装 UE 市场GitHub 中提供的最新版 Unreal Engine 插件。

Tafue 示例

  • 我们已将一个“函数视图”添加到 Visual Studio 中的 Build Insights 集成。 Build Insights 生成的诊断报告现在会显示函数生成时间以及 ForceInlines。

Build Insights 函数视图

  • 添加了自动建议,当成员函数 const 在逻辑上不应修改对象状态时,用于生成这些函数。 通过将鼠标悬停在成员函数上并单击灯泡图标,可以快速访问将函数标记为 const 的建议。

成员函数 const 提示灯泡建议

  • 现在可以将鼠标悬停在类、结构、联合、基类型或枚举上,以查看相应大小和对齐方式。

大小和对齐方式

  • 现在,你可以对 #include 指令进行排序。 可通过上下文菜单中的“#include 指令”下拉列表访问此功能。 还可以通过在代码清理配置设置中添加“排序 #include 指令(C++)”来访问它。

排序包括条目

  • 可以通过导航到“工具”>“选项”>“文本编辑器”>“C/C++ ”>“代码清理”来调整排序顺序,使其与首选项保持一致。

排序包括设置

  • /FU 不再支持 C 编译,因为 /clr 不支持 C。
  • 已添加/FU:asFriend,用于提供与源内#using <assembly> as_friend的奇偶一致性。

F#

  • 对代码修复做出了大幅修改,解决了大量 bug(此处提供了详细信息)。
  • 引入了新的代码修复,以便将记录字段定义中的等于 (=) 更改为冒号 (:):新的 F# 代码修复
  • 实现了一个选项来激活未打开文件的诊断。 出于性能考虑,此功能默认处于关闭状态(此处提供了详细信息)。
  • 增强了各种场景中的自动完成功能,包括:
    • 匿名记录字段:改进了匿名记录字段中的自动完成
    • 联合用例字段:改进了联合事例字段中的自动完成
    • 可区分联合用例字段:改进了区分联合事例字段中的自动完成
    • 枚举用例值表达式:改进了枚举事例值表达式中的自动完成
  • 解决了与 FSI 中匿名记录处理相关的问题 (#15519)。
  • 纠正了 FSI 中的误导性行号 (#15384)。
  • 自动属性的统一工具提示:自动属性的统一工具提示
  • 通过隐藏与可区分联合字段匹配的参数名称改进了参数名称提示:改进的形参名称提示
  • 解决了导航到外部枚举和可区分联合定义的问题 (#15270)。
  • 修复了查找以“>”开头的运算符的引用时出现的问题 (#15386)。

调试和诊断

调试方案中的 .NET 计数器工具

现在可以从“选择工具”下拉菜单中选择“.NET 计数器”选项,通过诊断窗口方便地访问 .NET 计数器。 即使正在运行调试会话,也可以利用 .NET 计数器的功能来监督和评估关键的性能指标。

.NET 计数器

跨平台 Enc/热重载调试支持

我们添加了使用 F5(带调试器)和 Ctrl-F5(无调试器)执行“编辑并继续”的方案的支持,以方便诊断和调试 Linux 容器或适用于 Linux 的 Windows 子系统 (WSL) 中托管的应用。 请注意,F5 调试方案依赖于 .NET 8 RC1 及更高版本。

通过附加到进程调试 Linux 应用服务

我们很高兴推出一项功能强大的新功能,该功能可通过“附加到进程”在 Linux 应用服务中调试 .NET 进程。
此功能使开发人员能够在其正在运行的 Linux Azure 应用服务实例中毫不费力地调试和诊断问题。

附加到进程:

1. 选择“调试”>“附加到进程”(或按 Ctrl+Alt+P)打开“附加到进程”对话框。

2. 检查“连接类型”。 它应该是“Microsoft Azure 应用服务”

3. 将“连接目标”设置为你的 Linux 计算机名。

4. 选择正确的可用进程,然后单击“附加”

LinuxAppServices-Attach-to-Process

BenchmarkDotNet IDiagnosers

Visual Studio Profiler 现在支持 BenchmarkDotNet IDiagnosers。 这些 IDiagnosers 在聚合 BenchmarkDotNet 方案中出现的诊断会话方面发挥了重要作用。
“基准”选项卡提供已执行的基准的可视化效果。 它还提供通过双击特定行从泳道中精确选择基准的能力。

IDiagnosers-swimlane

或者,可以选择通过右键单击上下文菜单导航到源文件。 统计数据直接源自 BenchmarkDotNet,并以结构化网格格式呈现。

IDiagnosers-gotosource

断点设置窗口的增强主题支持

我们为“断点设置”窗口提供了主题支持,确保了 Visual Studio 的浅色、深色和蓝色主题之间的无缝一致性。

breakpoint-settings

通过计量 API 提供对新检测的 .Net 计数器支持

.NET 计数器工具现在引入了 .NET 计量 API 的集成,其中整合了新的检测选项,包括“Counter”和“ObservableCounter”

“Counter”可跟踪值随时间的变化,调用方使用“Counter.Add”报告更新。与之相比,“ObservableCounter”类似于计数器,但调用方负责跟踪总值。 目前,.NET 计数器工具报告总计变化率。

可以在 .NET 计数器指标名单列表中找到这些指标,它们可以增强系统性能和资源利用率的可见性。此外,我们正在积极规划,以求将来引入更多检测选项来进一步增强此功能。

17.8.p2.DotNetCounter-MetersApi.mp4

使用诊断中心进行测试分析

我们很高兴地宣布推出已更新的测试分析功能。 在测试资源管理器中右键单击你的测试并选择“分析”时,现在你可以在一组可用工具之间进行选择,包括:

  • CPU 使用率
  • GPU 使用情况
  • 文件 IO
  • .NET Async
  • 事件查看器

选择要使用的工具并单击“开始”,即会提供报告。

测试分析


Razor 工具

用于生成事件处理程序方法的代码操作

如果你使用 @onclick 或 @onactivate 等事件来引用尚未定义的 C# 方法,可以使用新的 Razor 代码操作来自动生成该事件处理程序方法。 此代码操作还支持自定义事件参数。

用于生成事件处理程序方法的代码操作

C# 代码的背景色

现在,你可以选择为 Razor 文件中的 C# 代码添加背景色。 此选项默认处于关闭状态,可以通过转到“工具”>“选项”>“文本编辑器”>“Razor”>“高级”并将“C# 代码的背景色”设置为“True”来启用此选项。

C# 代码的背景色


JavaScript 和 TypeScript 开发

新的 React TypeScript 和 ASP.NET 组合模板

当我们最初在这篇博客文章中发布 JavaScript/TypeScript 和 ASP.NET 组合模板时,我们得到的反馈是用户应该获得更好的 React TypeScript 项目创建体验。 此新的 React TypeScript 和 ASP.NET 组合模板可以直接设置 tsconfig 和 SpaProxy。

React TypeScript 和 ASP.NET 组合模板

打开文件夹的 launch.json 支持

当你选择使用 .vscode 目录中的 launch.json 打开工作区上的文件夹来存储启动和调试设置时,Visual Studio 将识别该文件夹,并将其包含在绿色按钮旁边的“调试目标”下拉菜单中。

打开文件夹的 launch.json 支持


SQL

  • 在 SQL Server Data Tools (SSDT) 中 将 Microsoft.Data.SQLClient (MDS) 从版本 3.0 升级到了版本 5.0了解详细信息
  • 将两个新字段添加到了“连接”对话框 连接对话框
  • 连接时,Encrypt 属性现在默认为 true(已启用)。 如果服务器未配置受信任的证书,可使用设置为 true 的“信任服务器证书”。 有关详细信息,请参阅文档

预览版中现在推出了新的 IntelliTest

IntelliTest 将分析你的 .NET 代码,以生成具有高代码覆盖率的、由最新版 Z3 问题解决程序提供支持的测试套件。 当你生成测试时,可以选择要将哪些测试保留到可用作回归套件的测试项目中。 当代码更新时,你可以重新运行 IntelliTest,使生成的测试与代码保持同步。

此企业版功能的先前实现仅支持面向 .NET Framework 的代码,而不支持 x64 配置。 此更新版本包含以下功能:

通过“工具”>“管理预览功能”并选择“使用 Z3 v4 实现对 NetFx 和 Net6 的 IntelliTest 支持(需要重启)”来启用此功能。

启用 Intellitest

然后在代码中,右键单击某个方法并选择“IntelliTest (预览版)”,然后选择“创建项目”来创建可保存测试的项目,或者选择“生成测试”来生成一组测试以供审阅,并决定保留哪些测试。

在代码中激活 Intellitest


|

性能增强功能

提高了 Razor/Blazor 响应速度

使用 Razor 和 Blazor 的解决方案将体验到更快的响应速度。 这种改进是我们通过大幅减少在 Visual Studio 和 Roslyn 之间进行跨进程通信期间所需的内存分配来实现的。 我们测试了 OrchardCore 解决方案,结果令人印象深刻。 为了打开解决方案并准备好 Razor IntelliSense,我们分配了比以前大约少 1.4GB 的内存。 更少的堆分配意味着垃圾回收器的工作量更少,从而可以提高响应速度。

增强了 F5 速度

我们通过优化断点的设置方式,大幅增强了本机项目的 F5 性能。 任意给定项目所能体验到的改进程度取决于包含断点的文件数量、包含符号的 DLL 数量,等等。此外,我们还优化了 Windows 应用程序的 PDB 加载过程,减少了找到 PDB 后加载它所需的时间。 在我们的测试中,这些优化为 Unreal Editor 项目带来了 20% 的显著速度提升。

增强了 F5 速度

针对 C++ Unreal Engine 进行优化的 IntelliSense

我们改进了打开先前已打开的 C++ 文件后,IntelliSense 和着色功能可供使用的速度。 我们始终缓存已打开文件的 IntelliSense 状态。 在版本 17.8 中,我们重构了从缓存读取数据的功能,以便首先计算最关键的信息,包括着色和选定引用的突出显示。 这种优化可帮助你更快地提高工作效率。

IntellisenseCPlus

非 SDK 样式 .NET 项目的生成加速

Visual Studio 17.8 将生成加速扩展到了面向非 SDK 样式项目(例如,面向 .NET Framework 4.8 或更低版本的项目)的托管应用程序,从而对生成时间产生了重大影响。 若要启用此功能,请如下所示设置 msbuild 项目属性:

<Project> 
    <PropertyGroup>  
        <AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
    </PropertyGroup>  
</Project>   

这项改进建立在 17.5 中引入的 SDK 样式项目的成功基础之上,显著减少了增量生成时间。

在对内部解决方案进行的内部测试中,我们发现,增量生成时间改进了高达 50%。 但是,实际改进程度取决于生成开始时的项目状态。 具体而言,与解决方案中的项目总数相比,修改的项目越少,改进程度就越大。 你体验到的实际改进程度取决于项目的具体特征及其修改情况。

企业管理

管理员现在可以在委托标准用户控制以更新或修改其 Visual Studio 安装之前轻松初始化客户端计算机。 现在,你可以通过执行“vs_enterprise.exe install --installerOnly”以编程方式仅安装安装程序。

利用管理员更新解决方案在整个组织中提供每月安全更新的管理员现在可以提示用户关闭 Visual Studio,这是阻止应用管理员更新的常见情况。 若要启用提示,请配置新的“AdministratorUpdatesNotifications”全局策略,该策略在 Intune 设置目录和 ADMX 模板中都可用。 感谢建议使用此功能的管理员社区


反馈和建议

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


Blogs

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


返回页首