现已推出!了解 11 月的新功能和修复。

2023 年 4 月(版本 1.78)

更新 1.78.1:此更新解决了此安全 问题

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

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


欢迎使用 Visual Studio Code 的 2023 年 4 月版。此版本中有许多更新,我们希望您会喜欢,其中一些主要亮点包括:

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的 更新

内部人员: 想尽快尝试新功能吗?您可以下载每日 内部人员 构建版本,并在可用时立即尝试最新的更新。

辅助功能

Aria 详细程度设置

屏幕阅读器用户可以通过 "accessibility.verbosity.diff-editor""accessibility.verbosity.terminal" 设置,排除功能的 aria-label 中的提示,以减少冗余。

改进和对齐的快速选择体验

以前,使用辅助功能模式的用户在使用命令面板和其他快速选择时体验到不同的行为。在辅助功能模式下,未选择快速选择的第一项,以便完全可访问。在此迭代中,我们引入了新的行为,允许您兼顾两全:可访问快速的快速选择工作流程,允许您立即点击 Enter

注意:这种方法的一个缺点是,如果选择了快速选择中的某一项,由于 ARIA 限制,您无法听到对快速选择输入框的 ARIA 更改。要听到这些更改,您可以按 Shift + Tab,直到未选择列表中的任何项。

终端

终端辅助功能缓冲区改进

  • 使用 ⌥↓(Windows,Linux Alt+Down⌥↑(Windows,Linux Alt+Up 在命令之间跳转。
  • 使用设置选择锚点从锚点选择到光标,并通过 ⇧PageUp(Windows,Linux Shift+PageUp⇧PageDown(Windows,Linux Shift+PageDown 进行页面导航。
  • 在接受命令转到新位置之前,使用在辅助功能视图中转到符号⇧⌘O(Windows,Linux Ctrl+Shift+O)时预览位置。
  • 在发生动态更新时与输出交互。

终端辅助功能帮助菜单

现在可以使用箭头键导航终端的辅助功能帮助菜单。

Diff 编辑器音频提示改进

VS Code 现在会缓存音频提示,因此它们只需加载一次,从而提高响应速度,并改进了用于 Diff 编辑器的音调。

转到行/列公告

当调用转到行/列...⌃G(Windows,Linux Ctrl+G)时,屏幕阅读器现在会读取关联的行内容。

工作台

新的默认颜色主题

新的“现代深色”和“现代浅色”主题将取代“深色+”和“浅色+”,作为新的默认深色和浅色主题。

Dark Modern and Light Modern color themes

配置文件模板

配置文件允许您根据当前项目或任务快速切换编辑器扩展、设置和 UI 布局。为了帮助您开始使用配置文件,我们正在发布 配置文件模板,这些模板是为不同编程语言和场景策划的配置文件。您可以按原样使用配置文件模板,也可以将其用作进一步自定义以满足您自己的工作流程的起点。

您可以通过配置文件 > 创建配置文件...下拉菜单选择配置文件模板

Create Profile dropdown with profile templates

选择配置文件模板后,您可以查看设置、扩展和其他数据,如果您不想将它们包含在新配置文件中,则可以删除单个项目。

Profiles view showing the contents of the Data Science profile template

在基于模板创建新配置文件后,对设置、扩展或 UI 所做的更改将持久保存到您的配置文件中。

字形边距装饰渲染改进

本月,我们改进了编辑器边距中显示的装饰的渲染。调试相关装饰(例如断点和堆栈帧指针)将始终在编辑器行号旁边渲染。其他装饰渲染在任何调试相关装饰的左侧。这允许您查看断点,即使同一行上有其他装饰,例如测试装饰或书签。请注意,点击尚未限定为单个装饰。

bookmarks displayed next to breakpoint and stack frame pointer decorations

从图像预览中复制图像

现在,您可以使用 ⌘C(Windows,Linux Ctrl+C或通过右键单击预览并选择复制,从内置图像预览中复制图像。复制的图像数据可以粘贴回 VS Code 或其他应用程序中。

编辑器

下拉选择器

VS Code 允许您通过在拖放之前按住 Shift 将文件和内容拖放到文本编辑器中。在此更新中,我们添加了 UI,允许您更改此内容插入文件的方式。例如,在将图像拖放到 Markdown 文件中后,此控件允许您在插入 Markdown 图像、图像的工作区相对路径以及图像的完整路径之间切换

只要您拖放内容并且有不止一种可能的插入方式,就会出现下拉选择器控件。您可以通过单击该控件或使用 ⌘.(Windows,Linux Ctrl+. 打开该控件。只要您开始键入或将光标移到插入的文本之外,下拉选择器就会消失。您还可以使用 "editor.dropIntoEditor.showDropSelector": "never" 完全禁用下拉选择器控件。

VS Code 包括几种内置方式来拖放常见内容格式。扩展还可以使用 DocumentDropEditProvider API 添加自己的拖放选项。

独立颜色选择器

现在可以启动独立的颜色选择器,以便插入和替换颜色。要打开颜色选择器,请从命令面板中选择显示或聚焦独立颜色选择器

Standalone color picker control adjusted to blue color

当扩展程序未提供任何颜色或颜色格式时,颜色选择器将回退为 CSS 格式的颜色。现在还可以在所有文件类型中可视化 CSS 格式颜色的内联颜色装饰。要显示这些装饰器,请启用编辑器:默认颜色装饰器editor.defaultColorDecorators)设置。

用于时区偏移的新代码段变量

现在提供了一个新的代码段变量 CURRENT_TIMEZONE_OFFSET。此变量返回 +HH:MM-HH:MM 格式(例如 -07:00)的当前时区偏移。这对其他与时间相关的代码段变量(如 CURRENT_YEARCURRENT_MONTHCURRENT_DAY_NAME 等)起到了补充作用。

Diff 算法改进

我们继续改进 VS Code 中的新 Diff 算法,并弃用了旧算法。虽然旧算法仍然是 Diff 编辑器的默认设置,但我们将逐渐将默认设置更改为新算法并衡量其性能。

您可以通过将 diffEditor.diffAlgorithm 设置为 advanced(新 Diff 算法)或 legacy(默认)来覆盖默认设置。

新算法在许多情况下会产生更好的 Diff,但对于某些文档可能会较慢。

以下是一些示例(旧算法与新算法)

  • 通过考虑缩进改进了行插入 Diff

    JSON file diff result using legacy algorithm

    JSON file diff result using advanced algorithm

  • 通过考虑空格和分隔符改进了字词插入 Diff

    TypeScript imports word insertion diff using legacy algorithm

    TypeScript imports word insertion diff using advanced algorithm

  • 通过不仅最大限度地减少 Diff 的长度,还最大限度地减少块的数量,使 Diff 更自然

    TypeScript added line diff using legacy algorithm

    TypeScript added line diff using advanced algorithm

  • 如果一个单词的一部分发生了显着变化,则通过将字符级 Diff 扩展到整个单词来减少噪音

    TypeScript code change diff using legacy algorithm

    TypeScript code change diff using legacy algorithm

比较源代码,甚至只是评估差异的质量都是难题,仍然有改进的空间。如果您遇到一个您认为算法可以做得更好的差异,请尝试我们的差异对比演练场,并在我们的问题跟踪器中分享您的反馈和想法!

内联补全改进

在此迭代中,我们重写了内联补全功能并修复了大量错误

最值得注意的是,接受单词现在可以跨行工作,并且有一个新的命令接受行。为了支持此功能,接受下一个单词/行不会再次询问扩展,因为内联补全提供程序扩展在请求下一行的内联补全时通常会报告完全不同的建议。

扩展

改进了扩展推荐通知

扩展推荐通知现在显示推荐扩展的发布者。这有助于您在安装扩展之前做出更明智的决定。以下图片显示了当有单个扩展和多个扩展的推荐时的新通知。

Extension recommendations notification with a single recommendation Extension recommendations notification with multiple recommendations

通知已安装的已弃用扩展

如果您安装了已被弃用的扩展,您现在会收到通知,告知您并建议替代方案。每个已弃用的扩展只会显示一次。

Notification about deprecated extension

源代码管理

源代码管理输入中的快速修复

源代码管理消息框现在支持代码操作和快速修复

例如,Code Spell Checker 扩展会向源代码管理输入添加拼写修复。扩展可以贡献其他修复和代码操作。

GitHub 存储库规则集

VS Code 已经允许您使用 git.branchProtection 设置定义分支保护。此里程碑我们添加了一个新的实验性功能,它使用最近发布的GitHub 存储库规则集来确定分支是否受到保护。如果您正在使用 GitHub 存储库规则集,您可以使用 github.branchProtection 设置启用此功能。

笔记本

将图像文件拖放到笔记本中以创建附件

您现在可以将图像文件拖放到笔记本 Markdown 单元格中以创建附件。当您放下图像时,请使用新的下拉选择器控件选择将图像作为附件插入

Using the drop selector in a notebook Markdown cell

这会将图像作为附件添加到笔记本,而不是简单地添加指向图像的链接

An image file added as an attachment

切换笔记本输出滚动

您现在可以切换单个单元格以在可滚动区域中显示输出,可以通过命令笔记本:切换滚动单元格输出⌘K Y (Windows,Linux Ctrl+K Y)或截断消息中的链接来实现。

查找控件改进

笔记本查找控件现在默认搜索视觉呈现的内容上的关键字。用户可以通过设置 notebook.find.scope 来更改搜索范围(Markdown 源代码、Markdown 预览、代码源代码和代码输出)。此外,在替换匹配项时,Markdown 单元格会转换为可编辑单元格,以便您可以进行替换。完成后,单元格会转换回 Markdown,并且会恢复预览。

语言

将视频拖放到 Markdown 文件中

想要在 Markdown 中插入视频?只需将其拖到编辑器中,然后按住 Shift 将其放到文件中

这会插入一个指向视频文件的 <video> 标签。您可以从 VS Code 的资源管理器或本地操作系统拖动视频。

HTML 中 JavaScript 脚本块的严格 null 值

您现在可以使用 js/ts.implicitProjectConfig.strictNullChecks 设置为 HTML 脚本块中的 JavaScript 启用严格 null 值

Strict nulls in a script block

启用严格 null 值后,当类型可以为空时,悬停和其他 IntelliSense 功能会显示。例如,请注意 el 现在具有 HTMLElement | null 类型。这是因为如果 document.getElementById 找不到具有该 ID 的元素,则会返回 null。

测试

连续运行现在可以为单个测试启用。这需要一个支持连续运行并采用了上次迭代完成的 supportsContinuousRun API 的测试扩展。

Continuous run button highlighted on an individual test

Web 版 VS Code

将文件提交到 Git Large File Storage

Git Large File Storage (LFS) 允许您在 Git 存储库中高效地存储大型文件。github.devvscode.dev 现在支持将文件提交到 GitHub 上托管的存储库中的 Git LFS,从而无需在本地安装 Git 的 LFS 扩展即可从浏览器轻松更新。

当您的存储库的根目录中已经有一个 .gitattributes 文件,该文件指定哪些文件类型应使用 Git LFS 存储时,github.dev 和 vscode.dev 中的 LFS 提交支持开箱即用。要首次为 Git LFS 设置存储库,请参阅Git LFS 文档。

远程开发

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

您可以在远程开发发行说明中了解有关新扩展功能和错误修复的信息。

并查看使用 VS Code 在任何地方开发 VS Code Day 会议。

扩展贡献

Python

不再默认安装 Jupyter 扩展

默认情况下,Jupyter 扩展不再与Python 扩展一起自动安装。此更改是为了响应来自开发容器用户的反馈,他们希望在默认情况下不安装 Jupyter 扩展的情况下更快地创建容器。

如果您有仅列出 Python 扩展的开发容器定义,并希望继续在容器中使用 Jupyter 笔记本功能,则可以将 Jupyter 扩展 ID 添加到您的 devcontainer.json 文件中

  "customizations": {
    "vscode": {
      "extensions": ["ms-python.vscode-pylance", "ms-python.python", "ms-toolsai.jupyter"]
    }
  }

或者,您可以创建一个包含 Python 和 Jupyter 扩展以及任何其他您喜欢的扩展的配置文件

使用 microvenv 创建环境命令

当使用没有安装 venv 包的 Python 发行版调用Python:创建环境命令时,Python 扩展现在使用microvenv作为后备。这可能是基于 Unix 的系统上预安装的 Python 环境的障碍。

Microvenv 是一个轻量级的 Python 模块,它提供了一种用于为您的 Python 项目创建虚拟环境的极简方法。它没有像虚拟环境那样的传统激活脚本,但当您的 Python 发行版中没有 venv 模块时,它可以为创建隔离环境提供一个很好的替代方案。

创建环境命令还将 pip 安装到通过 microvenv 创建的环境中。

格式化程序扩展建议

在之前的版本中,我们发布了用于 Black Formatterautopep8 的新扩展,这些扩展通过语言服务器协议 (LSP) 与 Python 扩展协同工作,以提供 Python 文件的格式化。在此版本中,如果您仍在使用 Python 扩展的内置格式化功能,我们将显示通知,提示您安装这些新扩展。

运行 Python 操作现在位于子菜单中

为了简化右键单击编辑器时可用的 Python 命令,在终端中运行 Python 文件在 Python 终端中运行选择/行命令现在是 运行 Python 条目下的子菜单项。

Run Python option on context menu with "Run file in terminal" and "Run selection/line" options in the submenu

自动转换 f 字符串

有一个新的 "python.analysis.autoFormatStrings" 设置,可以在使用 Pylance 时自动转换 f 字符串。启用后,当您在引号内插入 { 时,Pylance 会自动在字符串开头插入 f

此设置的默认值当前已禁用,但将在即将发布的版本中启用,以等待积极的反馈。如果您对此功能有任何意见或建议,请随时在Pylance GitHub 存储库上分享。

在包含路径的字符串上启用代码导航

还有另一个新的实验性设置,称为 "python.analysis.gotoDefinitionInStringLiteral",它允许从类似模块的字符串字面量中转到定义。如果您正在开发 Web 应用程序(例如 Django 应用程序),并且想要导航到字符串字面量中定义的模块或路径,这将很有帮助

与前面提到的 autoFormatStrings 设置一样,此新设置当前默认禁用。但是,我们计划根据反馈在未来的版本中启用此行为。最终,我们计划完全删除此设置。

Jupyter

重启命令

现在,Jupyter 扩展包含两个新命令,使用户能够直接重启内核并运行单元格。这两个命令是重启内核并运行所有单元格重启内核并运行到选定的单元格,可以通过命令 ID jupyter.restartkernelandrunallcellsjupyter.restartkernelandrunuptoselectedcell 分别访问。

重新连接到繁忙的远程 Jupyter 内核

在之前的版本中,当连接到远程 Jupyter 内核会话时,Jupyter 扩展会等待内核空闲后再进行连接。如果内核正忙于运行长时间的计算,这可能需要很长时间。在此版本中,即使内核繁忙,Jupyter 扩展也会立即连接到内核。这允许你在内核繁忙时中断它。

平台特定的 Jupyter 扩展

Jupyter 扩展现在提供平台特定的扩展,每个 VSIX 都为特定平台(Windows 64 位、Windows 32 位、Linux x64、Alpine x64、macOS Intel、macOS Apple Silicon 等)构建。各个平台的 Jupyter 扩展的下载大小更小,从而缩短了下载时间并减少了磁盘空间使用。

GitHub 拉取请求和 Issues

GitHub 拉取请求和 Issues 扩展取得了更多进展,该扩展允许你处理、创建和管理拉取请求和问题。亮点包括

  • 你可以向拉取请求添加团队审阅者。
  • 所有你可以签出默认分支的地方现在都遵守 git.pullBeforeCheckout 设置。
  • 支持 GitHub 的文件级评论。

查看扩展的0.64.0 版本更新日志,了解其他亮点。

GitHub Copilot

注意:这些功能在 GitHub Copilot Chat 扩展中可用。

聊天编辑器

我们对 GitHub Copilot Chat 的首次迭代在侧边栏中启用了聊天会话。现在,我们支持将相同的聊天视图作为编辑器打开。这允许你自定义聊天会话的位置,使其位于窗口布局中的任何位置。

你可以通过运行命令交互会话:打开编辑器来打开聊天编辑器,然后像使用其他任何编辑器一样将其在编辑器组之间移动。

A chat view as an editor

其他代码块命令

代码块工具栏中有两个新命令,插入到新文件在终端中运行。它们位于现有命令复制在光标处插入旁边,为你提供了更多快速处理 Copilot 返回的代码建议的选项。

The codeblock toolbar showing the two new codeblock commands

代码操作和内联聊天

编辑器聊天会话现在与快速修复集成。选择波浪线旁边的灯泡,可以使用 Copilot 进行修复或解释的选项。

除了代码操作,现在还可以从编辑器上下文菜单中使用内联聊天。

内联聊天模式

现在有一个设置可以更改内联聊天的不同模式:inlineChat.editMode

选项如下

  • live - 将 AI 建议的更改直接应用到编辑器(默认)。
  • livePreview - 应用更改,但在嵌入式差异编辑器中呈现它们。
  • preview - 在断开连接的嵌入式差异编辑器中显示更改。

命令面板中的相似命令

借助 Copilot 的强大功能,命令面板现在能够显示相似的命令结果。要启用此功能,你必须拥有有效的 Copilot 订阅,处于聊天视图的私有预览中,并应用以下设置

"workbench.commandPalette.experimental.useSemanticSimilarity": true

以下是一些示例

  • “打开自动保存”被解释为切换自动保存

    query "turn on autosave" is correctly resolved to Toggle Auto Save

  • “添加函数”在底部包含扩展的额外结果

    query "add function" including Azure Functions Create Function command

  • 最后,如果你的结果没有产生任何结果,你可以询问 GitHub Copilot,这将把你的过滤器框中的内容放入一个新的聊天中,供 Copilot 处理。

    Ask GitHub Copilot "no results" option in the Command Palette

我们将在这一领域进行迭代,敬请关注!

预览功能

TypeScript 5.1 支持

此更新包括对即将发布的 TypeScript 5.1 版本的支持。阅读TypeScript 5.1 Beta 博客文章TypeScript 5.1 迭代计划,了解有关 TypeScript 团队当前正在进行的工作的更多详细信息。一些编辑器工具亮点包括

  • 对 JSX 标签的链接编辑支持。
  • 用于 @param JSDoc 标签的代码片段补全。

要开始使用 TypeScript 5.1 夜间构建,请安装TypeScript Nightly 扩展。

使用 F2 重命名匹配的 JSX 标签

当你在 JSX 标签上触发重命名时,VS Code 现在只重命名匹配的标签,而不是尝试更新对该标签的所有引用

这需要 TypeScript 5.1+,并且与 HTML 中的重命名工作方式相匹配。

你可以使用 javascript.preferences.renameMatchingJsxTagstypescript.preferences.renameMatchingJsxTags 来禁用此行为。

扩展创作

工作区编辑现在可以直接从 DataTransferFile 创建文件

拖放到编辑器 API 的主要用途之一是将拖放的文件/内容写入工作区。但是,在之前的 VS Code 版本中,对于大型文件,这可能相当慢。这是因为文件内容最终在进程之间复制两次:首先从渲染器到扩展主机以读取文件内容,然后再从扩展主机返回到渲染器以写入文件。

class CreateFileDropProvider implements vscode.DocumentDropEditProvider {
  async provideDocumentDropEdits(
    _document: vscode.TextDocument,
    _position: vscode.Position,
    dataTransfer: vscode.DataTransfer,
    _token: vscode.CancellationToken
  ): Promise<vscode.DocumentDropEdit | undefined> {
    const pngFile = dataTransfer.get('image/png')?.asFile();
    if (!pngFile) {
      return;
    }

    // Read file
    // This results in the entire file contents being copied over to the extension host.
    const contents = await pngFile.data();

    // Now create a workspace edit that writes the file into the workspace
    // This results in the same file contents from above being copied back again.
    const additionalEdit = new vscode.WorkspaceEdit();
    const path = vscode.Uri.joinPath(
      vscode.workspace.workspaceFolders![0].uri,
      'image.png'
    );
    additionalEdit.createFile(path, { contents });

    const edit = new vscode.DocumentDropEdit(path.fsPath);
    edit.additionalEdit = additionalEdit;
    return edit;
  }
}

现在,你可以通过直接将 DataTransferFile 传递给 WorkspaceEdit.createFile 来避免这些额外的复制。

additionalEdit.createFile(path, { contents: pngFile });

这应该会显著提高性能,尤其是在处理较大文件时。

在 resolveCodeAction 中解析代码操作命令

CodeActionProvider 现在可以在 resolveCodeAction 中延迟解析 CodeAction 的命令。以前只能延迟解析代码操作的编辑内容。

如果命令的计算成本很高,这允许 CodeActionProvider 将此工作推迟到要应用代码操作时。

编辑器/行号/上下文菜单

我们已最终确定 editor/lineNumber/context 菜单。这允许扩展作者向锚定到编辑器行号和字形边距的上下文菜单贡献操作。贡献给此菜单的操作在命令参数中接收行号,并且可以在其 when 子句中引用 editorLineNumber 上下文键。

身份验证 API 改进

身份验证会话首选项现在是工作区感知的

对于支持同时登录多个帐户的身份验证提供程序(例如 Microsoft),当调用带有 createIfNone: truevscode.authentication.getSession 时,会提示用户选择要使用的帐户。

以前的行为

此首选项会被记住,直到使用 ClearSessionPreference 标志调用 vscode.authentication.getSession 为止。

新行为

此首选项会按每个工作区记住,直到在该工作区中使用 ClearSessionPreference 标志调用 vscode.authentication.getSession 为止。

引入此行为是为了允许扩展程序对不同的工作区使用不同的帐户,并记住这些首选项。

注意:该首选项是特定于扩展程序的。因此,如果一个扩展程序调用 vscode.authentication.getSession,它不会影响另一个调用 vscode.authentication.getSession 的扩展程序的会话首选项。

桌面版中的 Microsoft 主权云支持

在此迭代中,我们在核心产品中引入了一个新的身份验证提供程序:Microsoft Sovereign Cloud。此提供程序用于对用户进行身份验证,以访问 Microsoft Cloud for Sovereignty,例如 Azure US Government、Azure China 等。在底层,它的工作方式与 Microsoft 身份验证提供程序相同,只是使用不同的 URL。如果你想使用此身份验证提供程序,可以指导用户设置 microsoft-sovereign-cloud.endpoint 值,该值具有几个默认值,但也支持自定义主权云 URL。

请记住,大多数用户没有主权云帐户。我们的建议是,如果你想支持主权云,你应该允许用户通过主权云登录,但不将其作为主线工作流的一部分,以免混淆用户。

提议的 API

每个里程碑都附带新的提议 API,扩展作者可以试用它们。与往常一样,我们希望得到你的反馈。以下是试用提议 API 的步骤

  1. 找到你想尝试的提议,并将其名称添加到 package.json#enabledApiProposals
  2. 使用最新的 vscode-dts 并运行 vscode-dts dev。它会将相应的 d.ts 文件下载到你的工作区中。
  3. 现在你可以针对该提议进行编程。

你不能发布使用提议 API 的扩展。下一个版本中可能会有重大更改,我们绝不想破坏现有扩展。

格式化多个范围

DocumentRangeFormattingEditProvider API 有一个可选的提议函数,用于支持一次格式化多个范围。通过采用此 API,提供程序可以改进格式化修改范围流程,因为只需要向语言服务发出单个请求。

文档拖放元数据

这个新的提议丰富了现有的拖放到编辑器 API,以支持新的拖放选择器。提供程序可以使用它来提供更好的拖放到编辑器体验。

此提议的第一部分向 DocumentDropEdit 添加了一个 label 属性。这个人类可读的标签描述了编辑,并显示在拖放选择器 UI 中

Labels shown in the drop selector

第二部分向 registerDocumentDropEditProvider 添加了一个额外的 metadata 参数。此元数据参数标识提供程序,并告诉 VS Code 它适用于的内容类型

vscode.languages.registerDocumentDropEditProvider(
  'markdown',
  new InsertBase64ImageProvider(),
  {
    // Unique id that identities this provider
    id: 'insertBase64Image',

    // Array of mime types, such as `image/png` or `text/plain`, that this provider supports.
    // You can also use wildcards, such as `image/*` which matches any image content that is dropped.
    dropMimeTypes: ['image/*']
  }
);

dropMimeTypes 数组可以帮助提高性能,因为你的提供程序仅针对相关的拖放内容调用。

工程

Electron 22 更新

在这个里程碑中,我们完成了对扩展主机使用自定义分配器的实验,并准备将 Electron 22 打包到 VS Code Desktop 中。我们要感谢所有参与 Insiders 构建 自托管并提供早期反馈的人员。此更新附带 Chromium 108.0.5359.215 和 Node.js 16.17.1

VS Code Day

你可以通过 VS Code Day 2023 YouTube 播放列表来了解 VS Code Day 的所有亮点。在那里,你会找到有关以下主题的会议:GitHub Copilot数据科学TypeScript,以及 Erich Gamma 和 Kai Maetzel 的主题演讲,他们在其中解释了团队如何构建和交付 VS Code。

感谢

最后但同样重要的是,非常感谢 VS Code 的贡献者。

问题跟踪

对我们的问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-js-debug 的贡献

vscode-json-languageservice 的贡献

  • @zardoy (Vitaly)
    • [completions] 始终显示诸如 Default value 之类的详细信息 PR #183
    • [completion] 当 uniqueItems: true 时,不建议重复项 PR #184

vscode-pull-request-github 的贡献

monaco-editor 的贡献

devcontainers/cli 的贡献