2024 年 9 月 (版本 1.94)
更新 1.94.1:此更新解决了此安全问题。
更新 1.94.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2024 年 9 月版。此版本包含许多更新,希望您会喜欢,其中一些主要亮点包括:
- 在资源管理器中查找 - 使用改进的查找控件在资源管理器视图中快速查找文件。
- 源代码管理图 - 源代码管理图中有更多筛选选项和交互性。
- Python 测试覆盖率 - 运行带有覆盖率的 Python 测试并在编辑器中获取丰富的测试结果。
- ESM - 由于迁移到 ESM,VS Code 启动更快。
- 帐户首选项 - 指定扩展程序使用的帐户。
- 本机 REPL 中的 Copilot - 在本机 REPL 中获取代码补全和内联聊天。
- 改进的聊天上下文 - 拖放文件或使用 IntelliSense 以获得更相关的聊天上下文。
- 测试环境设置 - 获取有关为工作区设置测试框架的帮助。
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新。Insiders:想尽快尝试新功能吗?您可以下载每晚Insiders版本并尽快尝试最新更新。
GitHub Copilot
在聊天中切换语言模型
此前,我们宣布您可以注册提前访问 OpenAI o1 模型。获得访问权限后,您将在 VS Code 的 Copilot Chat 中拥有一个 Copilot Chat 模型选择器控件,用于选择用于聊天对话的模型版本。
Inline Chat 中的 GPT-4o
我们将 Copilot Inline Chat 升级到 GPT-4o,以便在您在编辑器中使用聊天时,为您提供更快、更准确、更高质量的代码和解释。
聊天中的公共代码匹配
您可以允许 GitHub Copilot 返回可能与 GitHub.com 上公开可用代码匹配的代码。当为您的组织订阅或个人订阅启用此功能时,Copilot 代码补全已经为您提供了检测到的匹配项的详细信息。我们现在也在 Copilot Chat 中向您显示这些公共代码匹配项。
如果您的组织或订阅启用了此功能,您可能会在响应末尾看到一条消息,其中包含一个查看匹配项链接。如果您选择此链接,将打开一个编辑器,其中显示匹配代码引用的详细信息。
在 GitHub 博客上获取有关 GitHub Copilot 中的代码引用的更多信息。
聊天中的文件建议
在聊天输入字段中,您现在可以键入#<filename>
以获取文件名建议,并将其快速作为上下文附加到您的提示。这适用于支持文件附件的聊天位置,例如聊天视图、快速聊天、内联聊天和笔记本聊天。
改进的聊天响应中的文件链接
我们改进了 Copilot 响应中提到的任何工作区文件路径的渲染。当您询问@workspace
问题时,这些路径非常常见。
您会注意到的第一件事是,工作区文件的路径现在包含一个文件图标。这使您可以轻松地在聊天响应中区分它们。文件图标基于您当前的文件图标主题。
这些路径是交互式链接,只需选择它们即可打开相应的文件。您甚至可以使用拖放将其在新编辑器组中打开,或通过按住Shift键然后拖放将其插入文本编辑器中。
默认情况下,这些链接只显示文件名,但您可以将鼠标悬停在其上以查看完整文件路径。
您还可以右键单击其中一个路径以打开一个上下文菜单,其中包含其他命令,例如将资源的相对路径复制到剪贴板,或在操作系统的文件资源管理器中显示文件。
我们计划在接下来的迭代中进一步改进工作区路径渲染,并对响应中的符号名称进行类似改进。
拖放文件以添加聊天上下文
您现在可以通过将文件或编辑器选项卡从工作台直接拖放到聊天中,轻松地将其他文件作为聊天提示的上下文附件。对于内联聊天,按住Shift并将文件拖放到聊天中,将其作为上下文添加,而不是在编辑器中打开。
文件附件包含在历史记录中
有多种方法可以将文件或编辑器选择作为相关上下文附加到您的聊天请求。以前,此上下文仅用于当前请求,不包含在后续请求的历史记录中。现在,这些附件保留在历史记录中,因此您可以继续引用它们,而无需重新附加它们。
Python 本机 REPL 中的内联聊天和补全
Python 扩展使用的本机 REPL 编辑器现在直接在输入框中支持 Copilot 内联聊天和代码补全。
在笔记本中接受并运行生成的代码
当您使用 Copilot 内联聊天在笔记本中生成代码时,您现在可以直接从内联聊天接受并运行生成的代码。
在笔记本聊天中附加变量
当您在笔记本中使用 Copilot 时,您现在可以在请求中附加 Jupyter 内核中的变量。添加变量可以更精确地控制聊天请求的上下文,以便您从 Copilot 获得更相关的响应。
键入#
,后跟变量名,或使用📎控件(⌘/ (Windows、Linux Ctrl+/))在内联聊天中添加上下文变量。
刷新聊天用户体验
我们刷新了聊天视图,带来了全新的欢迎体验,并更新了聊天输入区域的布局。您现在可以使用@
按钮轻松找到可用聊天参与者和斜杠命令的列表,包括内置命令和您已安装扩展程序中的聊天参与者。您仍然可以通过在聊天输入框中键入/
或@
来查找参与者和斜杠命令。
语义搜索结果 (预览)
设置:github.copilot.chat.search.semanticTextResults
搜索视图使您能够在文件中执行精确搜索。我们现在向搜索视图添加了使用 Copilot 提供语义相关搜索结果的功能。
此功能仍处于预览阶段,默认情况下未启用。请试用并告诉我们您的想法!
修复测试失败 (预览)
设置:github.copilot.chat.fixTestFailure.enabled
我们添加了专门的逻辑来帮助您诊断失败的单元测试。在某些场景下,此逻辑由/fix
斜杠命令触发,您也可以直接使用/fixTestFailure
斜杠命令调用它。该命令在聊天中默认启用,但可以通过设置github.copilot.chat.fixTestFailure.enabled禁用。
自动化测试设置 (实验性)
设置:github.copilot.chat.experimental.setupTests.enabled
我们添加了一个实验性的/setupTests
斜杠命令,可以帮助您配置工作区的测试设置。此命令可以推荐一个测试框架,提供设置和配置它的步骤,并建议一个 VS Code 扩展以提供VS Code 中的测试集成。这可以为您节省时间,让您更轻松地开始代码测试。
当您使用/tests
命令为您的代码生成测试时,如果您的工作区尚未设置此类集成,它可能会推荐/setupTests
和测试扩展。
从聊天开始调试 (实验性)
设置:github.copilot.chat.experimental.startDebugging.enabled
在此里程碑中,我们改进了实验性的/startDebugging
斜杠命令。此命令使您可以轻松查找或创建启动配置并无缝启动调试您的应用程序。当您在 Copilot Chat 中使用@vscode
时,/startDebugging
现在默认可用。
命令中心中的聊天 (实验性)
我们正在试验用于访问聊天的命令中心条目。它提供对所有相关聊天命令的快速访问,例如启动不同的聊天体验或将上下文附加到您的提示。请注意,要显示聊天命令中心条目,命令中心本身需要启用。
改进的时间上下文 (实验性)
设置:github.copilot.chat.experimental.temporalContext.enabled
通过时间上下文,您可以指示内联聊天将最近打开或编辑的文件视为聊天上下文的一部分。我们改进了此功能,并邀请所有人尝试一下。
自定义说明 (实验性)
设置:github.copilot.chat.experimental.codeGeneration.useInstructionFiles
设置:github.copilot.chat.experimental.testGeneration.instructions
上一个里程碑,我们引入了自定义代码生成说明。我们进一步扩展了此功能,以在工作区中的.github/copilot-instructions.md
文件中定义用于代码生成的共享说明。这些通用说明补充了您自己的个人代码生成说明。通过github.copilot.chat.experimental.codeGeneration.useInstructionFiles设置启用代码生成说明文件。
此外,您现在可以在设置中定义测试生成说明或从文件导入。例如,如果您总是希望为您的测试使用特定的单元测试框架。在github.copilot.chat.experimental.testGeneration.instructions设置中配置测试生成说明。
辅助功能
入门
我们的帮助菜单现在包含一个辅助功能入门演练,这使您可以更轻松地探索和利用辅助功能选项。该演练向您介绍了辅助功能,例如辅助功能帮助对话框、辅助功能信号、键盘快捷键等。
评论辅助功能改进
我们为评论线程控件引入了辅助功能视图。此视图包括相关编辑器上下文,使您无需在编辑器和辅助功能视图之间切换即可保持专注。同样,评论面板的辅助功能视图中现在提供了编辑器上下文。
我们还引入了评论:聚焦当前行评论命令,该命令允许您使用键盘快速从编辑器移动到评论控件。还有新的操作可以在编辑器中转到下一个和上一个评论范围:评论:转到下一个评论范围和评论:转到上一个评论范围。
工作台
更改扩展程序的帐户首选项
在本次迭代中,我们探讨了如何改进更改扩展程序首选帐户的体验。例如,如果您有多个 GitHub 帐户,并且您不小心使用错误的帐户登录到 GitHub Copilot,现在需要使用另一个帐户。
现在可以通过多种方式在事后更改该首选项。
-
活动栏中的帐户菜单 > <您的帐户> > 管理受信任的扩展程序 > 选择扩展程序的齿轮图标
-
扩展程序视图 > 使用身份验证的扩展程序的上下文菜单(或齿轮图标) > 选择帐户首选项
-
扩展程序详细信息视图 > 齿轮图标 > 选择帐户首选项
选择这些选项中的任何一个都会带您到一个快速选择器,您可以在其中更改扩展程序使用的帐户。
当您更改扩展程序的帐户首选项时,这会向扩展程序发送一个事件,并且由扩展程序正确处理它。如果您没有看到预期的行为,请为该扩展程序报告一个问题,以便可以处理帐户首选项体验。
此外,如果您对此流程有任何反馈,请告诉我们。
查看与配置文件关联的文件夹和工作区
在此里程碑中,我们在配置文件编辑器中引入了文件夹和工作区部分。此部分集中列出了与特定配置文件关联的所有文件夹和工作区。在此部分中,您可以添加或修改文件夹,或在新窗口中打开文件夹或工作区。
更新所有配置文件中的扩展程序
在此里程碑中,我们引入了更新所有配置文件中扩展程序的功能。如果您有多个配置文件并且希望保持扩展程序版本同步,这很有用。以前,您必须切换到每个配置文件并更新该配置文件的扩展程序。
扩展程序视图中的警告
当存在任何无效扩展程序或因版本不兼容而禁用扩展程序时,扩展程序视图现在会显示警告徽章和相关信息。
在资源管理器中查找
我们改进了资源管理器视图中的查找功能,使其更容易在大型项目中搜索文件。您可以使用键盘快捷键⌥⌘F (Windows、Linux Ctrl+Alt+F) 在文件资源管理器中打开查找控件。在搜索时,您可以在模糊匹配和连续匹配之间切换以获得更灵活的结果。
请注意,某些上下文菜单操作在搜索期间暂时禁用。请继续关注即将推出的更多改进!
发行说明
我们简化了发行说明中引用设置的语法(setting.name),当在发行说明编辑器中显示时,它也具有现在熟悉的设置齿轮渲染。
编辑器
内联提示改进
我们添加了editor.inlayHints.maximumLength设置,该设置控制内联提示在多少个字符后被截断。
我们还修改了内联提示的更新策略,现在,在键入时,它们应该会更快地更新,但不会导致光标的任何水平移动。
实验性编辑上下文
在此里程碑中,我们引入了一个新的实验性设置editor.experimentalEditContextEnabled。此设置启用EditContext API来支持 VS Code 中的编辑体验。采用EditContext API使我们能够修复某些 IME 组合错误。通常,我们认为它将长期改进编辑体验,最终它将默认启用。
启用此设置后,请务必重新加载 VS Code 窗口以利用它。
源代码管理
源代码管理图视图改进
上一个里程碑,我们添加了新的源代码管理图视图。在此里程碑中,我们一直在努力扩展新添加视图中可用的功能,并完善视图的布局。
存储库选择器
当您打开包含多个存储库的文件夹/工作区时,源代码管理图视图标题会显示一个存储库选择器。默认情况下,源代码管理图视图显示活动存储库,与状态栏中的信息匹配。您可以使用存储库选择器将源代码管理图视图锁定到特定存储库。
历史项引用选择器
在此里程碑中,我们向源代码管理图视图标题添加了一个新的历史项引用选择器。您可以使用此引用选择器将图中显示的历史项筛选到不同的分支,或查看多个分支。
默认情况下,历史项引用选择器设置为Auto
,它会渲染当前历史项引用、其远程和一个可选基的图。
历史项操作
在此里程碑中,我们扩展了源代码管理历史项上下文菜单中可用的操作列表。我们添加了从历史项创建新分支/标签、挑选历史项以及检出(分离)项的操作。
源代码管理图设置
在此里程碑中,我们添加了一组新设置,以便您可以自定义图表
- scm.graph.badges - 控制在源代码管理图视图中显示哪些徽章
- scm.graph.pageOnScroll - 控制当您滚动到列表末尾时,源代码管理图视图是否加载下一页项目
- scm.graph.pageSize - 在源代码管理图视图中显示和加载更多项目的默认项目数
Notebook
跨单元格的多光标支持 (预览)
笔记本编辑器现在支持在单元格之间进行多光标编辑,通过设置notebook.multiCursor.enabled。目前,这只能通过快捷键Ctrl+D触发,并支持核心编辑器操作以及有限的编辑器命令子集。
差异编辑器显示文档元数据更改
笔记本差异编辑器现在还显示对文档元数据的更改,例如内核信息和单元格语言。
在差异视图中折叠未更改区域
笔记本差异视图现在遵守设置diffEditor.hideUnchangedRegions.enabled。启用后,未更改的代码块默认折叠,这使得审查大型笔记本中的更改更容易。
Web Worker 中的笔记本序列化 (实验性)
此版本引入了一个实验性功能,允许在 Web Worker 中进行笔记本序列化。当您处理大型笔记本时,这有助于减少扩展主机进程中的主线程阻塞时间。默认情况下,此功能处于禁用状态,但可以通过将ipynb.experimental.serialization设置为true
来启用。
调试
数据着色支持
VS Code 支持调试适配器协议中的新文本样式功能。这使得变量视图、监视视图、悬停和调试控制台中的数据可以通过 ANSI 转义序列进行着色。
JavaScript 调试器
改进的 HTML 元素显示
我们改进了 JavaScript 调试器中 HTML 元素的显示方式。以前,它们被渲染为简单的对象,很难导航。现在,它们更密切地反映了 DOM 结构,并且我们利用新的着色功能提供了一些基本的语法高亮显示。
启动配置中 Node 命令的自动补全
launch.json
文件中有一个新的自动补全帮助程序,适用于安装在node_modules
中的命令行应用程序。这使得设置vitest
或nest
等工具的调试更容易。
更简洁的已加载源视图
我们更改了 Node.js 内置模块、评估脚本和 WebAssembly 模块的源路径结构,以使已加载源视图更简洁,更易于浏览。
语言
TypeScript 5.6
我们的 JavaScript 和 TypeScript 支持现在使用 TypeScript 5.6。此主要更新包括许多语言和工具改进,以及重要的错误修复和性能优化。
您可以在TypeScript 博客上阅读有关 TypeScript 5.6 版本的所有信息。我们还在以下部分中包含了一些工具亮点。
检测一些常见的“始终为真”编程错误
假设您在 JavaScript 或 TypeScript 中使用正则表达式并编写了一些如下所示的代码:
const str = '...'
if (/\d+(\.\d+)?/) {
...
} else {
...
}
糟糕!看起来我们忘记调用正则表达式上的.test()
,这意味着if
条件始终评估为 true。这不是我们想要的。
尽管指出来后这个问题很明显,但这样的错误却出人意料地容易犯,甚至在 VS Code 中导致了真实的错误!幸运的是,TypeScript 现在报告了程序中一些最常见的“始终为真”错误。这包括针对从不为真的值测试if
条件,或条件表达式中一侧不可达,例如/abc/ ?? /xyz/
。
查看 TypeScript 发行说明以获取更多示例和此功能工作原理的详细信息。
区域优先诊断
在非常长的 JavaScript 或 TypeScript 文件中工作?由于区域优先诊断,您应该会更快地看到类型错误的诊断。这意味着我们尝试获取当前可见代码的诊断并首先显示它们,即使文件的其余部分的诊断仍在计算中。
此优化与具有数千行的复杂文件最相关。对于较小的文件,您可能不会注意到任何变化。
改进 JavaScript 和 TypeScript 的提交字符
提交字符可以通过在键入时自动接受补全来加速编码。例如,在 JavaScript 和 TypeScript 中,.
通常被认为是提交字符。这意味着要键入myVariable.property.
,您只需键入myv
、.
、p
、.
,第一个.
接受myVariable
的补全,第二个.
接受property
的补全。
这些提交字符现在由 TypeScript 计算,这意味着它们可以更好地考虑程序的结构。我们还可以随着时间的推移不断改进对它们的支持。
提交字符默认启用,但可以通过将editor.acceptSuggestionOnCommitCharacter设置为false
来禁用。
自动导入的排除模式
新的autoImportSpecifierExcludeRegexes
允许您使用正则表达式从特定包中排除自动导入。例如,要从模块的子目录(如 lodash)中排除自动导入,您可以设置
{
"typescript.preferences.autoImportSpecifierExcludeRegexes": ["^lodash/.*$"]
}
您可以通过使用 JavaScript 的javascript.preferences.autoImportSpecifierExcludeRegexes和 TypeScript 的typescript.preferences.autoImportSpecifierExcludeRegexes来配置此项。有关更多详细信息,请参阅TypeScript 5.6 发行说明
远程开发
远程开发扩展允许您通过 SSH 或远程隧道使用开发容器、远程机器或适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
亮点包括:
- 通过 SSH/隧道附加到 Kubernetes 容器
- 手动指定 GPU 可用性
您可以在远程开发发行说明中了解有关这些功能的更多信息。
对扩展的贡献
Python
运行带覆盖率的测试
您现在可以在 VS Code 中运行带覆盖率的 Python 测试!要运行带覆盖率的测试,请选择测试资源管理器中的覆盖率运行图标或从您通常触发测试运行的任何菜单中选择“运行带覆盖率”。如果您使用的是 pytest,Python 扩展将使用pytest-cov
插件运行覆盖率,或者对于 unittest,使用coverage.py
运行。
覆盖率运行完成后,编辑器中将突出显示行级覆盖率的行。这些行可以通过底部“运行结果”面板中的“关闭测试覆盖率”或“查看测试覆盖率”(在最近的测试运行下方)来关闭和重新打开。此外,测试资源管理器中“测试”选项卡下方会出现一个“测试覆盖率”选项卡,也带有一个烧杯图标,您也可以通过命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))中的测试:聚焦测试覆盖率视图导航到该选项卡。在此面板上,您可以查看工作区中每个文件和文件夹的行和分支覆盖率指标。
有关运行带覆盖率的 Python 测试的更多信息,请参阅我们的Python 文档。有关测试覆盖率的一般信息,请参阅 VS Code 的测试覆盖率文档。
Python 默认问题匹配器
Python 扩展现在包含一个默认问题匹配器,简化了 Python 代码中的问题跟踪并提供了更具上下文的反馈。要集成它,请将"problemMatcher": "$python"
添加到task.json
中的任务。问题匹配器会扫描任务的输出以查找错误和警告,并在“问题”面板中显示它们,从而增强您的开发工作流程。
下面是一个使用 Python 默认问题匹配器的task.json
文件示例
{
"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 之前运行。如果您选择启用,您可以使用终端 shell 集成的功能,例如命令装饰、重新运行命令、运行最近的命令(如果它们在 Mac 或 Linux 中)。您可以通过设置python.terminal.shellIntegration.enabled启用此功能。
Pylance 语言服务器模式
有一个新设置python.analysis.languageServerMode,它使您可以在我们当前的 IntelliSense 体验或针对性能优化的轻量级体验之间进行选择。
如果您不需要完整的 IntelliSense 功能并且更喜欢 Pylance 尽可能地节省资源,您可以将python.analysis.languageServerMode设置为light
。否则,要继续使用您今天使用的 Pylance 体验,您可以将其设置为default
。
此新功能会覆盖以下设置的默认值
设置 | light 模式 |
default 模式 |
---|---|---|
"python.analysis.exclude" | ["**"] | [] |
"python.analysis.useLibraryCodeForTypes" | false | true |
"python.analysis.enablePytestSupport" | false | true |
"python.analysis.indexing" | false | true |
上述设置仍然可以单独更改以覆盖默认值。
GitHub 拉取请求
GitHub 拉取请求扩展程序已取得更多进展,该扩展程序使您能够处理、创建和管理拉取请求和问题。查阅该扩展程序0.98.0 版本变更日志以了解亮点。
扩展开发
删除桌面应用中的自定义分配器
在此版本中,我们删除了在 1.78 版本中添加到桌面应用程序扩展主机中的自定义分配器。此自定义分配器充当桥梁,用于支持与 Electron 运行时构建的 V8 沙盒不兼容的 Node.js 本机插件。您可以参阅此跟踪问题以获取更多上下文。
我们已确保前 5000 个扩展程序不受此更改的影响。如果您的扩展程序或您的扩展程序的依赖项受到此更改的影响,您可以尝试以下补救建议
- 如果您的扩展程序使用n-api,那么在使用外部数组缓冲区时将返回状态
napi_no_external_buffers_allowed
。在这种情况下,您可以切换到使用 API 的副本版本napi_create_buffer_copy。 - 如果您的扩展程序使用node-addon-api,请参阅此文档以获取替代 API 和编译时设置。
- 如果您想避免复制带来的性能开销,您可以使用V8 分配器来确保缓冲区后端存储与 V8 沙盒兼容。
我们还添加了遥测功能,以识别可能受影响的扩展程序和本机插件,以便我们可以主动联系扩展程序作者并尽可能提供帮助。如果您的扩展程序受到影响,并且上述建议均不适用于您,请在我们的讨论帖中发表评论,我们将乐意提供帮助。
调试适配器协议
我们规范了如何在调试适配器协议中对变量显示和输出进行文本着色和样式设置。着色通过 ANSI 控制序列工作,并且要求客户端和调试适配器在它们的初始化请求和功能中分别supportsANSIStyling
。
预览功能
多个 GitHub 帐户
现在可以在 VS Code 中同时登录多个 GitHub 帐户。
此功能在 VS Code Insiders 中默认启用。在 VS Code 的稳定版本中,您可以通过github.experimental.multipleAccounts设置打开此功能。
以下是一些您可能需要多个帐户的场景
- 使用帐户1进行设置同步,使用帐户2进行 GitHub 拉取请求扩展
- 使用帐户1进行 GitHub 扩展(用于推送),使用帐户2进行 GitHub Copilot
要使用此功能,只需触发登录操作(无论是使用设置同步等内置功能还是使用扩展程序),您将获得登录其他帐户的选项。此功能还与新的帐户首选项快速选择器完美结合,如果您需要在后期更改帐户。
虽然大多数功能应该会继续与您现有的扩展程序一起使用,但某些行为可能尚未与此多帐户世界完美配合。如果您认为有改进的空间,请对这些扩展程序提出问题。借助相对较新的vscode.authentication.getAccounts('github')
API,扩展程序有很大的能力来处理多个帐户。
下一个迭代,我们计划默认对所有用户启用此功能。
基于 MSAL 的 Microsoft 身份验证
我们一直在努力将我们的 Microsoft 身份验证堆栈迁移到使用MSAL (Microsoft Authentication Library)。这是一项巨大的工程,但在此迭代中我们取得了巨大进展。这项工作涵盖所有 VS Code 客户端,因此包括 VS Code 和Web 版 VS Code。
-
对于 vscode.dev,我们已为所有 Microsoft 身份验证请求启用了基于浏览器的
MSAL.js
。换句话说,vscode.dev 现在完全基于 MSAL。 -
对于 VS Code 桌面客户端,我们将此功能放在设置microsoft.useMsal之后。目前将其放在设置之后,因为我们计划转向代理流程,这将使 VS Code 能够使用操作系统的身份验证状态。因此,为了尽量减少中断,我们将首先完成这项工作,然后再广泛启用此功能。尽管如此,如果您渴望尝试这种新的身份验证,欢迎您尝试并向我们提供反馈。
您可以在问题 #178740中查看此向 MSAL 过渡在所有 VS Code 中的详细状态。
TypeScript 5.7
此版本包含对即将发布的 TypeScript 5.7 版本的初步支持。有关详细信息,请查看TypeScript 5.7 计划。
要开始使用 TypeScript 5.7 的预览版,请安装TypeScript Nightly 扩展程序。
提议的 API
语言模型工具
我们继续迭代我们的LanguageModelTool
API。该 API 主要包含两部分
-
扩展程序注册工具的能力。工具是旨在供语言模型使用的功能。例如,读取文件的 Git 历史记录。
-
语言模型支持工具的机制,例如扩展在发出请求时传递工具、语言模型请求工具调用以及扩展传回工具调用结果。
在此里程碑中,我们增加了工具在运行前请求用户确认的功能。这对于可能具有某些副作用的工具很有用。
查看问题 #213274以获取更多详细信息或向我们提供反馈。
注意:API 仍在积极开发中,内容可能会发生变化。
工程
VS Code 中正在推出 ESM
我们终于在 VS Code 稳定版本中推出了 ESM 工作。这意味着 VS Code 核心的所有层(electron、node.js、浏览器、workers)都在 JavaScript 中使用import
和export
语法进行模块加载和导出。我们遗留的 AMD 加载器的所有用法都已禁用,并将作为我们 10 月份的债务周的一部分被删除。
转向 ESM 大幅提高了启动性能。一方面,移除了大量 AMD 开销,而且主工作台捆绑包大小也减少了 10% 以上
现在我们已完全转换为 ESM,我们计划改进 VS Code 的工程系统。有了 ESM,许多现代工具将为我们工作,我们非常高兴在不久的将来分享更多关于此的详细信息。
注意:扩展程序不受此更改影响,也不会通过 ESM 加载,请参阅https://github.com/microsoft/vscode/issues/130367了解详细信息。
使用 NPM 作为默认包管理器
自 2024 年 9 月初,我们已完成在microsoft/vscode仓库中将包管理从 yarn 切换到 npm。此决定基于 VS Code 的特定要求,并围绕以下标准:
- 性能:我们最初因为性能原因转向 yarn,现在 npm 也能满足我们的要求
- 安全:我们通过限制暴露和减少我们所依赖的工具数量来提高供应链的安全性
值得注意的修复
感谢
最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢。
问题跟踪
对我们问题跟踪的贡献
拉取请求
对 vscode
的贡献
- @BABA983 (BABA)
- 修复终端选项卡选择不起作用 PR #224394
- 注册折叠导入操作 PR #227216
- @BlackHole1 (Kevin Cui):ci:确保重试逻辑一致性 PR #226038
- @Cecil0o0 (hj):chore:在构建扩展时删除未到达的忽略项。PR #227906
- @dangerman (Anees Ahee):修复图像预览透明度网格缩放 PR #226505
- @g-cappai (Gianluca Cappai):修复 Markdown 预览中打开 HTML 锚链接 PR #228633
- @gabritto (Gabriela Araujo Britto):[typescript-language-features] 可展开的悬停 PR #228255
- @gjsjohnmurray (John Murray)
- 添加操作以预览编辑器选项卡的悬停 PR #226023
- 修复工作区扩展激活失败消息中的拼写错误 PR #227348
- 更正状态栏中调试面板的工具提示大小写 (修复 #228088) PR #228089
- @henricryden:check-requirements-linux.sh 中 libc.so.6 的额外搜索路径 PR #227713
- @janssen-tiobe (janssen):修复:问题面板表格视图中激进的 URI 编码 PR #224841
- @jeanp413 (Jean Pierre):修复重新加载后初始终端尺寸不正确的问题 PR #225554
- @jjaeggli (Jacob Jaeggli):使用 ctrl+alt+space 记录焦点建议详情 PR #190096
- @juliapz (Julia Pozdeeva):防止查找小部件在 AUX 窗口中被裁剪 PR #229001
- @marrej (Marcus Revaj):# 在重构预览中渲染文件创建 PR #226950
- @nojaf (Florian Verdonck)
- 使用 Worker 序列化笔记本 PR #226632
- 在 ErrorNoTelemetry 消息中包含 ID PR #226715
- @PhantomPower82:美化入门页面 (修复 #226991) PR #226994
- @rafamerlin (Rafael Merlin):使内联提示长度可配置 PR #221276
- @rehmsen (Ole)
- 在
setup
中初始化测试变量以避免顺序依赖性。PR #226596 - 支持每个笔记本单元格的多个评论小部件。PR #226770
- 在
- @remcohaszing (Remco Haszing):将 test-results.xml 添加到 .gitignore PR #214238
- @repraze (Thomas Dubosc):修复:在 browser/hover.css 中将 end 替换为 flex-end PR #224102
- @segevfiner (Segev Finer):采用 ext host 重启以用于自定义文本编辑器 PR #225985
- @SimonSiefke (Simon Siefke):修复:调试视图中的内存泄漏 PR #225334
- @sunnylost (sunnylost):extensions:将表格单元格内容包装在段落元素中 PR #228365
- @tisilent (xiejialong):添加编辑器 GPU 渲染回退 PR #228414
- @tmm1 (Aman Karmani):在 macOS 上忽略 tsserver 请求 createDirectoryWatcher(~/Library) PR #227653
对 vscode-docs
的贡献
- @0dinD (Odin Dahlström):更新支持的 Java 版本 PR #7561
- @alexwkleung (Alex Leung):更新输入 Jupyter 服务器 URL 截图 PR #7584
- @DiskCrasher (Mike):修复代码中缺少的“!” PR #7595
- @gaganshera (Gaganjot Singh):更新 prompt-crafting.md PR #7555
- @harish-s-developer (Harish Srinivasan):添加新的依赖项管理部分,修复一个拼写错误 PR #7617
- @harrydowning (Harry Downing):删除关于预发布标签的不正确声明 PR #7593
- @listsarah (Sarah Listzwan):关闭问题 #7536:更新“嵌入式编程语言” PR #7539
- @mistymadonna (Misty Hays):更新 Azure 扩展主页,创建新的入门页面 PR #7520
- @muzimuzhi (Yukai Chou):拼写错误,添加缺少的内联代码标记 PR #7589
- @partev:修复 URL 重定向 PR #7608
- @Sarke (Peter Stalman):另一个 Flatpak/KDE5 钱包变通方案 PR #7606
- @seaniyer (Sean):更新 publishing-extension.md PR #7540
- @vinistock (Vinicius Stock):更新 Ruby 链接以指向新文档 PR #7607
- @wjandrea (William Andrea)
对 vscode-extension-samples
的贡献
- @liu3hao (Weihao):添加缺失的激活事件 PR #1057
对 vscode-js-debug
的贡献
- @lucacasonato (Luca Casonato):修复:不要在 Deno 中注入 NODE_OPTIONS PR #2080
对 vscode-jupyter
的贡献
- @rchiodo (Rich Chiodo):将 debugpy 信息更新到最新发布版本 PR #15967
对 vscode-languageserver-node
的贡献
- @StellaHuang95 (Stella):支持
CodeAction
上的llmGenerated
属性 PR #1557
对 vscode-pull-request-github
的贡献
对 vscode-python-debugger
的贡献
- @rchiodo (Rich Chiodo):将 debugpy 信息更新到最新发布版本 PR #462
对 vscode-vsce
的贡献
- @mlasson (Marc Lasson):修复选项提示中的拼写错误 PR #1046
对vscode-wasm
的贡献
- @mlugg (Matthew Lugg):修复流错误 PR #196
对 language-server-protocol
的贡献
- @aschaber1 (Alexander Schaber):chore:修复
kubernets
到kubernetes
的拼写错误 PR #2013 - @dawedawe (dawe):修复 CompletionParams 文档中的拼写错误 PR #2019
- @didrikmunther (Didrik Munther):修复 pullDiagnostics.md 中的拼写错误 PR #2022
- @InSyncWithFoo (InSync)
- @SamB (Samuel Bronson):更新 servers.md:vscode-markdown-languageserver 已移动 PR #2012
- @sh-cho (Seonghyeon Cho):添加 fluent-bit 语言服务器实现 PR #2016
- @StellaHuang95 (Stella):支持
CodeAction
上的llmGenerated
属性 PR #2020