2024 年 9 月(版本 1.94)
更新 1.94.1:此更新解决了此安全问题。
更新 1.94.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel silicon | 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 聊天中拥有一个 Copilot 聊天模型选择器控件,用于选择要用于聊天对话的模型版本。
内联聊天中的 GPT-4o
我们已将 Copilot 内联聊天升级到 GPT-4o,以便在您在编辑器中使用聊天时,为您提供更快、更准确和更高质量的代码和解释。
聊天中的公共代码匹配
您可以允许 GitHub Copilot 返回可能与 GitHub.com 上公开可用的代码匹配的代码。当为您的组织订阅或个人订阅启用此功能后,Copilot 代码完成功能已经为您提供了有关检测到的匹配项的详细信息。现在,我们还在 Copilot 聊天中向您显示这些公共代码的匹配项。
如果为您的组织或订阅启用了此功能,您可能会在响应末尾看到一条带有查看匹配项链接的消息。如果您选择该链接,将打开一个编辑器,其中显示与匹配代码引用相关的更多详细信息。
在 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 聊天中使用 @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.multiCursor.enabled 在单元格之间进行多光标编辑。目前,这只能通过快捷键 Ctrl+D 触发,并支持核心编辑器操作以及有限的编辑器命令子集。
差异编辑器显示文档元数据更改
笔记本差异编辑器现在还显示对文档元数据所做的更改,例如内核信息和单元格语言。
折叠差异视图中未更改的区域
笔记本差异视图现在遵循设置 diffEditor.hideUnchangedRegions.enabled。启用后,未更改的代码块默认折叠,这使得审查大型笔记本中的更改更加容易。
Web Worker 中的笔记本序列化(实验性)
此版本引入了一项实验性功能,该功能允许在 Web Worker 中进行笔记本序列化。当您处理大型笔记本时,这有助于减少扩展主机进程中的主线程阻塞时间。默认情况下,此功能处于禁用状态,但可以通过将 ipynb.experimental.serialization 设置为 true
来启用。
调试
支持数据着色
VS Code 支持调试适配器协议中的新文本样式功能。这使得变量视图、监视视图、悬停和调试控制台中的数据可以通过 ANSI 转义序列进行着色。
JavaScript 调试器
改进了 HTML 元素的显示
我们改进了 HTML 元素在 JavaScript 调试器中的显示方式。以前,它们被呈现为简单的对象,难以导航。现在,它们更接近 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.preferences.autoImportSpecifierExcludeRegexes 用于 JavaScript,typescript.preferences.autoImportSpecifierExcludeRegexes 用于 TypeScript 来配置此项。有关更多详细信息,请参阅 TypeScript 5.6 发行说明
远程开发
远程开发扩展允许您使用 Dev 容器、通过 SSH 或 远程隧道的远程计算机,或 Windows Subsystem for Linux (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 Pull Requests
在 GitHub Pull Requests 扩展上取得了更多进展,该扩展使您可以处理、创建和管理 pull request 和 issue。查看扩展 0.98.0 版本的更新日志,了解亮点。
扩展创作
移除桌面应用中的自定义分配器
在此版本中,我们移除了在 1.78 版本中添加到桌面应用程序扩展主机的自定义分配器。此自定义分配器充当桥梁,用于支持与 Electron 运行时构建的不兼容 V8 沙箱的 Node.js 原生插件。您可以参考此跟踪 issue 以获取更多上下文信息。
我们已确保前 5000 个扩展不受此更改的影响。如果您的扩展或扩展的依赖项受此更改影响,您可以尝试以下修复建议
- 如果您的扩展使用 n-api,则在使用外部数组缓冲区时将返回状态
napi_no_external_buffers_allowed
。在这种情况下,您可以切换到使用 API 的复制版本 napi_create_buffer_copy。 - 如果您的扩展使用 node-addon-api,则请参考此 文档 以获取替代 API 和编译时设置。
- 如果您想避免复制带来的性能成本,可以使用 V8 分配器 以确保缓冲区后备存储与 V8 沙箱兼容。
我们还添加了遥测功能,以识别可能受影响的扩展和原生插件,以便我们可以主动联系扩展作者并在可能的情况下提供帮助。如果您的扩展受到影响,并且以上建议均不适用于您,请在我们的 讨论帖 中评论,我们将很乐意提供帮助。
调试适配器协议
我们正式确定了如何在 Debug Adapter Protocol 中变量和输出的显示中对文本进行着色和样式设置。着色通过 ANSI 控制序列工作,并且需要客户端和调试适配器在其初始化请求和功能中分别 supportsANSIStyling
。
预览功能
多个 GitHub 帐户
现在可以在 VS Code 中同时登录到多个 GitHub 帐户。
此功能在 VS Code Insiders 中默认启用。在 VS Code 稳定版中,您可以使用 github.experimental.multipleAccounts 设置来启用此功能。
以下是您可能需要多个帐户的几种情况
- 使用 帐户 1 进行设置同步,使用 帐户 2 进行 GitHub Pull Request 扩展
- 使用 帐户 1 进行 GitHub 扩展(用于推送),使用 帐户 2 进行 GitHub Copilot
要使用此功能,只需触发登录操作(通过内置功能(如设置同步)或扩展),您将可以选择登录到不同的帐户。如果您以后需要更改帐户,此功能与新的 帐户首选项快速选择 功能配合使用效果更佳。
虽然大多数内容应该继续与您现有的扩展一起使用,但某些行为可能还不能完美地适应这个多帐户世界。如果您认为有改进的空间,请在这些扩展上打开 issue。借助相对较新的 vscode.authentication.getAccounts('github')
API,扩展在处理多个帐户方面具有很大的能力。
在下一次迭代中,我们计划为所有用户默认启用此功能。
基于 MSAL 的 Microsoft 身份验证
我们一直在朝着让我们的 Microsoft 身份验证堆栈使用 MSAL (Microsoft Authentication Library) 的方向发展。这是一项巨大的工程,但我们在此迭代中取得了巨大进展。这项工作涵盖所有 VS Code 客户端,包括 VS Code 和 VS Code for the Web。
-
对于 vscode.dev,我们已为所有 Microsoft 身份验证请求启用了基于浏览器的
MSAL.js
。换句话说,vscode.dev 现在完全基于 MSAL。 -
对于 VS Code 桌面客户端,我们在设置 microsoft.useMsal 背后提供了此功能。目前它位于设置之后,因为我们计划朝着 代理流 方向发展,这将使 VS Code 能够使用操作系统的身份验证状态。因此,为了尽可能减少中断,我们将首先完成这项工作,然后再广泛启用它。也就是说,如果您渴望尝试这种新的身份验证方式,欢迎您试用并向我们提供反馈。
您可以在 Issue #178740 中查看 VS Code 中 MSAL 过渡的详细状态。
TypeScript 5.7
此版本包含对即将发布的 TypeScript 5.7 版本的初始支持。查看 TypeScript 5.7 计划 以了解详细信息。
要开始使用 TypeScript 5.7 的预览版本,请安装 TypeScript Nightly 扩展。
建议的 API
语言模型工具
我们继续迭代我们的 LanguageModelTool
API。该 API 包含两个主要部分
-
扩展注册工具的能力。工具是旨在由语言模型使用的功能片段。例如,读取文件的 Git 历史记录。
-
语言模型支持工具的机制,例如扩展在发出请求时传递工具,语言模型请求工具调用,以及扩展将工具调用的结果传回。
在此里程碑中,我们添加了工具在运行前请求用户确认的功能。这对于可能具有某些副作用的工具很有用。
查看 issue #213274 以了解更多详细信息或向我们提供反馈。
注意:该 API 仍在积极开发中,并且内容可能会发生变化。
工程
ESM 正在 VS Code 中发布
我们最终在 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 月初开始,我们完成了 从 yarn 切换到 npm 以在 microsoft/vscode 仓库中进行包管理的切换。此决定基于 VS Code 的特定要求,并围绕以下标准展开
- 性能:我们最初出于性能原因迁移到 yarn,而 npm 现在也可以满足我们的要求
- 安全性:我们通过限制暴露并减少我们依赖的工具数量来提高供应链的安全性
值得注意的修复
- 226401 fileWatcher 持续消耗 CPU,占用率超过 200%
- 10054 [WSL]: 当
localhostForwarding = false
时,“端口”选项卡错误地报告 WSL 中的端口被转发到本地
感谢
最后但同样重要的是,非常感谢 VS Code 的贡献者。
Issue 跟踪
对我们的 issue 跟踪的贡献
Pull Requests
对 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 序列化 Notebook PR #226632
- 在 ErrorNoTelemetry 消息中包含 id PR #226715
- @PhantomPower82: 优化入门页面 (修复 #226991) PR #226994
- @rafamerlin (Rafael Merlin): 使 Inlay hint 长度可配置 PR #221276
- @rehmsen (Ole)
- 在
setup
中初始化测试变量以避免顺序依赖性。 PR #226596 - 支持每个 Notebook 单元格的多个评论小部件。 PR #226770
- 在
- @remcohaszing (Remco Haszing): 将 test-results.xml 添加到 .gitignore PR #214238
- @repraze (Thomas Dubosc): fix: 在 browser/hover.css 中将 end 交换为 flex-end PR #224102
- @segevfiner (Segev Finer): 为自定义文本编辑器采用扩展主机重启 PR #225985
- @SimonSiefke (Simon Siefke): fix: 调试视图中的内存泄漏 PR #225334
- @sunnylost (sunnylost): extensions: 将表格单元格内容包装在段落元素中 PR #228365
- @tisilent (xiejialong): 添加编辑器 GPU 渲染回退 PR #228414
- @tmm1 (Aman Karmani): 忽略 macOS 上 createDirectoryWatcher(~/Library) 的 tsserver 请求 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): 为了关闭 Issue #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): fix: 不在 Deno 中注入 NODE_OPTIONS PR #2080
对 vscode-jupyter
的贡献
- @rchiodo (Rich Chiodo): 使 display_name 更改也触发内核更改事件 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