June 2020 (version 1.47)

更新1.47.1 :此更新解决了此安全问题 .

更新1.47.2 :此更新解决了这些问题 .

下载:Windows: 用户 系统 | Mac | Linux: snap deb rpm tarball


欢迎使用2020年6月发布的Visual Studio Code. 我们希望您喜欢此版本中的许多更新,其中一些主要亮点包括:

If you'd like to read these release notes online, go to Updates on code.visualstudio.com.

7月13日(星期一)太平洋时间上午9点(伦敦下午5点)在VS Code团队的 直播中与我们一起直播 ,以观看此版本的新功能演示并实时向我们提问.

有问必答:想要尽快尝试新功能吗? 您可以下载每晚的Insiders内部版本,并在可用时立即尝试最新更新. 有关最新的Visual Studio Code新闻,更新和内容,请在Twitter @code上关注我们!

Accessibility

This milestone, we again received helpful feedback from our community, which helped us identify and tackle many accessibility issues. Highlights:

  • 现在,文件资源管理器中的压缩文件夹可以正确地描述展开/折叠状态和ARIA级别.
  • 屏幕阅读器现在可以在编辑器中更新光标偏移. 因此,屏幕阅读器"全部发言"命令在停止和恢复后应该可以更好地工作.
  • 屏幕阅读器现在可以正确地重新读取相同的ARIA实时消息.

Workbench

Edit object settings from the Settings editor

以前,"设置"编辑器只能用于编辑基本类型的设置,例如字符串和布尔值,而您需要直接编辑settings.json以获取更复杂的设置类型. 现在,您可以从"设置"编辑器中编辑非嵌套对象设置. 扩展作者可以使用此功能来增加此类设置的可见性.

Before

在设置编辑器中:

Object setting in the old Settings editor

并在settings.json

Object setting in the JSON editor

After

In the Settings editor:

Object setting in the new Settings editor

Select and keep focus in a list view

有一个新命令list.selectAndPreserveFocus ,它使您可以从列表中选择一个项目,同时将焦点放在该列表上. 如果您想从列表中选择多个文件(例如文件资源管理器)而不关注文件编辑器,这将很有帮助.

默认情况下,该命令未绑定任何键盘快捷键,但是您可以添加自己的键盘绑定:

{
  "key": "ctrl+o",
  "command": "list.selectAndPreserveFocus"
}

Stable Windows ARM builds

现在可以在稳定版本中使用 ARM上的Windows的VS Code!

Install VSIX through drag and drop

VS Code现在支持通过拖放到Extensions视图中来安装扩展VSIX文件.

New Search editor command arguments

在搜索编辑器命令中添加了两个新参数( search.action.openNewEditorsearch.action.openNewEditorToSide ),以允许按键绑定配置新搜索编辑器的行为:

  • triggerSearch打开搜索编辑器时是否自动运行搜索. 默认为true.
  • focusResults是否将焦点放在搜索结果或查询输入中. 默认为true.

例如,以下键绑定在打开"搜索"编辑器时运行搜索,但是将焦点放在搜索查询控件中.

{
  "key": "ctrl+o",
  "command": "search.action.openNewEditor",
  "args": { "query": "VS Code", "triggerSearch": true, "focusResults": false }
}

New Search editor context default

search.searchEditor.defaultNumberOfContextLines设置已更新为默认值1而不是0,这意味着将在搜索编辑器中的每个结果行之前和之后显示一条上下文行. 若要返回到旧的行为,请将值设置回0.

List/Tree: Dynamic horizontal scrolling

现在可以在运行时切换以前存在的workbench.list.horizontalScrolling设置,而不必强制您重新加载工作台.

Editor

Case changing in regex replace

VS Code现在支持在编辑器中进行查找/替换时更改正则表达式匹配组的大小写. 这可以通过修饰符\u\U\l\L ,其中\u\l将大写/小写单个字符,而\U\L将大写/小写匹配组的其余字符.

Example:

Changing case while doing find and replace

修饰符也可以堆叠-例如, \u\u\u$1将大写该组的前三个字符,或者\l\U$1将小写第一个字符,其余的则大写.

当前,这些仅在编辑器的"查找"控件中受支持,而不在全局"文件查找"中受支持.

Debugging

New JavaScript Debugger

在上个月成为Insiders的默认调试器之后,我们新的JavaScript调试器现已成为VS Code中JavaScript(Node.js和Chrome)的默认调试器. 如果跳过了最后几个VS Code更改日志的"预览功能"部分,则可以了解调试器README 的新增功能部分 .

您无需更改任何设置或启动配置即可利用新的调试器. 如果您遇到任何问题,请打开一个问题

Single file debugging

直到今天,VS Code调试器还没有标准的方法来显示只需单击一个按钮即可轻松调试编辑器中的文件. 某些调试扩展允许您执行此操作,通常使用调试配置来提示您"在编辑器中调试文件". 但是,用户仍然必须在调试配置下拉菜单中选择正确的配置,然后才能使用F5 . 其他调试扩展为F5实现了备用策略:如果不存在launch.json ,则F5将尝试调试当前在活动编辑器中打开的文件.

由于这两种方法都不容易发现,因此某些调试扩展(例如Python)已开始在编辑器的标题区域中添加"运行"按钮.

由于尚未找到更好的方法,并且无需任何新API即可实现此方法,因此我们编写了一些有关如何以标准方式实现该方法的指南. 扩展作者可以在下面的"扩展创作"部分中找到这些准则.

用户只需要记住以下图标:

Run and debug action in editor title

如果一个或两个都显示在编辑器标题区域的左侧,则只需单击一下即可在编辑器中运行或调试文件.

Less cluttered CALL STACK view

在常见情况下,我们已开始降低CALL STACK的拥挤程度:CALL STACK视图现在支持隐藏由于技术原因而存在的调试会话节点,但不会为用户提供太多价值.

选择使用此功能的第一个调试扩展是新的JavaScript调试器,每当只有一个子会话时,它就可以消除父调试会话.

Screenshot of two "Call Stack" views. Without compaction, there is an extra child session between the parent session and each attached worker processes.

我们希望其他调试扩展也会随之而来. 请在下面查看新的建议API.

New command alias Set Next Statement for Jump to Cursor

为了使来自Visual Studio的用户更容易发现" 跳转到光标 "命令,我们添加了命令别名Set Next Statement .

如果您不知道Jump to Cursor(跳转至光标)的作用,它可让您将程序执行移至新位置,而无需在其间执行任何源代码.

Breakpoint Path on Hover

将鼠标悬停在BREAKPOINTS视图中的源断点上时,VS Code现在显示断点的绝对路径.

Tasks

pnpm package manager support

pnpm现在是npm.packageManager设置以及npmyarn的有效选择,可以运行脚本.

Source Control

Single view

The Source Control view has been consolidated into a single view:

Source Control with a single view

所有存储库都在单个视图中呈现,因此您可以更好地了解整个工作区状态. 此外,现在可以将"源代码管理"视图移动到面板,而其他视图可以移动到"源代码管理"视图容器.

View and Sort

我们增加了对使用列表视图选项时按名称,路径(默认)和状态对源控件视图中的更改进行排序的支持. 我们将视图选项(列表或树)和排序选项合并到上下文菜单中的新" 视图和排序"菜单项中.

View & Sort in Source Control

Git: Restore squash message

Similar to usual git merge command, the SCM view will now restore the SCM input with the default message if the user is in the middle of a git merge --squash command.

Languages

TypeScript 3.9.6

VS Code现在捆绑了TypeScript 3.9.6. 此次更新修复了一些错误,其中包括一些可能导致TypeScript服务器在某些源代码模式下崩溃的错误.

Browser support

Large file upload support

现在,您可以将较大的文件和文件夹上传到VS Code的Web版本,并且将准确报告进度,以便您可以跟踪已上传的字节数以及上传速度.

Web upload indicator in bottom Status bar

Towards text file encoding support

在这个里程碑期间,许多工作都完全支持浏览器中用于读取和写入文件的文本编码. 通过利用webpack,我们依赖浏览器现在支持的两个库:

这项工作将在7月份继续进行,并且应该很快就会普遍提供.

Preview features

预览功能尚未发布,但功能足以使用. 我们欢迎您在开发过程中尽早提出反馈.

Settings Sync

最近几个月,我们一直在努力支持跨计算机同步VS Code首选项,并且此功能可在Insiders版本中预览.

现在,您可以使用" 已同步的机器"视图中机器条目上的"关闭首选项""同步"上下文菜单操作来禁用其他机器上的同步 .

Turn off preferences sync for a machine

打开同步时,我们还改进了进度信息.

TypeScript 4.0 support

这次迭代,我们继续改进对TypeScript 4.0的支持. 一些重点包括:

  • 用删除线突出显示编辑器中对不赞成使用的符号的调用

    Call to a deprecated function rendered in the editor

  • 说明无法应用给定重构的原因

    Displaying the reason a refactoring cannot be applied

  • 改进的自动导入 -在TypeScript 4.0博客文章中了解更多信息 .

您可以通过安装TypeScript nightly扩展程序立即试用这些功能.

Partial IntelliSense support while large JavaScript or TypeScript projects are loading

TypeScript 4.0 beta还带来了一项新功能,该功能应有助于减少在加载大型JavaScript或TypeScript项目时花费的等待时间. 为了解释它是如何工作的,我们首先需要介绍一下当前版本的TypeScript如何工作.

当您在VS Code中打开JavaScript或TypeScript文件时,TypeScript语言服务会确定该文件属于哪个项目,然后为其加载关联的项目. 有时,该项目可能会很大,例如使用核心VS Code代码库,该代码库包含成千上万个TypeScript文件. 在加载项目时,VS Code能够处理基本的语法操作,例如获取文档大纲和启用代码折叠,但是由于无法依靠IntelliSense或其他更高级的语言功能,它们依赖于理解整个项目,因此目前无法提供. 例如,为了提供自动导入,TypeScript语言服务需要知道项目中所有导出的符号.

TypeScript 4.0中的更改使VS Code可以在大型项目仍在加载时提供IntelliSense和其他更高级的语言功能. 需要注意的是,我们可以提供的IntelliSense仅限于查询当前文件而不是整个项目. 这意味着建议和" 转到定义"之类的功能将起作用,但是我们将仅显示当前文件中的建议,并且您只能运行" 转到定义"以跳至当前文件中的另一个符号.

如果您使用大型JavaScript和TypeScript项目,我们很想听听您对这一新功能的反馈. 您今天可以使用TypeScript夜间扩展程序尝试一下. 我们希望它可以让您几乎立即开始使用代码,直到可以使用更完整的项目范围的IntelliSense.

Undo/Redo for Code Action

我们正在努力能够撤消和重做代码操作和重构. 一个著名的例子是Java类重命名重构,它可以进行文本更改以及重命名磁盘上的文件. 现在可以撤消此操作,但是仍然需要触发两次撤消操作. 敬请期待,我们会进一步改善这一点,请提供早期反馈.

Contributions to extensions

Notebooks

VS Code团队将继续提供对笔记本的本地支持. 为了帮助开发,我们创建了GitHub Issue Notebooks扩展,可让您搜索GitHub问题并提取请求. 此扩展程序仍处于预览状态,需要使用VS Code Insiders ,但是它可以让您第一手体验Notebooks,我们欢迎您的反馈.

更新的用户体验

我们更新了笔记本电池的外观,以实现更紧凑的设计. 我们还向选定的单元格添加了阴影轮廓,以使选择状态更加明显.

Updated Notebook UX

笔记本电脑热出口支持

我们在笔记本中添加了"热出口"支持,以允许扩展程序处理备份和还原. 现在,未保存的本地更改可以通过扩展序列化并在重新打开工作区时恢复.

撤消/重做增强

我们增加了对扩展的支持,以有助于撤消/重做堆栈. 扩展现在可以控制哪些操作是不可撤消的. 例如,在GitHub问题笔记本中,您可以选择" 锁定"按钮将单元格内容设置为只读,还可以通过常规的"撤消/重做"命令撤消/重做此操作.

Undo/Redo in GitHub Issue Notebook

Theme: GitHub Theme

创建无标题的笔记本

我们扩展了" 新建文件"命令( ⌘N (Windows,Linux Ctrl + N ),以支持创建新的无标题笔记本文件. 例如,您可以使用下面的快捷键快速创建GitHub Issue Notebook并运行查询.

{
  "key": "cmd+i",
  "command": "workbench.action.files.newUntitledFile",
  "args": { "viewType": "github-issues" }
}

Create Untitled GitHub Issue Notebook

Theme: GitHub Theme

笔记本颜色令牌

我们还为笔记本添加了以下颜色标记:

  • notebook.cellBorderColor :笔记本单元格的边框颜色
  • notebook.cellHoverBackground :悬停单元格时单元格的背景色
  • notebook.cellInsertionIndicator :笔记本单元格插入指示器的颜色
  • notebook.focusedCellBackground :单元格被聚焦时单元格的背景色
  • notebook.focusedCellBorder :单元格被聚焦时单元格顶部和底部边框的颜色
  • notebook.focusedCellShadow :当单元格被聚焦时单元格阴影的颜色
  • notebook.focusedEditorBorder :笔记本单元格编辑器边框的颜色

两个新示例展示了如何在笔记本电脑中支持调试

Notebook extension guide

如果您有兴趣为VS Code创建Notebook扩展,可以使用新指南详细介绍Notebook API . 您将了解API以及VS Code Notebook基础结构和Notebook扩展开发最佳实践的详细信息.

Remote Development

远程开发扩展继续进行工作,该扩展使您可以将容器,远程计算机或Windows Linux子系统 (WSL)用作功能全面的开发环境.

1.47中的功能亮点包括:

  • 远程-SSH:远程服务器可以侦听套接字而不是端口.
  • 远程-容器:提示在卷中打开存储库.
  • 远程-容器和WSL: 在WSL 2博客文章中查看最近的《 使用远程容器》 .

您可以在" 远程开发"发行说明中了解新的扩展功能和错误修复.

如果您不熟悉VS Code远程开发,则可以开始以下入门教程:

Azure Account

现在,最新版本的Azure帐户扩展公开了可与最新Azure SDK一起使用的凭据对象.

GitHub Pull Requests and Issues

继续在GitHub Pull Requests and Issues扩展上进行工作,该扩展允许您处理,创建和管理Pull Request和Issues . 此版本的一些更新包括:

  • Markdown在问题视图中徘徊.
  • 在新问题编辑器中标记建议.
  • 悬停支持格式为GH-123的问题.

要了解所有新功能和更新,可以查看扩展的0.18.0版本的完整变更日志 .

Hex Editor

HexEditor扩展在VS Code中提供本机十六进制编辑体验的基础上继续得到改进. 此版本扩展的主要更新包括简单的编辑支持(允许用户撤消,重做,编辑现有的十六进制单元,以及在文档末尾添加新的单元)和大型文件优化,允许用户打开18 MB以上的文件.以前是不可能的.

Editing in the HexEditor extension

README中可以找到值得注意的更改的完整列表. 任何反馈或遇到的问题都可以提交给vscode-hexeditor存储库 .

Extension authoring

AccessibilityInformation

我们已经完成了TreeItemStatusBarItemTimelineItem元素中的AccessibilityInformation来支持屏幕阅读器. AccessibilityInformation包含一个label和一个role . 一旦焦点对准项目,屏幕阅读器就会读取label . 项目的role定义屏幕阅读器如何与其交互. 例如,当树状元素的行为类似于复选框时,应在特殊情况下设置role . 如果未指定role ,则VS Code将自动选择适当的role .

Fallback message for "go to location"

当找不到位置时, editor.action.goToLocations命令现在可以显示后备消息. 这允许扩展实现功能,例如转到超级类型 ,其功能类似于内置功能,例如转到定义 . 下面的代码段是调用此命令的扩展的完整示例:

vscode.commands.executeCommand(
  'editor.action.goToLocations',
  vscode.window.activeTextEditor.document.uri, //anchor uri and position
  vscode.window.activeTextEditor.selection.start,
  [], // results (vscode.Location[])
  'goto', // mode
  'No Super Types Found' // <- message
);

Guidelines for improving the single file debug experience

对于希望通过在编辑器中添加"运行"和/或"调试"按钮来改善单文件调试体验的调试扩展,我们建议遵循以下准则以实现一致的外观:

  • 在package.json中贡献Run和/或Debug命令(请参阅Mock Debug ):
    • 使用命令标题"运行文件" /"调试文件"或"运行Python文件" /"调试Python文件".
    • $(play)图标用于运行,将$(debug-alt-small)用于调试.
  • 将命令添加到编辑器标题区域( 请参见Mock Debug ):
    • 要使命令仅对特定语言可见,请使用" when"子句,例如"resourceLangId == python" .
    • 将运行命令放入1_run@10组,将调试命令放入1_run@20组.

CodeActionProviderMetadata.documentation

CodeActionProviderMetadata上的新documentation属性使扩展可以为其返回的代码操作提供静态文档. 当提供返回代码操作时,此文档显示在代码操作列表的底部:

A documentation entry in the Code Actions menu

当用户选择文档条目时,将执行命令. 此命令可以在编辑器中显示文档或在浏览器中打开文档.

Open and Save dialog title

用于通过OpenDialogOptionsSaveDialogOptions为"打开"和"保存文件"对话框提供title的API已经完成. 请注意,并非所有操作系统都允许设置此标题,因此行为可能会因扩展程序的运行位置而异.

New extension categories

现在,您可以使用以下新添加的类别对扩展进行分类.

  • 数据科学
  • 机器学习
  • Visualization
  • Testing
  • Notebooks

Secondary button style

我们引入了辅助按钮样式,用于需要使按钮不那么突出时使用:

  • button.secondaryForeground
  • button.secondaryBackground
  • button.secondaryHoverBackground

GitHub Workflow badges

您现在可以将GitHub Workflow徽章添加到已发布扩展的徽章列表中,因为github.com已添加到" 批准徽章"来源列表中 .

GitHub Workflow badge

Enabling Proposed API through argv.json

argv.json现在支持字段enable-proposed-api . 这使扩展作者可以在发布的版本中运行其建议的API扩展,以进行长期测试,而无需通过命令行打开VS Code并传递--enable-proposed-api CLI标志.

New codicon icons

我们已将下列新图标添加到我们的codicon库中:

  • debug-alt-small
  • vm-connect

Codicons icons

Language Server Protocol

语义标记的支持以及完成项目中其他文本编辑的延迟解析已添加到即将发布的3.16规范中.

Proposed extension APIs

每个里程碑都随附新提出的API,扩展作者可以尝试一下. 一如既往,我们希望您的反馈意见. 您必须尝试以下提议的API:

  • 您必须使用Insiders,因为建议的API经常更改.
  • 您必须在扩展程序的package.json文件中包含以下行: "enableProposedApi": true .
  • 将最新版本的vscode.proposed.d.ts文件复制到项目的源位置.

请注意,您无法发布使用建议的API的扩展. 下一个版本中可能会有重大更改,我们永远也不想破坏现有扩展.

这个新的提案window.registerLinkProvider 以以前版本中添加的终端的新链接系统为基础window.registerLinkProvider允许扩展将链接附加到终端,包括悬停时显示的工具提示标签.

Terminal Link Provider

这与先前建议的(现在不建议使用的) "链接处理程序" API形成对比,该API将允许您的扩展程序可能处理有问题的链接,如果没有,则将存在一个后备链. 这种肯定会处理链接的新模型更适合于链接可能具有一系列可能动作的愿景.

New API for Run without Debugging

VS Code的"无需调试即可运行"功能是调试的一种变体,其中现有的调试配置可重用于运行程序而不是对其进行调试. 这种运行模式的结果是,程序不会因为打断点或任何其他原因而无法进入调试器.

在这个里程碑,我们提供了"无调试运行"官方扩展API:一个新的属性noDebug已添加到DebugSessionOptions中的debug.startDebugging功能. noDebug控制要启动的会话应在调试时运行还是不调试. 当noDebug属性丢失时,将使用父会话中的值(如果有). 如果没有父会话,则为缺少的noDebug属性采用值'false'.

请注意:以前可以在启动配置中添加noDebug标志以达到相同的效果. 现在已弃用(但仍支持)此非官方API,建议您将扩展过渡到新API.

New API for reducing clutter in the CALLSTACK view

随着复杂的调试扩展和调试设置的到来,更多的调试会话会显示在CALL STACK树形视图中,并使它们看起来很拥挤. 在大多数情况下,调试会话对用户很有用,他们需要对其进行完全控制. 在其他情况下,某些调试会话只是实现工件或一组子会话的分组机制.

为了使CALL STACK视图在通常情况下不那么拥挤,我们引入了一种功能,如果它只有一个子会话,则可以隐藏一个父调试会话节点. 此功能称为"精简模式",并且是可以通过一个新的可选compact的财产DebugSessionOptions中的debug.startDebugging功能.

如果compact为true,则新创建的调试会话的父级将仅在单个子级中被隐藏在CALL STACK视图中. 如果compact为false或缺失,则父节点保持可见(这是当前行为).

Markdown hovers in trees

提出了新的API,该API允许TreeItemtooltipMarkdownString . 除了允许Markdown用作工具提示外, TreeDataProvider上还有一个新的resolveTreeItem . resolveTreeItem背后的想法是,可能需要花费较长时间才能计算的属性(当前仅是tooltip )可以在以后解析,而不是为每个树项预先计算. 您可以在GitHub Pull Requests and Issues扩展中看到resolveTreeItem和Markdown tooltip .

Engineering

Using TypeScript 4.0 to build VS Code

VS Code现在使用TypeScript 4.0的夜间版本构建 .

这个新的TypeScript版本帮助我们发现访问器周围的一些潜在错误 ,还帮助我们测试了即将发布的TypeScript版本.

Documentation and extensions

CMake Tools for C++

New tutorial for developing C++ applications with CMake and the CMake Tools extension.

CMake Tools extension

Java Pack installer for macOS

用于Java PackVisual Studio Code安装程序可在macOS上的Visual Studio Code中下载Java开发所需的依赖项和扩展.

Java Pack installer for macOS

Notable fixes

  • 71291 :水平滚动中断树中的渲染
  • 93230 :局部变量以令人讨厌的方式折叠
  • 98309 :在工作副本文件服务中支持多个文件
  • 99061 :允许重新打开已关闭的差异编辑器
  • 99290 :Git:在重新加载时还原差异编辑器
  • 99704 :顶部调试会话行在未暂停时显示"已暂停"
  • 99786 :当调试工具栏位置停靠后,无法启动其他会话
  • 100524 :缺少SCM装饰
  • 101132 :在脱机状态下尝试打开发行说明后将永远无法打开

Thank you

最后但同样重要的是,非常感谢本月为VS Code做出贡献的以下人员:

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

vscode贡献:

vscode-extension-samples贡献:

vscode-eslint贡献:

debug-adapter-protocol贡献:

language-server-protocol贡献:

vscode-languageserver-node贡献:

vscode-css-languageservice贡献:

node-jsonc-parser贡献:

vscode-generator-code贡献:

vscode-vsce贡献: