Visual Studio 2022(预览版)发行说明
我们很高兴地宣布推出 Visual Studio 2022 v17.12。 这次更新的重点是针对使用 .NET 9 项目和新的 AI 生产力功能提供出色的开发人员体验,以及持续的全面改进。
功能
最新预览版中的所有新功能。
工作效率
从错误列表复制
从错误列表中复制错误现在仅将说明而不是整个行复制到剪贴板。
你在“错误列表”中看到一个不知道如何修复的错误。 因此,选择它并点击 Ctrl+C 以复制 Web 搜索的说明。 将其粘贴到搜索引擎后,你会发现它复制了所有列标题和行值,而不仅仅是说明。 现在,必须先删除除错误说明以外的所有内容,然后才能执行 Web 搜索。 这很麻烦,但现在我们有了解决方案!
使用 Ctrl+C 从错误列表中复制错误时,只有描述会复制到剪贴板。 这使得在线搜索错误或与他人分享更容易。
仍可以通过右键单击错误并选择上下文菜单中的“复制行”或点击 Ctrl+Shift+C 来复制整个行。
如果要对错误说明执行的操作是执行 Web 搜索,只需点击 Ctrl+F1 即可在线搜索有关错误的信息。
查看功能票证以分享你的反馈并继续对话。
转到代码搜索中的任意行
在代码搜索中,现在可以导航到当前文档或其他指定文档中的特定行。
有时,你知道代码中的某一行存在问题,你想快速处理。 也许你被告知在某个文件的第 43 行抛出了一个错误,或者你想要到达特定文件的底部。
代码搜索现在支持快速导航到代码中的特定行。
打开代码搜索,然后使用冒号 + 行号转到当前文档中的一行。 例如,
:39
将导航到活动文件中的第 39 行。还可以使用文件名 + 冒号 + 行号转到其他文档中的行。 例如,
Order:43
将导航到 Order.cs 中的第 43 行。 如果未指定确切的文件名,搜索将尝试查找最佳匹配项。查看功能票证以分享你的反馈并继续对话。
停靠代码搜索窗口
现在,你可以自由地定位代码搜索窗口,使其具有停靠和自动隐藏等功能。
如果你需要“代码”或“功能搜索”不妨碍你,那么你现在可以更好地控制搜索窗口的行为。
现在,可以停靠搜索窗口并使用它执行工具窗口操作,如解决方案资源管理器等。
打开代码搜索或功能搜索后,单击右上角的框图标,将其转换为工具窗口。 可以选择将其停靠在其他位置、弹出、自动隐藏等。可以通过关闭工具窗口并重新打开搜索,来恢复到可关闭窗口。
我们还简化并清理了搜索中的预览体验。 现在有一个按钮,用眼睛图标表示,可以打开和关闭预览。
预览面板的位置也将根据搜索窗口的尺寸进行调整。
查看功能票证以分享你的反馈并继续对话。
自定义折叠文本指示器
在 Visual Studio 编辑器中设置折叠文本指示器的自定义颜色。
现在,可以通过自定义折叠文本指示器的新选项进一步自定义编辑器体验:
若要试用并为每种颜色设置自定义前景颜色和背景颜色,请导航到工具 > 选项 > 环境 > 字体和颜色。
在这里,你将找到两个可自定义的新项目:
- 折叠文本指示器(已折叠)
- 折叠文本指示器(已展开)
可以使用预定义的颜色或所选的自定义颜色,单独设置折叠和展开的指示器的颜色。
查看功能票证以分享你的反馈并继续对话。
刷新查找结果
现在,可以将结果刷新到以前的“查找”,以获取最新的搜索匹配项。
我们从很多用户那里听到,不得不重新打开“查找”窗口并重新执行搜索以获取更新结果,这很令人沮丧。 也许你只是重构了一些代码,想确认所有内容都已按预期更改,或者你拉取了一些最近的更改,需要你最近的查找操作来反映这些更新。
完成在文件中查找后,现在可以选择在窗口中刷新查找结果。 你将获得更新的结果,而无需重新搜索。
我们还重新设计了以前的“重复查找”选项,以将其与“刷新”区分开来。 现在,它被表示为带有铅笔图标的“修改查找”。 此按钮仍将重新打开“在文件中查找”,并使用与该结果窗口相同的搜索条件。
查看功能票证以分享你的反馈并继续对话。
水平滚动条有更多空间
现在,你可以在 CodeLens 中控制文件级指示器的可见性。
在 Visual Studio 中,带有水平滚动条的区域可能会变得非常杂乱。 我们正在通过默认关闭 CodeLens 中的文件级指示器来帮助更容易地清理它。
如果确实希望启用该选项,可以在工具 > 选项 > 文本编辑器 > 高级下找到显示文件级 CodeLens 指示器选项。 此选项会影响在底部编辑器边距(如 XAML、HTML 和 CSS)中具有文件级 CodeLens 控件的文件类型的可见性,但不会影响包含内联 CodeLens 的文件。
查看功能票证以分享你的反馈并继续对话。
保存时的非阻塞代码清理
在“保存”时运行代码清理时,它现在以非阻塞方式运行,以获得更流畅的编码体验。
以前,在“保存”时运行代码清理时,无法在 IDE 中执行任何操作。 现在,我们增强了此功能,以非阻塞方式运行。
清理过程将在后台运行,如果继续键入,可以自动取消,从而确保更流畅、响应更快的编码体验。
GitHub Copilot
AI 智能变量检测
通过集成 AI 变量检测优化调试工作流程。
在 Visual Studio 中使用 Ask GitHub Copilot,检查和分析本地、自动和数据提示中的值从未如此简单。 只需右键单击任何值,即可获得有关错误、意外结果或异常的详细 AI 驱动见解,而无需离开 IDE。
每当出现意外值时,此功能都将在 IDE 中实时分析变量,从而显著提高故障排除速度。
重要
若要使用此功能,请确保激活 GitHub Copilot
AI 支持的 IEnumerable 可视化工具
IEnumerable 可视化工具中的 AI 驱动的 LINQ 可编辑表达式。
我们在 AI 帮助下增强了 IEnumerable 可视化工具中的可编辑表达式功能。 新的 Ask Copilot 功能允许用户直接在可编辑的表达式文本框中利用 AI 来创建复杂的 LINQ 表达式。
若要访问 GitHub Copilot 聊天,只需单击位于可编辑表达式部分右下角的 GitHub Copilot 图标。 在聊天中,你将找到示例 LINQ 语法示例。 此外,还可以使用自然语言描述查询,GitHub Copilot 将生成相应的 LINQ 查询。 若要将 LINQ 查询筛选应用于可视化工具,请在聊天中使用在可视化工具中显示按钮。
它提供即时反馈和指导,使创建复杂筛选器和转换的过程更加直观高效。
重要
若要使用此功能,请确保激活 GitHub Copilot
使用 GitHub Copilot 调试测试
通过 GitHub Copilot 使用调试测试获取有关调试失败测试的帮助。
需要帮助调试失败的单元测试。 现在,GitHub Copilot 可以通过为你提供调试计划并指导你调试失败的测试来提供帮助,通过单击测试资源管理器中的使用 Copilot 调试按钮,使你更接近通过测试。
启动该功能后,GitHub Copilot 将为你提供调试计划,设置适当的断点并监视变量,然后启动调试会话。 当它到达断点时,它会向 GitHub Copilot 提供所监视变量的值,并确定你的下一步,继续调试或修复问题代码。 你可以继续此对话,直到你通过测试为止。
重要
若要使用此功能,请确保激活 GitHub Copilot
使用 GitHub Copilot 修复代码
GitHub Copilot 有助于解决代码问题。
GitHub Copilot 现已集成到灯泡和错误列表中,为你提供了代码问题的快速修复和见解说明。 无论是用 C# 还是 C++ 开发,此功能都可以帮助你更高效地了解和解决代码库中的问题。
若要开始,只需调用灯泡并选择“使用 Copilot 修复”。 这将启动与 GitHub Copilot 的内联聊天,从而提供可用的修复。
还可以从错误列表中选择 GitHub Copilot 图标以打开聊天面板,可在其中找到有关当前错误的详细说明和解决方案。
利用 LLM,GitHub Copilot 可以直接在灯泡和错误列表中提供有用的解释和修复,从而增强编码体验。
查看功能票证以分享你的反馈并继续对话。
重要
若要使用此功能,请确保激活 GitHub Copilot
更好的 C# AI 补全
GitHub Copilot 可从相关源文件中引入额外的上下文,以改进 C# 的完成。
GitHub Copilot 代码完成在编码时内联提供自动完成建议。 这些建议基于当前活动文件的内容以及编辑器中任何其他打开的文件生成。 但是,我们发现,合并更相关的上下文可显著提高这些建议。
为了增强 C# 开发人员的体验,我们更新了 GitHub Copilot 以包含其他 C# 上下文,例如完成时可用的类型和方法。
使用最新版本的 Visual Studio,GitHub Copilot 现在会自动考虑其他上下文的语义相关文件,即使这些文件未在编辑器中打开也是如此。 这种改进有助于减少幻觉,同时提供更相关的准确建议。
之前:语义相关的文件不被视为 GitHub Copilot 完成的上下文
之后:语义相关的文件被视为 GitHub Copilot 完成的上下文
重要
若要使用此功能,请确保激活 GitHub Copilot
GitHub Copilot 中的代码引用
在 GitHub Copilot 中引入代码引用,让你能够允许包含公共代码匹配的代码建议,同时接收有关匹配的详细信息。
我们很高兴地宣布,Visual Studio 中的 GitHub Copilot 现已提供代码引用!
这项新功能可在 GitHub Copilot 建议与公开代码匹配时通知开发人员,从而为开发人员提供透明度。 现在,你可以看到匹配的代码、源文件和任何相关的许可信息,帮助他们在编码时做出更明智的决定。
通过代码引用,你可以阻止或允许包含公共代码匹配的建议,从而加强控制和自定义。
通过在 GitHub Copilot 中集成代码引用,我们促进了知识共享,提高了透明度,并让你能够放心地进行创建。 无论你是个人开发者还是大型团队的一员,这项功能都能增强工作流,帮助你轻松驾驭复杂的公共代码。
立即试用 Visual Studio 中的 GitHub Copilot,以更高的透明度和信心控制自己的开发流程!
重要
若要使用此功能,请确保激活 GitHub Copilot
GitHub Copilot 中的引导式聊天
引入一种更具对话氛围的新 GitHub Copilot 聊天方式。
我们引入了一种更具对话氛围的新 GitHub Copilot Chat 互动方式!
我们引入了一种更具互动性和对话氛围的 GitHub Copilot 聊天使用方式。 现在,GitHub Copilot 会在不清楚上下文的情况下引导你加以阐明,从而确保带来更准确、更有帮助的回答,而不是让你感到困惑或不确定。
这种引导式聊天体验有助于完善你的询问,提供建议,并确保更顺畅、更富有成效的互动。 通过这种新的聊天形式,你将体验到更智能、更直观的 GitHub Copilot,在你编码时满足各种需求。
立即尝试新的引导式聊天体验,看看它有何不同!
重要
若要使用此功能,请确保激活 GitHub Copilot
GitHub Copilot 中的新手提示
通过 GitHub Copilot 聊天中的新手提示快速入门!
利用我们新推出的新手提示,快速开始你的 GitHub Copilot 聊天体验!
开始使用 GitHub Copilot 聊天时需要帮助吗? 我们引入了一些新手提示,用以启发和引导你完成首次互动。 这些预先挑选的问题旨在激发你的想法,帮助你探索 GitHub Copilot 功能的全部潜力。
无论是在探索新的编码任务,还是在寻找灵感,我们的提示都能帮助你深入学习并开始充分利用 GitHub Copilot Chat。
试一试,看看它能带给你什么!
重要
若要使用此功能,请确保激活 GitHub Copilot
调试和诊断
Blazor WebAssembly 调试
面向 .NET 9 或更高版本的 Blazor WebAssembly 应用的改进调试体验。
Visual Studio 现在提供了面向 .NET 9 或更高版本的 Blazor WebAssembly 应用的改进调试体验:
- 调试程序中显示的数据类型现在与预期的 .NET 数据类型匹配。
- 类型成员和成员可见性使用预期的图标。
- 显示的调用堆栈将被清理,只显示 .NET 调用堆栈,并正确遵循“仅我的代码”设置。
- 现在支持模块窗口。
- “即时”窗口中的表达式计算支持以及对监视和条件断点的支持得到扩展和改进。
若要启用新的预览调试体验,请执行以下操作:
- 启用启用新的 .NET 9+ Mono 调试器设置。
- 安装最新的 .NET 9 SDK。
- 将 Blazor 应用更新为面向 .NET 9。
查看功能票证以分享你的反馈并继续对话。
探查器中的计量直方图
使用探查器计数器工具中的计量直方图来增强性能见解。
Visual Studio 性能分析套件的最新增强功能引入了计量直方图功能。 此工具允许识别和分析直方图工具生成的直方图数据。 记录来自这些仪器的数据时,将可视化直方图结果,从而提供了数据分布的清晰表示。
此外,泳道图提供了一个详细的、分段的性能指标视图,增强了你有效查明和解决性能问题的能力。
显示方法返回值
现在,调试器会在 AI 的辅助下显示内联返回值,以提高效率。
Visual Studio 调试器现在显示返回语句的内联值,以响应开发人员社区请求最多的功能之一。
通过此增强功能,可以直接在代码中查看函数返回的确切值,而无需其他代码或临时变量来检查返回值。
借助 GitHub Copilot,你可以在悬停状态下使用 询问 Copilot 选项直接在 Visual Studio 中进一步分析返回值,以便立即解决问题。
本机代码和托管代码都支持它。
查看功能票证以分享你的反馈并继续对话。
轻松导出断点组
轻松导入和导出断点组。
Visual Studio 断点组现在支持使用导入和导出功能,让你可以在多个项目或环境中轻松管理和维护断点结构。
通过这项新功能,你可以导出断点组及其配置,然后将其导入不同的解决方案,从而确保调试设置的一致性,而无需再次手动重新创建断点组。
查看功能票证以分享你的反馈并继续对话。
适用于 IEnumerable 可视化工具的 IntelliSense
增强的 IEnumerable 可视化工具带有 IntelliSense,可加快 LINQ 查询速度。
通过 IntelliSense,IEnumerable Visualizer 得到了增强,可提供实时代码建议和自动完成功能,从而使 LINQ 表达式的编写更快、更准确。
这一改进通过提供智能代码建议简化了生成和编辑查询的过程,从而降低了出错的可能性,并加快了开发时间。
查看功能票证以分享你的反馈并继续对话。
分析一段时间内的内存使用情况
使用“诊断工具”窗口选择并比较多个内存快照。
“诊断工具”窗口现在支持比较内存快照,以便更轻松地分析一段时间内的内存更改。
若要使用此功能,请确保在“诊断工具”窗口中的“内存”选项卡下捕获多个内存快照。
选择用于比较的快照
- 按住 Ctrl 键并单击快照行,以便选择多个快照。
- 或者按住 Shift 键并使用
up/down
箭头键,以便选择多个连续快照。取消选择快照
- 按住 Ctrl 键并单击要取消选择的快照。
查看差异
选择内存快照进行比较后,单击快照列表上方的“查看差异”按钮,以查看它们之间的差异。
Git 工具
使用 Git 管理文件重命名
使用新通知重命名文件时,你可以安心。
从解决方案资源管理器重命名文件时,系统会提醒你暂存更改,以便在 Git 中查看重命名。 这增强了你的信心,即 Git 能够识别你的文件更改并正确跟踪它。 我们发现这对许多客户来说是一个困惑点,因此我们与开发人员社区的人员合作,制作了一个新的通知。
查看功能票证以分享你的反馈并继续对话。
拉取请求草稿和模板
创建拉取请求草稿并使用 Visual Studio 中的模板开始进行描述。
现在可以创建拉取请求草稿并使用 Visual Studio 中的 GitHub 模板开始描述。 这是创建拉取请求体验的两个首要请求。
起草 PR
使用“创建”按钮上的下拉菜单来“创建为草稿”。
PR 模板
为 GitHub 和 Azure DevOps 创建新 PR 时,将使用默认 PR 模板。 在 GitHub 文档和 Azure DevOps 文档中详细了解如何将 PR 模板添加到存储库。
注意
必须在“工具 -> 管理预览功能”下启用此功能
创建内部 GitHub 存储库
Visual Studio 现在支持创建内部存储库,并为每种类型的存储库提供了指导,让你在启动新项目时更有信心。
Visual Studio 现在支持 GitHub 组织的内部存储库。 我们还为每种类型的存储库提供了指导,以便根据你使用的帐户更清楚地了解新项目的可见性。
查看功能票证以分享你的反馈并继续对话。
复制 Git 链接
你可以获得指向特定代码行的 GitHub 或 Azure DevOps 链接,以便与同事轻松共享。
每当你与同事共享几行代码时,他们从你的存储库中获取额外的上下文通常会很有用。 但是,如果他们正在处理其他内容,可能需要太长的时间,并干扰他们的工作。
现在,你可以在编辑器中突出显示要共享的代码,右键单击打开上下文菜单,然后在 Git 子菜单下获得指向 GitHub 或 Azure DevOps 中代码的可共享链接。 这使得协作变得简单易行,并使 IDE 和网络上的远程存储库之间的流动更加顺畅。
还可以直接从提交历史记录中获取可共享链接。 这样可以毫不费力地引用当前未签出的代码。
查看功能票证以分享你的反馈并继续对话。
Git 多存储库支持
现在,你可以在 GitHub 和 Azure DevOps 的多存储库方案中创建拉取请求和链接工作项。
现在可以在多存储库方案中创建拉取请求和链接工作项。 对于 GitHub 和 Azure DevOps,使用存储库选取器专注于多存储库方案中的特定存储库时,我们支持集成。
查看功能票证以分享你的反馈并继续对话。
自定义 AI Git 提交消息
可以在 GitHub Copilot 生成 Git 提交信息的提示中添加其他说明。
现在,你可以在 GitHub Copilot 生成 Git 提交信息的提示中添加其他说明。 这样就可以自定义提交信息,使其更符合工作流程和团队的标准。 可以指定要生成的行数、行的长度,甚至提供提交样式示例。 编辑“工具”>“选项”>“Copilot”>“源代码管理”>“提交消息其他说明”提示字段中消息。
查看功能票证以分享你的反馈并继续对话。
IDE
多项目启动配置
通过在多项目解决方案中设置和保存特定项目的启动配置文件来简化调试。 毫不费力地与团队共享配置。
多项目启动配置功能允许你设置和保存配置文件,以便在预定义状态下启动多项目解决方案中的特定项目以进行调试。
这简化了使用复杂解决方案的过程,提高了调试效率,并可以轻松地在团队成员之间共享配置。
查看功能票证以分享你的反馈并继续对话。
注意
必须在“工具 -> 管理预览功能”下启用此功能
MotW 安全警告
Web 标记 (MotW) 安全警告现在已集成到整体信任功能中。
当 Visual Studio 检测到你试图打开标记有 Web 标记 (MotW) 标识符的内容时,将显示安全警告。
这种与信任相关的新警告传达了从 Internet 下载等潜在不安全来源打开内容的风险。
可以通过转到工具 > 选项 > 环境下的信任设置来修改默认信任体验。
跨主题更改保留字体
更改主题现在将记住字体和字体大小首选项。
我们理解,开发人员在编码时选择的字体是个人选择,受可读性、辅助功能或美学偏好的影响。 Visual Studio 主题主要侧重于演示颜色,与你的首选字体无关。
通过此更新,我们引入了在切换主题时保留字体和大小选项的功能。 现在,你可以在 Visual Studio 中设置一次字体首选项,并切换主题,而无需每次重新配置字体设置。 请注意,字体的颜色仍然与主题相关联,因为这是主题的目的,但你的字体选择将被保留。
默认情况下,将为所有用户启用此功能。 如果你更喜欢以前的行为,请转到工具 > 管理预览功能,找到将字体设置与颜色主题选择分开选项。 如果选中此选项,则无论主题如何更改,你的字体首选项都将保持不变。 取消选中该框,以恢复将字体选择与主题绑定的上一行为。
查看功能票证以分享你的反馈并继续对话。
Teams 工具包新的 AI 模板
Teams 工具包可载入新的 AI Teams 应用程序模板。
Teams 工具包添加了三个新的 Teams AI 应用模板:
它们是:
基本 AI 聊天机器人 - 在使用 Teams AI 库构建的 Microsoft Teams 中自己的 copilot
与你的数据聊天 - 一个智能聊天机器人模板,其中包含来自自定义数据源的域知识。
Teams 工具包现在使你能够创建自定义 Copilot,这是一个 AI 支持的聊天机器人,具有 RAG 功能,可以理解自然语言并检索域数据来回答特定于域的问题。 此模板支持访问自定义 Copilot 应用中的自定义数据。
选择此模板时,可以选择两种方法来连接数据:
a. Azure AI 搜索:聊天机器人可以访问 Azure AI 搜索服务上的数据,并将其用于与用户聊天。
b. 自定义数据源:可以向自定义 Copilot 应用添加所需的任何数据源,例如文件系统或向量 DB。
AI 代理 - Teams 中的 AI 代理,可以根据 LLM 推理做出决策和执行操作。
请尝试新的 AI 应用模板,在 Teams 中启动 AI 之旅!
在实例之间复制文件
现在可以将 Visual Studio 一个实例中的解决方案资源管理器里的文件和文件夹复制到另一个实例中。
我们很高兴能在 Visual Studio 中引入一项备受欢迎的功能! 现在可以使用解决方案资源管理器在不同的 Visual Studio 实例之间无缝复制和粘贴代码文件和文件夹。 只需选择所需的文件或文件夹,使用 Ctrl+C 或 Ctrl+X 切换到另一个 Visual Studio 实例,然后使用 Ctrl+V 将这些文件或文件夹包含到新解决方案中。 所有更改都将准确反映在文件系统中。
除了复制和粘贴,还可以将文件和文件夹从 Visual Studio 的一个实例拖放到另一个实例中。
以前,这一功能只适用于少数项目类型,但现在我们已将其扩展到 Visual Studio 中的所有主要项目类型。
查看功能票证以分享你的反馈并继续对话。
证书吊销检查
Visual Studio 现在会在网络调用过程中检测到数字证书问题时发出警报。
Visual Studio 现在验证数字证书的有效性,并在网络调用的数字证书出现问题时通知你。
每当检测到错误时,对话框都会暂时停止连接,提供有关特定证书问题的详细信息,并询问你是否要取消或继续连接。
虽然我们建议始终启用此功能,但也可以通过“工具”>“选项”>“环境”>“证书”来将其禁用。
云
Azure 应用程序服务发布安全更新
使用集成安全更新安全地发布到 Azure 应用程序服务。
Azure 应用程序服务的发布指南建议客户禁用基本身份验证并通过集成身份验证启用发布。
Visual Studio 2022 中的新功能禁用了基本身份验证,并启用了发布到 Azure 应用程序服务的集成安全性。 这可确保安全地处理凭据发布,从而降低与基本身份验证相关的风险。
当发布到已启用基本身份验证的 Azure 应用程序服务时(不建议这样做),用户将看到“开启基本身份验证”选项,默认情况下该选项未被选中。 需要保留“基本身份验证”的客户可以选中该复选框,但鉴于建议是禁用“基本身份验证”,因此默认情况下不会选中该复选框。 因此,如果这是第一次发布,则会开始安全保护;或者,一旦在更新 Visual Studio 后完成发布过程,则会获得安全保护。
如果最近通过门户或 Visual Studio 的此版本或任何未来版本创建了 Web 应用,那么基本身份验证将默认被禁用。 对于任何已禁用基本身份验证的 Web 应用,我们会通过完全禁用复选框来避免无意中降低网络应用程序的安全性,从而保证安全。
Azure WebJobs Linux 支持
现在,Visual Studio 中的右键单击发布功能支持在 Linux 上发布到 Azure WebJobs。
Azure WebJobs Linux 支持跨平台 .NET 5.0+ 控制台应用,现在,也可以右键单击将代码从 Visual Studio 发布到 Linux 上的 Azure WebJobs。
查看功能票证以分享你的反馈并继续对话。
Azure Functions Flex Consumption
发布到 Azure Flex Consumption 托管计划,目前为预览版。
如果尝试新的 Azure Functions Flex Consumption 托管计划(目前为预览版),则可以右键单击“从 Visual Studio 发布到 Flex”。
Flex Consumption 将进一步扩展应用的功能,并提供以下内容:
- 虚拟网络集成,无需额外费用
- 通过实例大小选择和每个实例的并发控制进行快速且可预测的缩放
- 无服务器,缩放为零,只需在实例处于活动状态时为其付费
- 使用可选始终就绪实例功能的冷启动缓解
在公告博客文章或文档中详细了解 Flex Consumption,并试用我们的其中一个示例。
连接服务安全更新
让应用程序和开发体验更加安全。
在此项连接的服务的更新中,现在可以将项目代码连接到 Azure 资源(如 Azure 存储),而无需在代码或配置中使用机密或连接字符串。
现在,你将为连接命名,终结点将永久保存到配置中,而不是保存到完整的连接字符串中。 这意味着磁盘上的机密会更少,因此默认情况下,开发将更安全,并且会减少在将机密提交到源代码管理时的错误。
我们还使用最新的 Azure SDK,因此你在使用 Visual Studio(或 Azure CLI)登录名连接到 Azure 资源时会获得支持,但通过连接字符串进行连接时则无法获得支持。 在本地运行时,代码将使用登录凭据访问资源。 在 Azure 中运行时,Azure SDK 将使用应用程序服务的托管标识来访问资源。
连接的服务会为你完成所有设置,并注入适当的代码以使用集成标识而不是机密。 发布期间,应用将配置访问资源所需的相应标识和角色。
桌面
增强的 WinUI 组件搜索
通过改进的 Visual Studio 安装程序搜索增强 WinUI 项目设置,简化开发人员的组件位置。
使用最新的 Visual Studio 安装程序更新,进一步简化 WinUI 项目设置! 开发人员现在可以快速找到与 WinUI 相关的组件,从而消除了之前在空搜索结果中导航的挫折感。 此增强功能简化了开发环境配置,提供了更直观、更高效的用户体验。
打开 Visual Studio 安装程序,转到“单个组件”选项卡,并搜索 WinUI 相关的关键字(WinUI、WinRT)!
针对 UWP 的 .NET 9 SDK 支持
Visual Studio 现在包含了 UWP 开箱即用支持的 .NET 9 SDK。
在初始预览版中试用 .NET 9 上的 UWP 的必要步骤之一是安装 .NET 9 SDK 的每日生成版本。 新版 Visual Studio 发布后,就不再需要这一步了。
Visual Studio 现在包含 .NET 9 SDK,其中包含 .NET 9 对 UWP 的所有新支持(特别是引用 UWP XAML 投影的逻辑,以及将 CsWinRT 配置为 UWP XAML 应用的项目类型)。 现在,可以使用随 Visual Studio 自动安装的 .NET SDK 在 .NET 9 项目上生成和运行 UWP。
查看功能票证以分享你的反馈并继续对话。
适用于 UWP 的简化 .csproj
对于 .NET 9 上的现代 UWP 项目,Visual Studio 现在会自动设置 UseUwpTools。
使用 .NET 9 的 UWP 应用程序和库在其 .csproj 文件中需要两个属性:
UseUwp
用于为 UWP XAML 应用配置 .NET SDK,UseUwpTools
用于启用 Visual Studio 中的所有新工具来生成和运行 UWP XAML 应用。现在,当设置
UseUwp
时,Visual Studio 会自动设置UseUwpTools
属性,以便在常见方案中让 .csproj 变得更简洁。 对于高级方案,仍然可以通过手动禁用UseUwpTools
来选择退出。查看功能票证以分享你的反馈并继续对话。
修复了 .NET 9 中 UWP 的 RID
.NET 9 类库上的 UWP 可以正确地将 RID 设置为本地 AOT 的正确值。
我们修复了 .NET 9 上 UWP 类库(和 WinRT 组件)的 APPX 工具中的一个错误,该错误默认在 .NET Native 上应用了 UWP 的运行时标识符(即使用
win10-
前缀,并包括不再支持的平台,如 arm)。现在,APPX 工具将默认为 .NET 9 项目设置正确的 RID:
win-x86;win-x64;win-arm64
如果需要,还可以手动指定。查看功能票证以分享你的反馈并继续对话。
修复了 UWP 项目创建
我们修复了通用模板向导在创建 .NET 9 项目上的新 UWP 时不再显示错误对话框的问题。
如果正在使用预览版 VSIX 和 .NET 9 上的 UWP 新项目模板,则可能会注意到在创建新项目时会出现一个错误对话框。 这在创建新解决方案时尤其麻烦,因为 Visual Studio 在创建项目后无法正确打开解决方案。 这一问题现已解决,在 .NET 9 上创建以 UWP 为目标的新项目现在可以正常运行。
查看功能票证以分享你的反馈并继续对话。
Web
HTTP 文件中的请求变量
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 支持
使用 JavaScript 和 TypeScript 项目时,现在可以使用 Vitest 创作测试用例。
在扩展名为 .esproj 的 JavaScript 和 TypeScript 项目 (JSTS) 中,我们添加了对发现和运行用 Vitest 编写的测试的支持。 若要开始使用 Vitest 测试,请在 JSTS 项目中,使用解决方案资源管理器中的 npm 添加 vitest 包,然后修改项目文件以声明以下属性。
<JavaScriptTestRoot>test\</JavaScriptTestRoot> <JavaScriptTestFramework>Vitest</JavaScriptTestFramework>
确保
JavaScriptTestRoot
的值与测试文件所在的位置具有正确的相对路径。将测试添加到正确的文件夹,并生成项目/解决方案。 之后,应会在测试资源管理器中看到测试用例。
在测试资源管理器中,可以看到发现并执行测试用例的不同测试用例。
我们尚未添加对调试的支持,但我们将很快添加该支持。 另一个已知问题是,在测试资源管理器中双击测试用例时,它会将你带到定义了测试用例的文件的第一行。 我们也将改善这种体验。
查看功能票证以分享你的反馈并继续对话。
对更多语言的嵌入提示
JavaScript、TypeScript、Python 和 Razor 都添加了嵌入提示支持,以及用于控制其行为的设置。
嵌入提示显示有关内联呈现的源代码的其他信息。 这通常用于在编辑器中直接显示从代码中推断出的类型、参数名称和其他隐式信息。
我们添加了对 JavaScript、TypeScript、Razor 和 Python 中显示嵌入提示的支持。 我们还添加了一个新设置,以便你可以自定义这些语言中的提示行为。 此设置尚不适用于 C# 和 C++。 要为这些语言启用嵌入提示,您可以使用工具 > 选项 > 文本编辑器 > 所有语言 > 嵌入提示中的新设置。 可以在下图中看到新选项。
嵌入提示有三个不同的值。
- 始终:始终显示嵌入提示。
- 在按 Alt+F1 时:仅在按 Alt 和 F1 时显示嵌入提示。 这是默认值。
- 从不:从不显示嵌入提示。
对于 JavaScript 和 TypeScript,有一个额外的选项页面来配置嵌入提示的行为。 这可以在工具 > 选项 > 文本编辑器 > JavaScript/TypeScript > 高级 > 常规中找到。
这些选项如下图所示。
默认情况下,所有这些选项都被禁用,你应该为 JavaScript 和 TypeScript 文件启用感兴趣的提示。 在未来的更新中,我们可能会更改这些选项的默认值。 在下图中,可以看到一个显示嵌入提示的 JavaScript 文件。
在上一张图片中,显示的嵌入提示是带有
: number
的灰色框,用于指示变量的类型。查看功能票证以分享你的反馈并继续对话。
HTTP 文件共享环境
在 HTTP 环境文件中,我们添加了跨环境共享变量的支持。
在 Visual Studio 中使用 HTTP 文件时,可以定义 环境,以便为 API 测试创建不同的设置。 以前,无法跨这些环境共享变量。 我们在环境文件中添加了对新条目
$shared
的支持,使你可以定义在所有环境中可用的变量的默认值。例如,请考虑以下环境文件 (http-client.env.json)。
{ "$shared": { "HostAddress": "https://localhost:7293" }, "dev": { "username": "sayedha" }, "dev2": { "username": "madsk" }, "staging": { "username": "staginuser", "HostAddress": "https://sayedrest.example.com" } }
我们在上面的
$shared
中定义了共享值,它由设置为localhost:7293
的HostAddress
变量组成。在定义的三个环境中,开发环境都没有指定
HostAddress
的值,但暂存具有值。使用
dev
或dev2
环境时,HostAddress
的值将来自$shared
,因为这些环境没有HostAddress
的值。 使用过渡环境时,HostAddress
的值将设置为https://sayedrest.example.com
。查看功能票证以分享你的反馈并继续对话。
Data
SSDT 中 SDK 样式的 SQL 项目
现在,可以在 SQL Server Data Tools 项目中使用 SDK 样式的项目文件格式。
此更新基于 Microsoft.Build.Sql SDK 添加 SQL 项目,该 SDK 为 SQL Server Data Tools (SSDT) 项目带来了跨平台支持和改进的包引用。 通过减少冗长的项目文件和对 NuGet 包的数据库引用,团队可以在单个项目中更有效地在大型数据库上进行协作,或者从多个项目中编译多组对象。
Microsoft.Build.Sql 项目中的数据库部署可以在 windows 和 Linux 环境中自动执行,其中 Microsoft.SqlPackage dotnet 工具从 SQL 项目发布生成项目 (.dacpac)。 深入了解 SDK 样式 SQL 项目和适用于 SQL 的 DevOps 的预览版。
Microsoft.Build.Sql 项目 SDK 是开源的,并在 GitHub 上开发。
请确保在 Visual Studio 安装程序中安装最新的 SSDT 预览组件,以在解决方案中使用 SDK 样式的 SQL 项目。
查看功能票证以分享你的反馈并继续对话。
.NET
使用 .NET 9 实现更多功能
.NET 9 提升了云原生和智能应用开发,专注于提高生产力、简化部署和加速 AI 集成。
.NET 9 提升了云原生和智能应用开发,专注于提高生产力、简化部署和加速 AI 集成,确保开发人员在各种应用程序中获得卓越的性能。 在 Visual Studio 17.12 中完全支持 .NET 9 后,可以轻松利用所有最新改进。 有关新增功能的详细信息,请访问 .NET 9 中的新增功能。
此外,你会发现围绕 IDE 的功能的更新,使 .NET 和 ASP.NET 比以往更高效。
查看功能票证以分享你的反馈并继续对话。
NuGet 审核可传递包
NuGet 正在更改默认审核设置,以包含可传递包。
NuGet 审核最初是在 Visual Studio 17.8(和 .NET 8)中添加的,如果项目使用的任何包存在已知漏洞,它将在还原过程中提供警告。
有关 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>
查看功能票证以分享你的反馈并继续对话。
C++
设置 C++ 命令行参数
一种从工具栏设置命令行参数的新方法。
使用新的“设置参数”工具栏项快速设置 C++ 项目的命令行参数。 此组合框允许你直接从工具栏设置命令行参数,以便你可以快速更改参数。 运行项目时,将传递在框中输入的任何参数。
如果使用安装了使用 C++ 进行游戏开发工作负载,则默认情况下会显示此工具栏组件。 如果没有看到该组件,可以通过右键单击工具栏并选择“设置参数”来添加它。
注意:此功能目前仅适用于 Unreal Engine 项目。 将来的版本将支持常规 C++ 项目。
Build Insight 视图说明
了解如何通过新添加的文档链接使用 Build Insights 的每个选项卡。
现在,可以查看有关如何使用 Build Insights 的每个选项卡的简短说明,以及详细说明文档的链接。
Build Insights 路径调整
在 Build Insights 中更清晰地查看你的文件,悬停时查看完整路径。
我们隐藏了完整路径和相对路径,以减少混乱。 若要查看完整路径,只需将鼠标悬停在文件上即可。 你还将看到一个新的“文件名”列,用于文件和翻译单元,默认情况下显示该列,以帮助你快速识别文件,而无需解析冗长的路径。
打开 Unreal Engine 项目的文件夹
一种打开 uproject 的新方法。
我们添加了一个额外的入口点,用于通过 Visual Studio 的 uproject 支持打开 Unreal Engine uproject。 现在,可以通过选择打开 > 文件夹... 直接从文件菜单打开 uproject。这将在 Visual Studio 中打开 Unreal Engine 项目。
有关如何使用此功能的详细信息,请参阅在 Visual Studio 中直接编辑 .uproject。
改进了更改签名
现在,你可以使用我们改进的 C++ 功能有效地更改签名。
我们对 C++ 的更改签名功能进行了增强。 用户界面已更新,允许通过在顶部框中添加、删除和重新排列参数来管理参数。 还可以通过拖放界面更改其顺序。
访问方法保持不变:按 Ctrl+. 触发“快速操作和重构”菜单,然后选择“更改签名”。
用户报告的热门错误修复
- C# 编辑器找不到在 xaml 文件中定义的控件
- 状态栏中缺少 GIT 命令(同步、拉取、推送)和分支列表
- VSSDK/CPS/可扩展性:VS2022 中通过 .imagemanifest 在 VS 扩展中加载的图像已损坏
- Backspace 等有时停止工作
- 资源资源管理器无法打开 resx 文件
- 重置所有设置始终会导致错误
- VS2022 17.10.0 预览版 7:内部编译器错误
- JavaScript 文件在 10000 行代码后失去颜色编码
- 在模块中使用 std::format 需要在使用该模块的 .cpp 文件中包含格式标头
- 升级到 Visual Studio 17.11.0 后出现 C++ 语法错误
- VS 更新后无法上下移动代码块
- 在远程 Linux 主机上执行 ctest 查询生成 CMake 缓存失败
- 具有 VSTest@2 的 Azure DevOps 管道中的错误
- 严重错误 C1001:内部编译器错误
- 在 ARM64 的 LTCG 期间生成电报时遇到 ICE
- MSVC 14.40.33807 使用 std::coroutine 生成不正确的程序集并截断指针
- 通过 PInvoke 在本机和托管运行时之间造成的 Arm64EC 问题
- [Arm64] MSVC 错误地将 sub 和 abs 融合到 sabd
- “换行”选项在 VS 2022 社区版(版本 17.12.0 预览版 1.0)中不起作用
- Github Copilot #kb 不起作用
- CPS:IProjectItem.EvaluatedIncludeAsFullPath 开始返回不正确的路径
- 更新到 17.11.x 后,T4 转换将引发“需要对程序集 ‘System.Runtime, Version=6.0.0.0" 的引用”
- C++:'data' 不是 std::basic_string_view 的成员
- MSVC 工具集 v19.38 及更高版本中 /O2 处的代码生成不正确
团队全体成员感谢你选择 Visual Studio。 如果你有任何疑问,请通过 Twitter 或开发者社区联系我们。
祝你编码愉快!
Visual Studio 团队
注意
此更新可能包括单独许可的新 Microsoft 或第三方软件,如第三方通知或其随附许可证中所述。