Visual Studio 徽标Visual Studio 2022(预览版)发行说明

版本 17.12 预览版 1

发布日期:2024 年 8 月 13 日

我们很高兴地宣布推出 Visual Studio 2022 v17.12。 这次更新的重点是针对使用 .NET 9 项目和新的 AI 生产力功能提供出色的开发人员体验,以及持续的全面改进。

生产力 来自社区
从错误列表复制预览版 1 反馈票证
转到代码搜索中的任意行预览版 1 反馈票证
停靠代码搜索窗口预览版 1 反馈票证
使用 Git 管理文件重命名 预览版 1 反馈票证
创建内部 GitHub 存储库预览版 1 反馈票证
调试和诊断 来自社区
Blazor WebAssembly 调试 预览版 1
IDE 来自社区
MotW 安全警告 预览版 1
桌面 来自社区
增强的 WinUI 组件搜索 预览版 1
Web 来自社区
HTTP 文件对请求变量的支持预览版 1 反馈票证
JavaScript 和 TypeScript 中的 Vitest 支持 预览版 1 反馈票证
对更多语言的嵌入提示支持 预览版 1 反馈票证
.NET 来自社区
使用 .NET 9 实现更多功能 预览版 1
NuGet 审核可传递包 预览版 1 反馈票证
热门 bug 修复 来自社区
具有 VSTest@2 的 Azure DevOps 管道中的错误 预览版 1 反馈票证
突出显示左大括号不会突出显示右大括号 预览版 1 反馈票证
查找和替换会不断将“选择”还原为当前文档 预览版 1 反馈票证
MSVC 错误地将引用 cv-/ref-qualified 函数类型视为 ... 预览版 1 反馈票证
断言在高核心 cpu 上的 ResourceManager.cpp 中触发 预览版 1 反馈票证
启用了 SPGO 的 x86 构建内联析构函数中的错误 预览版 1 反馈票证

注意

查看此版本中所有用户报告的功能请求错误修复的完整列表。

工作效率

从错误列表复制预览版 1

从错误列表中复制错误现在仅将说明而不是整个行复制到剪贴板。

你在“错误列表”中看到一个不知道如何修复的错误。 因此,选择它并点击 Ctrl+C 以复制 Web 搜索的说明。 将其粘贴到搜索引擎后,你会发现它复制了所有列标题和行值,而不仅仅是说明。 现在,必须先删除除错误说明以外的所有内容,然后才能执行 Web 搜索。 这很麻烦,但现在我们有了解决方案!

错误列表复制修复

使用 Ctrl+C 从错误列表中复制错误时,只有描述会复制到剪贴板。 这使得在线搜索错误或与他人分享更容易。

仍可以通过右键单击错误并选择上下文菜单中的复制行或点击 Ctrl+Shift+C 来复制整个行。

如果要对错误说明执行的操作是执行 Web 搜索,只需点击 Ctrl+F1 即可在线搜索有关错误的信息。

查看功能票证以分享你的反馈并继续对话。

转到代码搜索中的任意行 预览版 1

在代码搜索中,现在可以导航到当前文档或其他指定文档中的特定行。

有时,你知道代码中的某一行存在问题,你想快速处理。 也许你被告知在某个文件的第 43 行抛出了一个错误,或者你想要到达特定文件的底部。

代码搜索现在支持快速导航到代码中的特定行。

打开代码搜索,然后使用冒号 + 行号转到当前文档中的一行。 例如,:39 将导航到活动文件中的第 39 行。

转到当前文档中的行

还可以使用文件名 + 冒号 + 行号转到其他文档中的行。 例如,Order:43 将导航到 Order.cs 中的第 43 行。 如果未指定确切的文件名,搜索将尝试查找最佳匹配项。

转到不同文档中的行

查看功能票证以分享你的反馈并继续对话。

停靠代码搜索窗口 预览版 1

现在,你可以自由地定位代码搜索窗口,使其具有停靠和自动隐藏等功能。

如果你需要“代码”或“功能搜索”不妨碍你,那么你现在可以更好地控制搜索窗口的行为。

现在,可以停靠搜索窗口并使用它执行工具窗口操作,如解决方案资源管理器等。

搜索停靠在底部

打开代码搜索功能搜索后,单击右上角的框图标,将其转换为工具窗口。 可以选择将其停靠在其他位置、弹出、自动隐藏等。可以通过关闭工具窗口并重新打开搜索,来恢复到可关闭窗口。

窗口右上角,第二个图标是工具窗口图标

我们还简化并清理了搜索中的预览体验。 现在有一个按钮,用眼睛图标表示,可以打开和关闭预览。

窗口右上角,第一个图标是预览面板图标

预览面板的位置也将根据搜索窗口的尺寸进行调整。

搜索停靠在右侧

查看功能票证以分享你的反馈并继续对话。

使用 Git 管理文件重命名 预览版 1

使用新通知重命名文件时,你可以安心。

从解决方案资源管理器重命名文件时,系统会提醒你暂存更改,以便在 Git 中查看重命名。 这增强了你的信心,即 Git 能够识别你的文件更改并正确跟踪它。 我们发现这对许多客户来说是一个困惑点,因此我们与开发人员社区的人员合作,制作了一个新的通知。

Git mv 通知

查看功能票证以分享你的反馈并继续对话。

创建内部 GitHub 存储库 预览版 1

Visual Studio 现在支持创建内部存储库,并为每种类型的存储库提供了指导,让你在启动新项目时更有信心。

Visual Studio 现在支持 GitHub 组织的内部存储库。 我们还为每种类型的存储库提供了指导,以便根据你使用的帐户更清楚地了解新项目的可见性。

“新建存储库”对话框

查看功能票证以分享你的反馈并继续对话。

调试和诊断

Blazor WebAssembly 调试预览版 1

面向 .NET 9 或更高版本的 Blazor WebAssembly 应用的改进调试体验的预览版。

Visual Studio 现在提供了面向 .NET 9 或更高版本的 Blazor WebAssembly 应用的改进调试体验的预览版:

  • 调试程序中显示的数据类型现在与预期的 .NET 数据类型匹配。
  • 类型成员和成员可见性使用预期的图标。
  • 显示的调用堆栈将被清理,只显示 .NET 调用堆栈,并正确遵循“仅我的代码”设置。
  • 现在支持模块窗口。
  • “即时”窗口中的表达式计算支持以及对监视和条件断点的支持得到扩展和改进。

Blazor 调试改进

若要启用新的预览调试体验,请执行以下操作:

  • 启用启用新的 .NET 9+ Mono 调试器设置。
  • 安装最新的 .NET 9 SDK。
  • 将 Blazor 应用更新为面向 .NET 9。

已知限制:

  • 调试时热重载的功能尚未完全正常运行。 这个问题将在以后的更新后解决。

IDE

MotW 安全警告 预览版 1

Web 标记 (MotW) 安全警告现在已集成到整体信任功能中。

当 Visual Studio 检测到你试图打开标记有 Web 标记 (MotW) 标识符的内容时,将显示安全警告。

这种与信任相关的新警告传达了从 Internet 下载等潜在不安全来源打开内容的风险。

信任对话框,提醒在 Visual Studio 中打开 Web 下载的安全风险

可以通过转到工具 > 选项 > 环境下的信任设置来修改默认信任体验。

信任设置允许自定义默认信任体验

桌面

增强的 WinUI 组件搜索 预览版 1

通过改进的Visual Studio 安装程序搜索增强 WinUI 项目设置,简化开发人员的组件位置。

使用最新的 Visual Studio 安装程序更新,进一步简化 WinUI 项目设置! 开发人员现在可以快速找到与 WinUI 相关的组件,从而消除了之前在空搜索结果中导航的挫折感。 此增强功能简化了开发环境配置,提供了更直观、更高效的用户体验。

显示在 Visual Studio 安装程序中对 WinUI 单个组件的新搜索的图像

打开 Visual Studio 安装程序,转到各个组件选项卡,并搜索 WinUI 相关关键字(WinUI、WinRT)!

Web

HTTP 文件对请求变量的支持 预览版 1

HTTP 文件现在支持请求变量。 在这里,您可以发送请求,然后在将来的请求中使用来自响应或请求的数据。

处理 HTTP 文件时,一种常见的情况是调用终结点并从响应中获取值,然后发送后续请求。 例如,可以调用终结点对用户进行身份验证,然后在以后的调用中传递从登录终结点返回的令牌。 在此版本之前,无法在 Visual Studio 中执行此操作。 在下面的代码片段中,可以看到一个示例,说明如何在 HTTP 文件中工作。

# @name login
POST {{TodoApi_HostAddress}}/users/token
Content-Type: application/json

{
  "username": "{{myusername}}",
  "password": "{{mypassword}}"
}

###

GET {{TodoApi_HostAddress}}/todos
Authorization: Bearer {{login.response.body.$.token}}

###

在上面的代码片段中,有两个请求,即第一个调用 /users/token 终结点以对用户进行身份验证。 在请求行的正上方,您将看到注释 # @name login。 该语法为请求提供了一个名称(在本例中为 login),并将其配置为请求变量。 发送请求时,可以在从该 HTTP 文件发送的任何将来请求中访问响应或请求的值。 由于这是一个登录请求,因此应小心保护机密。 在 Visual Studio 中,我们支持以安全的方式访问机密。 有关处理机密的详细信息,请参阅文档的此部分

第二个请求调用经过身份验证的终结点 /todos,该终结点将返回该用户的 todo 项。 在请求中,令牌作为带有行的标头传入。

Authorization: Bearer {{login.response.body.$.token}}

/users/token 终结点以 JSON 形式返回响应。 在响应正文中,使用 JSON Path 表达式 $.token 提取令牌。 如果使用的是返回 XML 的终结点,则可以传入 XPath 表达式,而不是 JSON Path 表达式。 Visual Studio 中的支持受到了 Visual Studio Code 可用的 REST 客户端的现有 OSS 扩展的启发。 您可以在此处了解有关请求变量的更多信息。 我们将很快添加文档,以更详细地讨论此支持。

查看功能票证以分享你的反馈并继续对话。

JavaScript 和 TypeScript 中的 Vitest 支持 预览版 1

使用 JavaScript 和 TypeScript 项目时,现在可以使用 Vitest 创作测试用例。

在扩展名为 .esproj 的 JavaScript 和 TypeScript 项目 (JSTS) 中,我们添加了对发现和运行用 Vitest 编写的测试的支持。 若要开始使用 Vitest 测试,请在 JSTS 项目中,使用解决方案资源管理器中的 npm 添加 vitest 包,然后修改项目文件以声明以下属性。

    <JavaScriptTestRoot>test\</JavaScriptTestRoot>
    <JavaScriptTestFramework>Vitest</JavaScriptTestFramework>

确保 JavaScriptTestRoot 的值与测试文件所在的位置具有正确的相对路径。

将测试添加到正确的文件夹,并生成项目/解决方案。 之后,应会在测试资源管理器中看到测试用例。

使用 vitest 测试的测试资源管理器

在测试资源管理器中,可以看到发现并执行测试用例的不同测试用例。

我们尚未添加对调试的支持,但我们将很快添加该支持。 另一个已知问题是,在测试资源管理器中双击测试用例时,它会将你带到定义了测试用例的文件的第一行。 我们也将改善这种体验。

查看功能票证以分享你的反馈并继续对话。

对更多语言的嵌入提示支持 预览版 1

JavaScript、TypeScript、Python 和 Razor 都添加了嵌入提示支持,以及用于控制其行为的设置。

嵌入提示显示有关内联呈现的源代码的其他信息。 这通常用于在编辑器中直接显示从代码中推断出的类型、参数名称和其他隐式信息。

我们添加了对 JavaScript、TypeScript、Razor 和 Python 中显示嵌入提示的支持。 我们还添加了一个新设置,以便你可以自定义这些语言中的提示行为。 此设置尚不适用于 C# 和 C++。 要为这些语言启用嵌入提示,您可以使用工具 > 选项 > 文本编辑器 > 所有语言 > 嵌入提示中的新设置。 可以在下图中看到新选项。

嵌入提示全局设置

嵌入提示有三个不同的值。

  • 始终 始终显示嵌入提示。
  • 按 Alt+F1 时 仅在按下 Alt 和 F1 时显示嵌入提示。 这是默认值。
  • 从不 从不显示嵌入提示。

对于 JavaScript 和 TypeScript,有一个额外的选项页面来配置嵌入提示的行为。 这可以在工具 > 选项 > 文本编辑器 > JavaScript/TypeScript > 高级 > 常规中找到。

这些选项如下图所示。

嵌入提示全局 TypeScript 设置

默认情况下,所有这些选项都被禁用,你应该为 JavaScript 和 TypeScript 文件启用感兴趣的提示。 在未来的更新中,我们可能会更改这些选项的默认值。 在下图中,可以看到一个显示嵌入提示的 JavaScript 文件。

嵌入提示

在上一张图片中,显示的嵌入提示是带有 : number 的灰色框,用于指示变量的类型。

查看功能票证以分享你的反馈并继续对话。

.NET

使用 .NET 9 实现更多功能 预览版 1

.NET 9 提升了云原生和智能应用开发,专注于提高生产力、简化部署和加速 AI 集成。

.NET 9 提升了云原生和智能应用开发,专注于提高生产力、简化部署和加速 AI 集成,确保开发人员在各种应用程序中获得卓越的性能。 Visual Studio 17.12 完全支持 .NET 9 开发,让你能够充分利用它提供的所有改进。

.NET 9

此外,你会发现围绕 IDE 的功能的更新,使 .NET 和 ASP.NET 比以往更令人愉快。

NuGet 审核可传递包 预览版 1

NuGet 正在更改默认审核设置,以包含可传递包。

NuGet 审核最初是在 Visual Studio 17.8(和 .NET 8)中添加的,如果项目使用的任何包存在已知漏洞,它将在还原过程中提供警告。

有关 NuGet 审核(包括所有配置选项)的详细信息,请参阅有关 NuGet 审核的文档

NuGet 审核

在此版本中,NuGetAuditMode 的 NuGet 审核默认值已更改。 以前,默认情况下只报告直接包引用 (<NuGetAuditMode>direct</NuGetAuditMode>)。 现在,默认情况下,它将对具有已知漏洞的直接包和可传递包 (<NuGetAuditMode>all</NuGetAuditMode>) 发出警告。 若要保留以前的默认值,可以在项目或 Directory.Build.props 文件中显式设置 NuGetAuditMode 的首选值。

或者,可以将 SdkAnalysisLevel 设置为低于 9.0.100 的版本号,但请注意,这将影响使用 SdkAnalysisLevel 的所有功能。

NuGet 审核需要提供漏洞数据库的包源。 NuGet.org 提供 GitHub 公告数据库中的漏洞。

从 Visual Studio 17.12 开始,现在可以在 NuGet.Config 文件中指定审核源,因此不再需要将 nuget.org 用作包源。

如果不将 nuget.org 用作包源,并且希望在还原期间使用 NuGet 审核来报告易受攻击的包,请将以下内容添加到解决方案目录中的 NuGet.Config 文件中:

<confiuration>
  <!-- any existing config, including <packageSources> -->
  <auditSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </auditSources>
</configuration>

查看功能票证以分享你的反馈并继续对话。



提示

如果希望在 Visual Studio 的未来更新中看到某些功能,请通过提交功能票证告知我们。

注意

我们的路线图显示了 Visual Studio 未来的优先事项和方向,因此请务必查看。

注意

此更新可能包括单独许可的新 Microsoft 或第三方软件,如第三方通知或其随附许可证中所述。

团队全体成员感谢你选择 Visual Studio。 如果你有任何疑问,请通过 Twitter开发者社区联系我们。

祝你编码愉快!
Visual Studio 团队