本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

2024年9月(版本1.94)

更新 1.94.1:此更新解决了这个安全问题

更新 1.94.2:此更新解决了这些问题

下载: Windows: x64 Arm64 | Mac: 通用 英特尔 | Linux: deb rpm tarball Arm snap


欢迎来到2024年9月Visual Studio Code的发布版本。这个版本有很多更新,我们希望你会喜欢,其中一些主要亮点包括:

如果您想在线阅读这些发行说明,请访问 更新 页面 code.visualstudio.com内部用户: 想尽快尝试新功能吗?您可以下载 内部用户 每夜构建版本,并在最新更新可用时立即尝试。

GitHub Copilot

切换聊天中的语言模型

之前,我们宣布您可以注册提前访问OpenAI的o1模型。获得访问权限后,您将在VS Code的Copilot Chat中看到一个Copilot Chat模型选择器控制,用于选择聊天对话中使用的模型版本。

在聊天视图中,Copilot模型选择器控制可以切换到另一种语言模型。

GPT-4o 在内联聊天中

我们已经将 Copilot 代码辅助聊天升级到 GPT-4o,这样当您在编辑器中使用聊天功能时,可以为您提供更快、更准确、更高质量的代码和解释。

在聊天中公开代码匹配

您可以允许 GitHub Copilot 返回可能与 GitHub.com 上的公开代码匹配的代码。当此功能在您的 组织订阅个人订阅 中启用时, Copilot 代码补全已经为您提供有关检测到的匹配的详细信息。我们现在也在 Copilot Chat 中向您显示这些公开代码的匹配。

如果此功能已启用,请在响应的末尾看到一条消息,带有 查看匹配 链接。如果选择该链接,将打开一个编辑器,显示匹配代码引用的更多详细信息。

聊天代码引用示例。

获取更多关于GitHub Copilot中的代码引用的信息,请访问GitHub博客。

在聊天中提出文件建议

在聊天输入框中,您现在可以输入#<文件名>获取文件名建议并快速将其附加到您的提示中作为上下文。这适用于支持文件附件的聊天位置,例如聊天视图、快速聊天、内联聊天和笔记本聊天。

我们已经改进了在 Copilot 回复中提到的任何工作区文件路径的渲染。当你询问时,这些路径非常常见。@工作区问题。

你首先会注意到的是,工作区文件的路径现在包括一个文件图标。这使你能够在聊天响应中轻松区分它们。文件图标基于你当前的文件图标主题

响应中工作区文件的路径现在使用文件图标显示。

这些路径是交互链接,所以只需选择它们以打开相应的文件。您甚至可以使用拖放功能在新的编辑器组中打开文件,或者在拖放时按住Shift将其插入文本编辑器。

默认情况下,这些链接只显示文件名,但你可以将鼠标悬停在它们上面以查看完整的文件路径。

将鼠标悬停在工作区路径上以查看完整的路径。

你也可以右键单击这些路径之一以打开上下文菜单,其中包含附加命令,例如将相对路径复制到资源,或在操作系统文件资源管理器中显示文件。

在聊天中,工作区路径的上下文菜单提供了打开文件或复制其路径的选项。

我们计划在未来的迭代中进一步改进工作区路径渲染,并对响应中的符号名称进行类似的改进。

将文件拖放到聊天上下文中

现在,您可以通过将文件或编辑器标签直接从工作台拖动到聊天中,轻松附加额外文件作为聊天提示的上下文。对于Inline Cat,按住Shift并拖动文件以将其添加为上下文,而不是在编辑器中打开它。

历史中包含的文件附件

有多种方法可以将文件或编辑器选择附加到您的聊天请求的相关上下文中。以前,此上下文仅添加到当前请求中,并且不包括在后续请求的历史记录中。现在,这些附件会保留在历史记录中,因此您可以继续引用它们,而无需重新附加。

聊天对话显示,Copilot 能够在多个提示中跟踪附加文件。

在 Python 本地 REPL 中进行内联聊天和完成

Python 扩展使用的本地 REPL 编辑器现在支持 Copilot 代码补全和内联聊天直接在输入框中进行。

接受并在笔记本中运行生成的代码

当您在笔记本中使用 Copilot 代码审查生成代码时,您现在可以接受并直接从代码审查中运行生成的代码。

在笔记本聊天中附加变量

当你在笔记本中使用 Copilot 时,你现在可以将 Jupyter 内核中的变量附加到你的请求中。添加变量可以让你对聊天请求的上下文有更精确的控制,从而获得更相关的回复。

任何类型#,接着是变量名,或者使用 📎 控制键 (⌘/ (Windows, Linux Ctrl+/)) 在内联聊天中添加上下文变量。

焕新的聊天用户体验

我们更新了聊天视图,提供了一个全新的欢迎体验,并更新了聊天输入区域的布局。现在你可以使用@按钮,轻松找到可用的聊天参与者和斜线命令,包括内置的和您已安装的扩展中的聊天参与者。您仍然可以通过输入来查找参与者和斜线命令输入:/@在聊天输入框中。

更新了聊天视图的欢迎体验。

语义搜索结果(预览)

设置

github.copilot.chat.search.semanticTextResults
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

搜索视图使您能够对文件进行精确搜索。我们现在已将功能添加到搜索视图中,该功能使用 Copilot 来提供语义上相关的搜索结果。

此功能仍在预览中,且默认情况下未启用。请尝试一下并告诉我们您的想法!

修复测试失败(预览)

设置

github.copilot.chat.fixTestFailure.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

我们添加了专门的逻辑,以帮助您诊断失败的单元测试。此逻辑在某些情况下由触发。/修复斜线命令,并且你也可以直接使用/修复测试失败斜线命令。该命令默认在聊天中启用,但可以通过设置禁用。

github.copilot.chat.fixTestFailure.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

自动测试设置(实验性)

设置

github.copilot.chat.experimental.setupTests.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

我们增加了一个实验性的/设置测试 一个可以帮助您配置工作区测试设置的斜线命令。此命令可以推荐一个测试框架,提供设置和配置它的步骤,并建议一个VS Code扩展以提供 VS Code中的测试集成。这可以节省您开始代码测试的时间和精力。

当你使用/测试命令来为你的代码生成测试,它可以推荐/设置测试并测试扩展,如果在你的工作区中尚未设置此集成。

从聊天开始调试(实验性)

设置

github.copilot.chat.experimental.startDebugging.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

在这个里程碑中,我们对实验进行了改进/开始调试 斜线命令。此命令使您能够轻松找到或创建启动配置并启动 调试 您的应用程序。当您使用 @vscode在Copilot聊天中,/开始调试现在默认可用。

用户在面板聊天中输入 /startDebugging flask app port 3000 并获得启动配置。

指挥中心聊天(实验性)

设置

chat.commandCenter.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

我们正在尝试通过命令中心入口访问聊天功能。它提供快速访问所有相关聊天命令,例如启动不同的聊天体验或为您的提示附加上下文。请注意,命令中心本身需要启用才能显示聊天命令中心入口。

聊天命令中心按钮和包含相关聊天操作的下拉菜单。

改进的时间上下文(实验性)

设置

github.copilot.chat.experimental.temporalContext.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

有了时间上下文,您可以指示内联聊天将最近打开或编辑的文件视为聊天上下文的一部分。我们已经改进了这个功能,并邀请大家来试一试。

自定义指令(实验性)

设置

github.copilot.chat.experimental.codeGeneration.useInstructionFiles
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

设置

github.copilot.chat.experimental.testGeneration.instructions
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

最后一个里程碑,我们引入了自定义代码生成指令。我们进一步扩展了这一功能,以定义共享指令用于代码生成.github/copilot-instructions.md在你的工作区中创建文件。这些常见的指令补充了你个人的代码生成指令。启用代码生成指令文件

github.copilot.chat.experimental.codeGeneration.useInstructionFiles
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

此外,您现在可以在设置中定义测试生成的说明或从文件导入它们。例如,如果您总是希望为测试使用特定的单元测试框架。在 测试生成 中配置测试生成说明。

github.copilot.chat.experimental.testGeneration.instructions
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

无障碍

入门指南

我们的帮助菜单现在包括一个无障碍功能入门指南,使您更容易探索和使用无障碍选项。该指南向您介绍无障碍帮助对话框、无障碍信号、键盘快捷键等功能。

开始使用无障碍功能产品演示。

评论无障碍改进

我们引入了一个用于评论线程控制的可访问视图。此视图包括相关的编辑器上下文,使您无需在编辑器和可访问视图之间切换即可保持专注。同样,评论面板现在在可访问视图中提供编辑器上下文。

我们还引入了注释:将注释焦点设置在当前行命令,允许您通过键盘快速在编辑器中移动到注释控制。注释:转到下一个注释范围注释:转到上一个注释范围

工作台

更改扩展账户的偏好设置

在这一版本中,我们探索了如何改进更改扩展程序首选账户的体验。例如,如果您有多个 GitHub 账户,并且您不小心用错误的账户登录了 GitHub Copilot,现在需要使用另一个账户。

现在可以通过多种方式在事后更改该偏好。

  • 活动栏中的账户菜单 > <您的账户> > 管理受信任的扩展 > 选择扩展的齿轮图标

    管理受信任的扩展 Quick Pick,齿轮按钮突出显示。

  • 扩展 查看 > 上下文菜单(或齿轮图标)对使用 auth 的扩展 > 选择 账户偏好

    在扩展上下文菜单中的帐户偏好选项。

  • 扩展详细视图 > 齿轮图标 > 选择 账户偏好

    扩展齿轮菜单中的帐户偏好选项。

选择其中任何一个选项,将带您进入快速选择界面,在此您可以更改扩展使用的帐户。

帐户偏好设置“快速选择”,使您可以为给定帐户选择扩展。

当您更改扩展程序的帐户偏好设置时,此操作会向扩展程序发送事件,扩展程序需要正确处理该事件。如果您没有看到预期的行为,请向该扩展程序报告问题,以便处理帐户偏好设置体验。

另外,请告诉我们您对这个流程的任何反馈。

查看与配置文件关联的文件夹和工作区

在这个里程碑中,我们在配置文件编辑器中引入了文件夹和工作区部分。这个部分从一个中央位置列出与特定配置文件关联的所有文件夹和工作区。从这个部分,你可以添加或修改文件夹,或者在新Windows中打开文件夹或工作区。

在用户编辑器中的文件夹和工作区部分。

更新所有配置文件的扩展

在这个里程碑中,我们引入了在所有配置文件中更新扩展的功能。如果你有多个配置文件,并且你想保持扩展版本的一致性,这将非常有用。以前,你必须切换到每个配置文件并更新该配置文件的扩展。

扩展视图中的警告

当存在任何无效的扩展或因版本不兼容而被禁用的扩展时,扩展视图现在会显示一个警告徽章和相关的信息。

扩展视图显示警告徽章和警告的描述。

在资源管理器中查找

我们改进了资源管理器视图中的查找功能,以便在大型项目中更容易地搜索文件。您可以通过使用⌥⌘F(Windows, Linux Ctrl+Alt+F键盘快捷键在文件资源管理器中打开查找控制。在搜索时,您可以切换模糊匹配和连续匹配以获得更灵活的结果。

请注意,在搜索期间,一些上下文菜单操作暂时禁用。请期待即将带来的更多改进!

发行说明

我们在发布说明中提供了一种简化的语法来引用设置

设置.名称
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
), 这在发布说明编辑器中显示时,也有现在熟悉的设置-齿轮渲染。

在发行说明中设置URL可以直 接导航到设置编辑器。

编辑器

镶嵌提示改进

我们已经添加了

编辑器.内联提示.最大长度
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置,控制在lay提示在多少字符后被截断。

我们还修订了嵌入式提示的更新策略,现在,在输入时,它们应该更新得更快,但不会导致光标发生任何水平移动。

实验编辑上下文

这个里程碑,我们引入了一种新的实验设置

编辑器.实验性编辑上下文启用
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
这个设置启用 EditContext API来驱动VS Code中的编辑体验。采用 EditContext API后,我们已经修复了一些IME组合的错误。总体上,我们相信它将在长期内改善编辑体验,并最终将默认启用。

启用此设置后,请确保重新加载 VS Code Windows以利用该设置。

源代码管理

源代码控制图表视图改进

最后一个里程碑,我们添加了新的源代码控制图视图。在这个里程碑中,我们一直在努力扩展新添加视图的功能,并优化视图的布局。

仓库选择器

当你打开一个包含多个仓库的文件夹/工作区时,源代码控制图视图标题会显示一个仓库选择器。默认情况下,源代码控制图视图显示活动仓库,与状态栏中的信息匹配。你可以使用仓库选择器来锁定源代码控制图视图到某个特定的仓库。

源代码控制图视图标题中的仓库选择器控件。

历史项目参考选择器

这个里程碑,我们在源代码控制图视图标题中添加了一个新的历史记录项引用选择器。您可以使用此引用选择器筛选图中显示的历史记录项到不同的分支,或者查看多个分支。

历史项目引用快速选择控制以选择一个或多个项目。

默认情况下,历史项引用选择器设置为自动,该图形显示当前历史项引用、其远程位置以及一个可选的基点。

源代码控制图视图标题中的历史项引用选择器控件。

历史项目操作

这个里程碑,我们扩展了源代码控制历史项目上下文菜单中可用的操作列表。我们添加了从历史项目创建新分支/标签、选择性合并历史项目和检出(分离)项目的操作。

源代码管理图视图中项目的上下文菜单。

源代码控制图设置

这个里程碑,我们增加了一组新的设置,这样你就可以自定义图表:

  • scm.图表.徽章
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    - 控制在源代码控制图表视图中显示哪些徽章
  • scm.graph.pageOnScroll
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    - 控制 Source Control Graph 视图在你滚动到列表末尾时是否加载下一页项目
  • scm.graph.pageSize
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    - 默认显示在源代码控制图视图中和加载更多项目时的项目数量

笔记本电脑

支持单元格之间的多光标(预览)

Notebook编辑器现在在设置之间支持单元格之间的多光标编辑

notebook.多光标.启用
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
目前,这只能通过快捷键 Ctrl+D 触发,并支持核心编辑器操作以及编辑器命令的有限子集。

Diff编辑器显示文档元数据更改

笔记本差异编辑器现在也显示对文档元数据(如内核信息和单元格语言)所做的更改。

Notebook dif编辑器显示文档元数据的并排更改。

在差异视图中折叠未更改的区域

笔记本差异视图现在尊重该设置

diffEditor.hideUnchangedRegions.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
启用后,未更改的代码块默认折叠,这使得在大型笔记本中查看更改更加容易。

差异编辑器将未更改的代码块显示为折叠。

在网页工作线程中进行笔记本序列化(实验性)

此版本引入了一个实验性功能,可以在网页工作线程中对笔记本进行序列化。当你处理大型笔记本时,这可以帮助减少扩展主机进程中的主线程阻塞时间。默认情况下,此功能是禁用的,但可以通过设置启用。

ipynb.experimental.serialization
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

调试

支持数据去噪

VS Code 支持来自 Debug Adapter Protocol 的新文本样式功能。这使得 Variables 视图、Watch 视图、悬停和 Debug 控制台中的数据可以通过 ANSI 逃逸序列进行颜色化。

JavaScript 调试器

改进的HTML元素显示

我们改进了HTML元素在JavaScript调试器中的显示方式。以前,它们被渲染为简单的对象,难以导航。现在,它们更接近DOM结构,并且我们利用新的颜色化功能提供了一些基本的语法高亮。

HTML元素在JavaScript调试控制台中被着色。

在启动配置中自动完成节点命令

有一个新的自动完成助手可用在launch.json用于命令行应用程序的文件,这些文件安装在你的节点模块这使得为像这样的工具设置调试更加容易视网膜测试鸟巢输入:.

清理已加载的源视图

我们改变了Node.js内置模块、评估脚本和WebAssembly模块的源路径结构,以使已加载的源视图更安静,更容易浏览。

语言

TypeScript 5.6

我们的JavaScript和TypeScript支持现在使用TypeScript 5.6。这个重要的更新包括了许多语言和工具的改进,以及重要的错误修复和性能优化。

您可以在TypeScript博客上阅读关于TypeScript 5.6发布的所有内容。在接下来的几节中,我们还包含了一些工具亮点。

检测一些常见的“总是成立”的编程错误

假设你在JavaScript或TypeScript中使用正则表达式,并编写如下代码:

常量 字符串 = '...'
如果 (/\d+(\.\d+)?/) {
  ...
}否则 {
  ...
}

哎呀!看起来我们忘记打电话了。测试()在正则表达式上,意味着 如果条件总是评估为真。这不是我们想要的。

尽管这个错误在指出时是显而易见的,但像这样的错误令人惊讶地容易犯,并且甚至在 VS Code 中引发了真正的错误!值得幸的是,TypeScript 现在报告您程序中一些最常见的“总是为真”的错误。这包括测试一个如果条件判断一个永不会发生的值,或者条件表达式中的一侧是不可达的,例如/abc/ ?? /xyz/输入:.

查看 TypeScript 发行说明,以获取更多示例和有关此功能如何工作的详细信息。

优先考虑的地区诊断

在非常长的JavaScript或TypeScript文件中工作?借助区域优先诊断,您应该会更快地看到类型错误诊断显示出来。这意味着我们会尝试获取当前可见代码的诊断,并先显示这些诊断,即使文件的其余部分的诊断仍在计算中。

这种优化对包含成千上万行的复杂文件最为相关。对于较小的文件,您可能不会注意到任何变化。

改进了JavaScript和TypeScript的提交字符

提交字符可以通过自动接受输入的完成来加速编码。例如,在JavaScript和TypeScript中,输入:.通常被认为是一个提交字符。这意味着要输入myVariable.属性.,您可以直接输入我的V输入:.输入:p输入:.与第一个输入:.接受完成我的变量和第二个输入:.接受完成财产输入:.

这些提交字符现在由 TypeScript 计算,这意味着它们可以更好地考虑程序的结构。我们也可以随着时间的推移继续改进我们对它们的支持。

提交字符默认是启用的,但可以通过设置禁用

编辑器.接受提交字符的建议
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

排除自动导入的模式

新的自动导入指定排除正则表达式 可以通过使用正则表达式来排除 自动导入 从特定的包。例如,要排除像lodash这样的模块子目录的自动导入,可以设置:

{
  "typescript.preferences.autoImportSpecifierExcludeRegexes": ["^lodash/.*$"]
}

您可以通过使用来配置此设置

javascript.偏好设置.自动导入指定排除正则表达式
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
用于JavaScript和
typescript.preferences.autoImportSpecifierExcludeRegexes
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
对于 TypeScript。更多详细信息请参见 TypeScript 5.6 发布说明

远程开发

这些远程开发扩展允许您通过SSH或远程隧道,或Windows子系统 for Linux(WSL)使用开发容器,作为功能齐全的开发环境。

亮点包括:

  • 通过 SSH/Tunnel 附加到 Kubernetes 容器
  • 手动指定 GPU 可用性

您可以在 远程开发发布说明 中了解更多关于这些功能的信息。

对扩展的贡献

Python

运行测试并覆盖

现在你可以在 VS Code 中运行带有覆盖范围的 Python 测试了!要运行带有覆盖范围的测试,请在测试资源管理器中选择覆盖运行图标,或从任何通常触发测试运行的菜单中选择“带覆盖运行”。Python 扩展将通过使用覆盖来运行覆盖。pytest-覆盖插件如果你使用pytest,或者使用覆盖.py用于单元测试。

一旦代码覆盖运行完成,编辑器中的行将会高亮显示以表示行级覆盖。这些可以在底部的“运行结果”面板中通过“关闭测试覆盖”或“查看测试覆盖”来关闭和重新打开。此外,在测试资源管理器中的“测试”标签下会显示一个测试覆盖标签,同样带有烧杯图标,你也可以通过测试:关注测试覆盖视图在命令面板中导航 (⇧⌘P(Windows, Linux Ctrl+Shift+P)。在这个面板中,你可以查看工作区中每个文件和文件夹的行和分支覆盖度指标。

有关使用 coverage 运行 Python 测试的更多信息,请参阅我们的Python 文档。有关测试覆盖的一般信息,请参阅 VS Code 的测试覆盖文档

Python默认问题匹配器

Python 扩展现在包括一个默认的问题匹配器,简化了对 Python 代码中问题的跟踪,并提供了更多的上下文反馈。要集成它,请添加"problemMatcher": "$python"开始处理您的任务任务.json一个问题匹配器扫描任务的输出以查找错误和警告,并将它们显示在问题面板中,从而增强您的开发工作流程。

以下是示例任务.json使用默认Python问题匹配器的文件:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Run Python",
      "type": "shell",
      "command": "${command:python.interpreterPath}",
      "args": ["${file}"],
      "problemMatcher": "$python"
    }
  ]
}

在 Python 终端 REPL 中进行Shell积分

Python 扩展现在包括一个选项,用于选择加入和退出PYTHONSTARTUP脚本,在你输入之前运行Python或以其他任何方式在终端中启动Python REPL。如果您选择启用,您可以使用终端外壳集成中的功能,例如命令装饰、重新运行命令、运行最近的命令,如果它们在Mac或Linux中。您可以通过设置启用此功能

python.terminal.shellIntegration.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

Pylance 语言服务器模式

有一个新的设置

python分析语言服务器模式
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
这使您能够在我们的当前IntelliSense体验或一个轻量级的优化性能的体验之间进行选择。

如果你不需要完整的IntelliSense功能,并且希望Pylance尽可能地节省资源,你可以设置

python分析语言服务器模式
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
否则,要继续今天你在 Pylance 上的体验,你可以将其设置为默认输入:.

此新功能将覆盖以下设置的默认值:

设置 模式 默认模式
"python.analysis.exclude" ['**'] []
"python.analysis.useLibraryCodeForTypes"
"python.analysis.enablePytestSupport"
"python.analysis.indexing"

上面的设置仍然可以单独更改以覆盖默认值。

GitHub 拉取请求

GitHub Pull Requests扩展上取得了更多的进展,该扩展使您能够处理、创建和管理拉取请求和问题。查看0.98.0版本的更新日志,了解主要亮点。

扩展编写

移除桌面应用程序中的自定义分配器

在这个版本中,我们移除了在桌面应用程序扩展主机中版本1.78中添加的自定义分配器。这个自定义分配器作为桥梁,用于支持与Electron运行时构建的V8沙盒不兼容的Node.js原生插件。你可以参考这个跟踪问题以获取更多上下文信息。

我们已经确保排名前5000的扩展不会受到此更改的影响。如果您的扩展或您的扩展的依赖项受到此更改的影响,您可以尝试以下补救建议:

  • 如果你的扩展使用n-api,那么状态不允许使用外部缓冲区 当使用外部数组缓冲区时将被返回。在这种情况下,您可以切换到使用 API 的副本版本 napi_create_buffer_copy.
  • 如果你的扩展使用了node-addon-api,请参考这个文档,了解替代API和编译时设置。
  • 如果你想避免由于复制而产生的性能成本,你可以使用V8 分配器来确保缓冲区的后端存储与 V8 沙盒兼容。

我们还增加了遥测数据,以识别可能受影响的扩展和原生加载项,这样我们就可以主动联系扩展作者,并在可能的情况下提供帮助。如果您的扩展受到影响,并且以上建议对您无效,请在我们的讨论线程中发表评论,我们将很乐意提供帮助。

调试适配器协议

我们在调试适配器协议中正式定义了如何在变量显示和输出中对文本进行着色和样式化。着色通过ANSI控制序列工作,并且要求客户端和调试适配器双方支持ANSI样式在他们的初始化请求和能力中,分别。

预览功能

多个 GitHub 账户

现在可以在 VS Code 中同时登录多个 GitHub 账户。

此功能在 VS Code Insiders 中默认启用。在 VS Code 的稳定版本中,您可以使用 来开启此功能。

github.experimental.multipleAccounts
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

以下是一些可能需要多个账户的情景:

  • 使用 Account1 进行设置同步和 Account2 用于 GitHub 拉取请求扩展
  • 使用 Account1 进行 GitHub 扩展(推送)和 Account2 用于 GitHub Copilot

要使用此功能,只需触发登录操作(例如使用内置功能如设置同步或使用扩展),您将有机会登录到其他帐户。此功能还与新的帐户偏好快速选择很好地配合,如果您以后需要更改帐户。

虽然大多数事情应该可以继续使用您现有的扩展,但某些行为可能还不能完美地与这个多账户世界兼容。如果您认为有改进的空间,请在这些扩展上打开一个议题。在相对新的帮助下vscode.authentication.getAccounts('github')API,扩展具有处理多个账户的强大功能。

在下一次迭代中,我们计划将此功能默认启用所有用户。

基于 MSAL 的 Microsoft 认证

我们一直在努力让我们的Microsoft身份验证堆栈使用MSAL(Microsoft身份验证库)。这是一个巨大的工程,但在这一迭代中我们取得了很大的进展。这项工作涵盖了所有VS Code客户端,因此包括VS Code和VS Code for the Web

  • 对于vscode.dev,我们已经启用了基于浏览器的MSAL.js对于所有 Microsoft 认证请求。换句话说,vscode.dev 现在完全基于 MSAL。

  • 对于 VS Code 桌面客户端,我们把这个功能放在了一个设置后面,

    microsoft.useMsal
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    目前,它被隐藏在一个设置选项后面,因为我们计划向通过中间商流程过渡,这将使 VS Code 能够使用操作系统的身份验证状态。因此,为了尽量减少中断,我们将首先完成这项工作,然后才广泛启用它。话虽如此,如果您迫不及待地想尝试这种新的身份验证方法,欢迎尝试并给我们反馈。

您可以在 问题 #178740 中查看 VS Code 中此过渡到 MSAL 的详细状态。

TypeScript 5.7

此版本包括对即将推出的 TypeScript 5.7 版本的初步支持。请查看 TypeScript 5.7 计划 了解详细信息。

要开始使用TypeScript 5.7的预览版本,请安装TypeScript Nightly扩展

提议的API

语言模型工具

我们继续在我们的基础上进行迭代语言模型工具API。API 有两个主要部分:

  1. 扩展程序注册一个工具的能力。工具是供语言模型使用的一段功能。例如,读取文件的Git历史记录。

  2. 语言模型支持工具的机制,例如在请求时扩展工具传递工具,语言模型请求工具调用,以及扩展工具将工具调用的结果传达回来。

在这个里程碑中,我们为工具添加了在运行前请求用户确认的功能。这对于可能具有某些副作用的工具非常有用。

查看 问题 #213274 以获取更多详细信息或给我们反馈。

注意:该API仍在积极开发中,情况可能会发生变化。

工程

ESM 正在为 VS Code 发货

我们终于在 VS Code 稳定版中发布了我们的 ESM 工作。这意味着 VS Code 核心的所有层(electron、node.js、浏览器、workers)都使用导入导出JavaScript中用于模块加载和导出的语法。我们所有的遗留AMD加载器的用法已被禁用,并将在10月的债务清理周被移除。

迁移到ESM大大提高了启动性能。首先,移除了许多AMD开销,但同时主工作台的捆绑包大小也减少了超过10%:

图表显示了主捆绑包加载时间的趋势,引入ESM后有大幅下降。

既然我们已经完全转换到 ESM,我们计划改进 VS Code 的工程系统。有了 ESM,许多现代工具将可以为我们所用,我们非常期待在未来不久的将来分享更多关于这方面的细节。

注意:扩展不受此更改的影响,并且不会通过ESM加载,请参阅https://github.com/microsoft/vscode/issues/130367了解详细信息。

默认使用 NPM 作为包管理器

2024年9月初,我们已经完成了从yarn到npm的切换用于microsoft/vscode仓库中的包管理。这个决定是基于VS Code的具体需求,并围绕这些标准:

  • 性能:我们最初转向 yarn 是因为性能原因,现在 npm 也能满足我们的要求。
  • 安全性:我们通过限制暴露和减少我们依赖的工具数量,使我们的供应链更加安全。

重要修复

  • 226401 fileWatcher 持续消耗 CPU 超过 200%
  • 10054 [WSL]: 端口标签错误地报告WSL中的端口正在被转发到本地时本地主机转发 = false

谢谢

最后但同样重要的,向VS Code的贡献者们致以深深的谢意

问题跟踪

对我们的问题跟踪的贡献:

拉取请求

贡献于Visual Studio Code输入:

贡献于vscode-文档输入:

贡献于vscode扩展示例输入:

贡献于vscode-js调试输入:

贡献于vscode-jupyter输入:

贡献于vscode语言服务器节点输入:

贡献于vscode-拉取请求-GitHub输入:

贡献于vscode- Python调试器输入:

贡献于vscode-vsce输入:

贡献于vscode-wasm输入:

贡献于语言服务器协议输入: