2023年6月(版本1.80)

更新 1.80.1: 本次更新解决了这些问题

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

下载:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


欢迎来到2023年6月发布的Visual Studio Code。此版本中有许多更新,我们希望您会喜欢,一些关键亮点包括:

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

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

可访问性

可访问视图

一个新的命令打开辅助视图 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 允许屏幕阅读器用户逐字符、逐行检查内容。当悬停或聊天面板响应获得焦点时调用此命令。

可访问性帮助改进

一个新的命令打开辅助功能帮助 (⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1)) 会根据当前上下文打开一个帮助菜单。它目前适用于编辑器、终端、笔记本、聊天面板和内联聊天功能。

禁用辅助功能帮助菜单提示,并从帮助菜单中打开其他文档(如果有的话)。

笔记本的无障碍帮助

为笔记本添加了一个新的辅助功能帮助菜单,以提供有关编辑器布局以及导航和与笔记本交互的信息。

聊天音频提示

现在为GitHub Copilot聊天体验提供了音频提示,可以通过audioCues.chatRequestSentaudioCues.chatResponsePendingaudioCues.chatResponseReceived启用。

聊天可访问性改进

聊天响应一旦到达就会提供给屏幕阅读器,内联和聊天面板的可访问性帮助菜单包含了关于预期内容和如何与每个功能交互的更详细信息。

设置编辑器替代文本改进

设置编辑器(可通过Preferences: Open Settings (UI)命令访问)在使用屏幕阅读器导航时现在不那么冗长。特别是,设置范围切换器会宣布范围的实际名称而不是文件路径,并且设置描述的替代文本已经清理,不再包含原始的Markdown格式。

在Windows上使用NVDA导航设置编辑器

工作台

预览视频的自动播放和循环

您现在可以为内置视频文件预览启用视频自动播放和循环播放。相关设置如下:

  • mediaPreview.video.autoPlay — 启用视频自动播放。自动播放的视频会自动静音。
  • mediaPreview.video.loop — 启用视频循环播放。

这些设置默认是关闭的。

编辑器只读时的更多帮助

随着VS Code上一个里程碑中只读模式的引入,编辑器可能由于工作区配置而变为只读。

在这个里程碑中,我们增强了编辑器中当你尝试在只读编辑器中输入时的通知消息,并在某些情况下提供了一个链接来更改files.readonly设置。

默认文件对话框位置

一个新的设置 files.dialog.defaultPath 可以配置文件对话框(例如在打开或保存文件或文件夹时)打开时应显示的默认位置。此默认值仅在不知道其他位置时作为备用使用,例如在空的 VS Code 窗口中。

禁用双击标签时最大化编辑器组

一个新的设置 workbench.editor.doubleClickTabToToggleEditorGroupSizes 禁用了在双击该组的标签时,将编辑器组的大小从最大化切换为恢复的功能。

控制固定宽度标签的最小宽度

一个新的设置 workbench.editor.tabSizingFixedMinWidth 控制当 workbench.editor.tabSizing 设置为 fixed 时标签的最小尺寸。固定标签宽度的更多详细信息在 1.79 发布说明 中有解释。

编辑器组分割大小已更改为“自动”

workbench.editor.splitSizing 设置的一个新值 auto 是新的默认值。在这种模式下,如果没有任何编辑器组被调整大小,拆分编辑器组会将可用大小均匀分配给所有编辑器组。否则,拆分编辑器组的空间将被分成两半,并放置在新的编辑器组中。

此更改的目的是在您拆分时不会破坏您创建的布局,但仍然保留之前均匀分配大小的默认行为。

搜索 .gitignore 排除行为

search.useIgnoreFiles设置为true时,无论工作区是否初始化为Git仓库,现在都会尊重工作区的.gitignore

评论的最大高度

设置 comments.maxHeight 允许您禁用评论的最大高度限制,例如在使用 GitHub Pull Requests and Issues 扩展时显示的拉取请求评论。

在VS Code中排查问题

在命令面板中有一个新命令帮助:故障排除,可以帮助你在VS Code中排查问题。启动的工作流程通过使用特殊的故障排除配置文件和VS Code的扩展二分查找功能来帮助你识别问题的原因。扩展二分查找会在你指示问题是否重现时,以二分查找的方式启用和禁用已安装的扩展。这有助于缩小导致问题的扩展范围,并在报告问题时提供正确的信息。

禁用 Chromium 沙盒

如果您有不可避免需要以提升权限用户启动VS Code桌面的场景,例如在Linux上使用sudo启动VS Code,或在Windows的AppLocker环境中以管理员身份启动,那么您需要使用--no-sandbox --disable-gpu-sandbox命令行选项启动VS Code,以使应用程序按预期工作。

根据问题 #184687中的反馈,现在有两个新的设置,以便在需要禁用Chromium沙箱时更加方便:

  1. 一个新的命令行选项 --disable-chromium-sandbox 用于禁用应用程序中所有进程的 Chromium 沙盒。这个新选项可以替代 --no-sandbox --disable-gpu-sandbox。此选项适用于未来版本中运行时可能添加的任何新进程沙盒。

  2. 要在启动时持续禁用Chromium沙箱,请执行以下操作:

    • Open the Command Palette (⇧⌘P (Windows, Linux Ctrl+Shift+P)).
    • Run the Preferences: Configure Runtime Arguments command.
    • This command opens a argv.json file to configure runtime arguments. You might see some default arguments there already.
    • Add "disable-chromium-sandbox": true.
    • Restart VS Code.

注意:除非你遇到问题,否则不要使用此设置!

编辑器

在缩小和扩大选择时跳过子词

扩展缩小选择命令现在可以配置为跳过子词。这是通过editor.smartSelect.selectSubwords设置完成的。默认情况下,子词会被选中,但现在可以禁用此功能。

  • true -> Co|deEditor 选择 [Code]Editor, 然后 [CodeEditor]
  • false -> Co|deEditor 选择 [CodeEditor]

当您经常使用多个光标在异构单词上进行扩展和缩小选择时,此设置非常有用。

在JSX/TSX中改进的CSS模块Emmet支持

Emmet 支持一组新的 JSX/TSX 文件缩写。通过在 JSX 或 TSX 文件中输入 ..test 并展开缩写,会添加一行

属性名称和值前缀可以通过emmet.syntaxProfiles设置进行配置。通过如下配置emmet.syntaxProfiles设置:

"emmet.syntaxProfiles": {
    "jsx": {
        "markup.attributes": {
            "class*": "className",
        },
        "markup.valuePrefix": {
            "class*": "myStyles"
        }
    }
}

然后在JSX或TSX文件中展开缩写..test,你会得到缩写

可调整大小的内容悬停

现在可以调整内容悬停控件的大小。您可以悬停在控件边框上并拖动边框以更改悬停的大小。

终端

图像支持

终端中的图像,在上一个版本中预览过,现在默认启用。终端中的图像通常通过将图像像素数据编码为文本来工作,这些文本通过特殊的转义序列写入终端。当前支持的协议是sixeliTerm首创的内联图像协议

要手动测试图像,你可以从libsixel仓库下载并cat一个.six示例文件:

使用sixel文件运行猫将打印图像

或者使用imgcat python包imgcat脚本与.png、.gif或.jpg文件:

使用png文件运行imgcat将打印图像

此功能可以通过设置来禁用:

"terminal.integrated.enableImages": false

现在支持新的链接格式,包括需要向上扫描以找到文件的链接以及具有范围(行到行或字符到字符)的链接。

  • @@ git 范围链接:

    现在可以检测到以'@@ - + @@'样式的git链接

  • OCAML的Dune风格范围链接:

    现在可以检测到样式为'文件
    现在可以检测到样式为'文件
    现在可以检测到样式为'文件

  • ESLint风格的多行链接:

    现在可以检测到ESLint中以'line:col'为前缀的结果的链接

  • Ripgrep风格的多行链接:

    从ripgrep中链接的结果现在会以'line:'为前缀进行检测

已移除的废弃shell和shellArgs设置

设置 terminal.integrated.shell.*terminal.integrated.shellArgs.* 在一年多前已被 终端配置文件 取代,并且刚刚被移除。如果您仍在使用旧的 shellshellArgs 设置,这里有一个迁移前后的示例来帮助您进行迁移:

// Before
{
  "terminal.integrated.shell.windows": "pwsh.exe",
  "terminal.integrated.shellArgs.windows": ["-Login"],

  "terminal.integrated.shell.osx": "bash",
  "terminal.integrated.shellArgs.osx": ["-l"],
}

// After
{
  "terminal.integrated.profiles.windows": {
    "PowerShell Login": {
      // Source is a special property that will use VS Code's logic to detect
      // the PowerShell or Git Bash executable.
      "source": "PowerShell",
      "args": ["-Login"],
      "icon": "terminal-powershell"
    },
  },

  "terminal.integrated.profiles.osx": {
    // This will override the builtin bash profile
    "bash": {
      "path": "bash",
      "args": ["-l"],
      "icon": "terminal-bash"
    }
  }
}

测试

终端输出支持

以前,在测试结果视图中显示的测试输出总是显示在嵌入式文本编辑器中。这剥夺了它在终端中运行时可能具有的丰富样式,如颜色、样式和符号。在此版本中,我们在真正的xterm.js终端中显示输出。

测试结果面板中显示的结果带有绿色勾号

主题: Codesong (在 vscode.dev 上预览)

现在测试结果视图功能齐全,显示测试输出的命令已被重定向以打开测试结果视图,而不是创建临时终端。

源代码控制

关闭仓库改进

过去,用户可以使用Git: Close Repository命令或源代码控制视图中的Close Repository操作来关闭仓库,但某些操作(例如,从已关闭的仓库中打开文件)会重新打开已关闭的仓库。在这个里程碑中,我们进行了一些改进,因此仓库关闭的状态现在会针对每个工作区进行持久化。用户可以使用Git: Reopen Closed Repositories...命令重新打开已关闭的仓库。

笔记本

远程开发的保存性能改进

以前,在VS Code的远程扩展中保存笔记本需要将整个笔记本发送到扩展主机,这对于大型笔记本或启用了自动保存的慢速网络连接来说可能会很慢。我们通过仅将笔记本的更改发送到扩展主机来提高性能,从而实现更快的笔记本保存和执行。虽然此功能默认仍处于禁用状态,但我们相信很快就能启用它。要尝试此功能,请将"notebook.experimental.remoteSave": true添加到您的设置中。更多详情,您可以关注issue #172345

Notebook 全局工具栏重新设计

笔记本编辑器的全局工具栏已重新编写,以采用工作台工具栏,允许用户对工具栏操作进行更大的自定义。用户现在可以右键单击并从工具栏中隐藏操作。右键单击工具栏中的操作会显示隐藏该操作的选项,还可以重置菜单并恢复隐藏的操作。

工具栏继续与所有三种标签策略一起工作:alwaysneverdynamic。您可以通过设置 notebook.globalToolbarShowLabel 来更改标签策略。

主题: Monokai Pro (Filter Ristretto) (在 vscode.dev 上预览)

交互式窗口备份和恢复

Python 交互窗口现已完全集成热退出功能,并在 VS Code 重新加载时恢复编辑器状态。interactiveWindow.restore 设置不再有效,并已被移除。

如果热退出被禁用,关闭VS Code时会有一个提示,让你选择将编辑器状态保存为.ipynb文件。

_主题: Bearded Theme feat. Gold D Raynh (在 vscode.dev 上预览)

语言

Markdown 从预览中复制图片

Markdown预览中的图像新添了一个上下文菜单,允许您从预览中复制图像并粘贴到Markdown编辑器中。复制图像时,预览编辑器必须处于焦点状态。

新的markdown.editor.pasteUrlAsFormattedLink.enabled设置(默认false)允许您在Markdown编辑器中插入链接,这些链接会自动格式化为Markdown链接。如果您选择了一些文本以替换为粘贴的链接,所选文本将自动成为链接的标题。如果未选择文本,将使用默认的链接标题。此功能适用于外部浏览器链接以及工作区内的文件。

您必须启用设置 editor.pasteAs.enabled 才能使此新设置生效。

远程开发

Remote Development extensions 允许您使用 Dev Container、通过 SSH 连接的远程机器或 Remote Tunnels,或者 Windows Subsystem for Linux (WSL) 作为全功能的开发环境。

您可以在远程开发发布说明中了解新扩展功能和错误修复。

远程菜单

在这个里程碑中,我们更新了远程菜单,添加了一些条目,以帮助您通过安装必要的扩展快速安装并开始使用远程连接(SSH、远程隧道GitHub Codespaces等)。欢迎页面上还有一个连接到...的起始条目,帮助您从VS Code桌面开始使用远程连接。

我们还在vscode.dev的欢迎页面上更新了一个开始入口,用于连接到远程隧道。

通过隧道的WSL

上次迭代中,我们预览了通过远程隧道连接到WSL的功能。此功能在此次迭代中已稳定。如果您在安装了WSL的Windows机器上运行远程隧道,您可以选择直接从远程资源管理器连接到WSL。

远程隧道视图,带有连接到WSL的选项

主题: Codesong (在 vscode.dev 上预览)

此功能现在可以在VS Code桌面版以及vscode.dev上使用。如果您已经在Windows设备上运行了隧道,请确保将VS Code更新到最新版本以启用此功能。

对扩展的贡献

GitHub Copilot

我们在聊天视图中引入了仅预览的斜杠命令,以帮助您创建项目和笔记本,并在您的工作区中搜索文本。

注意: 要访问聊天视图、内联聊天和斜杠命令(例如 /search, /createWorkspace),您需要安装 GitHub Copilot Chat 扩展。

创建工作区

你可以使用/createWorkspace斜杠命令要求Copilot为流行的项目类型创建工作空间。Copilot将首先为你的请求生成一个目录结构。

然后你可以使用创建工作区按钮来创建并打开项目目录作为一个新的工作区。

使用GitHub Copilot创建并打开工作区

创建笔记本

你可以使用/createNotebook斜杠命令要求Copilot根据你的需求创建Jupyter笔记本。Copilot将根据你的需求生成笔记本的概要。

然后,您可以使用创建笔记本命令来创建笔记本,并根据建议的大纲填写代码单元格。

生成搜索参数

你可以要求Copilot自动填充工作区搜索中的搜索参数。为此,请使用/search命令,后跟你想要在文本中找到的内容的描述。

这些预览斜杠命令可以通过如下配置github.copilot.advanced设置来启用:

"github.copilot.advanced": {
   "slashCommands": {
      "createWorkspace": true,
      "createNotebook": true,
      "search": true
   }
}

Copilot YouTube 播放列表

YouTube上的VS Code Copilot系列中有一个新的部分,涵盖了Copilot for PowerShell。如果你错过了这个系列,你还可以找到其他关于特定语言的讨论和关于有效提示的指导,这些都是在使用Copilot进行开发时的内容。

Python

Mypy 扩展

现在有一个Mypy Type Checker扩展,它使用mypy为Python提供类型检查支持,目前作为预发布版本提供预览。这个新扩展可以在整个代码库中提供错误和警告,而不仅仅是当前文件。它还使用dmypy来加快类型检查的速度。

如果您在使用此新扩展时遇到任何问题或希望提供反馈,您可以在Mypy扩展GitHub仓库中提交问题。

Debugpy 扩展

当Python扩展停止支持Python 2.7和Python 3.6时,我们收到了许多用户的反馈,他们无法将代码库升级到最新版本的Python,并且失去了使用最新版本Python扩展调试应用程序的能力。为了解决这个问题,我们创建了一个名为Debugpy的独立Python调试器扩展。通过将调试器与Python扩展分开,您最终可以在使用旧版本调试器的同时使用最新版本的Python扩展(通过禁用扩展自动更新)。此扩展作为预发布版本提供预览,使用最新版本的debugpy。我们计划在不久的将来支持旧版本的debugpy。

试一试,如果一切正常,请告诉我们。我们的计划是弃用内置的调试功能,转而使用这个单独的扩展。

Pylance 本地化

Pylance 扩展现已本地化!这意味着如果您在 VS Code 中安装并激活了语言包,扩展的设置、命令和其他文本将被翻译为您偏好的语言。

测试发现和运行重写

本月我们继续作为实验推出我们的测试重写。提醒一下,这次重写重新设计了扩展中unittestpytest的测试发现和执行的架构。重写目前对100%的VS Code Insiders用户有效,并将于本月开始逐步进入稳定版。重写将很快被采用,但目前选择加入和退出的设置pythonTestAdapter仍然存在。

pytest和unittest的动态运行结果

随着新实验的推出,pytest和unittest的动态运行结果也随之而来。以前,我们的测试结果只有在所有测试完成后才会返回,但现在有了这个功能,测试结果会单独传递,让您可以实时看到测试通过和失败的情况。

第三方库的索引持久化

Pylance 对安装在您环境中的第三方库进行索引,以启用诸如自动完成、自动导入、代码导航等 IntelliSense 功能。以前,Pylance 每次在 VS Code 中打开工作区时都会对这些库进行索引。现在,Pylance 会持久化这些库的索引,减少了重复索引过程的需求。

弃用 Python 3.7 支持

Python 3.7 已于 2023-06-27 达到生命周期结束 (EOL)。因此,Python 扩展对 Python 3.7 的官方支持将在扩展的 2023.18 版本(对应于 2023 年 9 月的 VS Code 版本)中停止。目前没有计划主动移除对 Python 3.7 的支持,因此我们预计 Python 扩展在可预见的未来将继续非正式地与 Python 3.7 一起工作。

随着所有其他Python版本现在都采用年度发布节奏,我们预计一旦某个Python版本在下一个日历年的第一个Python扩展版本中达到EOL(生命周期结束),我们将停止对该版本的官方支持。例如,Python 3.8计划在2024年10月达到EOL,因此2025年的第一个Python扩展版本将停止官方支持。

GitHub 拉取请求和问题

GitHub Pull Requests and Issues扩展方面取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。

  • 在拉取请求中,最多可以加载1000个(之前是100个)评论线程。
  • 新的VS Code API提案中的只读消息功能允许您直接从尚未签出的差异中查看PR。
  • 树和评论中的头像显示为圆形而不是方形。

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

预览功能

TypeScript 5.2 支持

此更新包括对即将发布的TypeScript 5.2版本的支持。查看TypeScript 5.2迭代计划以获取有关TypeScript团队当前工作的更多详细信息。即将推出的工具亮点包括:

  • 一个新的内联常量重构。
  • 一个新的移动到文件重构功能,允许你将符号移动到现有文件中。

要开始使用 TypeScript 5.2 的夜间构建版本,请安装 TypeScript Nightly 扩展。

新的差异编辑器

这次迭代我们完成了差异编辑器的重写。重写使我们能够添加一些新功能,提高性能,并修复了几个错误。

要尝试新的差异编辑器,请将"diffEditor.experimental.useVersion2": true添加到您的设置中。新的差异编辑器仍处于实验阶段,但最终将在未来的更新中取代当前的差异编辑器。

所有展示的功能都需要新的差异编辑器。

折叠未更改区域

使用 diffEditor.experimental.collapseUnchangedRegions 来启用在新差异编辑器中隐藏未更改区域的功能。此功能在审查包含大量未更改代码的大型差异时非常有用。

隐藏线块的边框可以被拖动或点击,以从底部或顶部显示代码。

新差异编辑器中“折叠未更改区域”功能的截图

显示插入/删除标记

插入/删除标记指示在一行中单词被插入或删除的位置,这在某一行同时有插入和删除时特别有用。

使用 diffEditor.experimental.showEmptyDecorations 来启用/禁用插入和删除标记。

删除标记

改进的装饰

整行删除/插入现在具有全宽背景颜色。这显著减少了干扰。

这是一个新差异编辑器如何高亮显示更改的示例:

新差异编辑器高亮显示更改

这是旧版差异编辑器渲染装饰的方式(注意右侧第57行没有全宽背景颜色):

当前差异编辑器高亮显示的更改

同步差异更新

在新差异编辑器中输入时,更改会立即启发式应用,并在一定延迟后触发异步差异计算。在旧差异编辑器中,更改不会立即应用,导致输入时出现可见的闪烁。

新功能 - 输入时差异立即更新:

输入时差异立即更新

旧版 - 有一些可见的闪烁:

旧版差异编辑器仅在延迟后更新差异

移动检测

此实验功能检测文件内移动的代码块。使用 diffEditor.experimental.showMoves 来开启它。目前,仅检测到简单的移动,但我们计划在未来改进此功能。一旦选择了移动的代码块,源位置和目标位置将对齐,并显示它们之间的差异。

移动检测显示连接移动代码块的线条

由于移动检测仍处于实验阶段,预计在未来的更新中会有重大变化。

扩展开发

SecretStorage API 现在使用 Electron API 而不是 keytar

SecretStorage API 多年来一直是存储密码、访问令牌等秘密信息的推荐方式。在底层,它一直使用 keytar,这是一个用于在操作系统密钥环中存储秘密的抽象层。由于 keytar 的弃用和归档,我们寻找了其他解决方案,特别是向我们的运行时 Electron 寻求解决方案。

在这个版本中,我们已经开始从keytar迁移到Electron的safeStorage API。这个切换对您应该是透明的,因为密钥是从keytar中检索并通过Electron的safeStorage API恢复的。未来,我们将移除这个迁移过程,以便完全移除对keytar的依赖。

keytar 弃用计划

一段时间以来,VS Code 一直严重依赖 keytar,这是一个用于在操作系统密钥环中存储秘密的抽象层。此外,我们在 VS Code 中包含了一个 keytar 的垫片,这是在引入 SecretStorage API 之前扩展所依赖的。keytar 本身已经被 正式归档 并且不再维护... 为了通过 依赖已归档的软件来存储秘密来促进良好的安全实践,我们正在制定一个计划,从 VS Code 中移除这个垫片。

我们已经直接联系了仍然使用此keytar垫片的流行扩展的扩展作者,他们正在努力摆脱它。我们想在这里以及在我们的GitHub讨论中传达这一点,以便那些我们没有直接联系的人也能了解,从而尽量减少由于这一变化带来的干扰。我们知道这不是最好的消息,因为我们也有相当多的工作要移除对keytar的依赖,但我们相信这是确保扩展使用安全API的正确做法。

如果您直接在扩展中使用keytar,有几个选项供您考虑:

  • (推荐) 使用 VS Code 在 ExtensionContext 上提供的 SecretStorage API。此 API 是跨平台的,适用于 VS Code 支持的所有平台。它由 VS Code 团队维护,将继续得到维护,并且多年来一直是 VS Code API 的一部分。
  • (不推荐) 你可以将 keytar 模块与你的扩展捆绑在一起。请记住,keytar 是一个原生的 node 模块,这意味着你需要为你想要支持的每个平台 发布一个特定平台的扩展

时间线:当前计划是在8月初从VS Code Insiders中移除这个垫片,这意味着2023年9月的稳定版将是第一个没有垫片的版本。

这项工作正在issue #115215中进行跟踪,如果您有任何问题,请随时在我们的GitHub讨论中提问。

改进的 vscode.fs.writeFile 本地文件性能

当你使用vscode.fs.writeFile API将数据写入文件时(你应该这样做!),对扩展主机本地的文件的写操作现在会更快地解决。

以前,扩展主机会将写操作委托给VS Code客户端执行,但现在该操作直接在扩展主机内部执行,节省了往返时间。

树形复选框 API

TreeItemcheckboxState API 已经最终确定。默认情况下,带有复选框的树项将由 VS Code 管理其选中状态。可以通过将 TreeViewOptions 属性 manageCheckboxStateManually 设置为 true 来更改此行为。当设置了 manageCheckboxStateManually 时,扩展程序负责管理父复选框和子复选框的选中和取消选中。

环境变量集合描述

这个新的API允许为EnvironmentVariableCollection指定一个描述,该描述会在终端标签悬停时显示给用户,以解释具体的变化是什么。

// Example of what the Git extension could use
context.environmentVariableCollection.description =
  'An explanation of what the environment changes do';

您可以在内置的Git扩展中看到API的实际应用,它现在描述了更改的作用:

环境变量集合描述在终端标签的悬停中解释

提议的API

每个里程碑都伴随着新的提议API,扩展作者可以尝试它们。一如既往,我们希望得到您的反馈。以下是尝试提议API的步骤:

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

你不能发布使用提议API的扩展。在下一个版本中可能会有破坏性的更改,我们从不希望破坏现有的扩展。

文件系统提供者的只读消息

当你registerFileSystemProvider时,你可以提供一个只读消息,而不是简单地将文件系统标记为只读。当用户尝试编辑来自该提供者的文件时,下面的消息将显示在编辑器中。

只读文件系统消息

工程

导出符号的名称修饰

去年我们开始混淆私有属性和方法的名称以减少代码大小。现在我们也混淆导出的符号名称,这使我们的主工作台JavaScript文件的大小进一步减少了8%。

我们的名称混淆构建步骤现在在核心VS Code和我们的内置扩展中总共节省了3.9 MB的JavaScript。这种减少加快了下载速度,减少了VS Code的安装大小,并加快了每次启动VS Code时的代码加载速度。

Node.js、内置扩展和Electron的校验和完整性检查

作为我们构建的一部分,我们从其他位置消费二进制资源,例如用于我们远程服务器的Node.js以及来自Marketplace和Electron的内置扩展。在这个里程碑中,我们通过验证与vscode GitHub仓库中检入的SHA256校验和来确保这些二进制资源的完整性。

新的Linux性能机器

我们非常重视VS Code的性能,特别是打开文本编辑器并看到光标闪烁所需的时间。为了监控这段时间,我们在Windows和macOS上每天进行性能测试。

在这个里程碑中,我们向测试集添加了一台Linux机器,报告了在Ubuntu 22上的启动时间。

Linux性能机器

事件发射器优化

VS Code 在我们的代码库中广泛使用事件发射器。我们在本次迭代中优化了这些发射器,略微提高了启动时间和内存使用率。

你可以在issue #185789中阅读更多关于此改进的信息。

终端pty主机改进

"Pty Host" 进程管理由终端启动的所有 shell 进程,并进行了多项改进:

  • 性能
    • 现在有一个直接与pty主机进程通信的通道。最显著的变化是减少了终端的输入延迟。
    • 通过减少不必要的调用和在恢复多个终端时并行化任务,重新连接(重新加载窗口)和进程恢复(重启)的性能得到了改善。
    • 我们现在收集终端启动和重新连接的性能指标,可以通过开发者:启动性能命令查看。
  • 诊断
    • 所有与终端相关的日志已从Window输出通道移出,并移至新的Terminal输出通道。
    • 当跟踪日志级别在Pty Host输出通道上时,终端将记录所有RPC调用,这将有助于诊断终端问题。

文档

新的C#主题

你可以通过C# Dev Kit扩展在VS Code中学习C#开发,通过一系列新的C#文章。在那里,你将找到解释如何入门的主题,描述扩展的语言功能(代码导航重构调试),以及帮助开发生命周期的内容,如项目管理。

全局模式参考

VS Code 拥有自己的 glob 模式 实现,它用于搜索文件和文件夹过滤等功能,让您可以自定义文件资源管理器视图等。要了解详细信息,您可以查看新的 Glob 模式参考

显著的修复

  • 最大化集成终端时丢失文本 #134448
  • 支持fish shell集成自动注入 #139400

感谢您

最后但同样重要的是,向VS Code的贡献者们表示衷心的感谢

问题跟踪

对我们问题跟踪的贡献:

拉取请求

vscode 的贡献:

vscode-emmet-helper 的贡献:

vscode-livepreview的贡献:

vscode-pull-request-github 的贡献: