2019年4月(版本1.34)

下载:Windows: x64 | Mac: Intel | Linux 64位: deb rpm tarball snap | 32位: deb rpm tarball

欢迎来到2019年4月发布的Visual Studio Code。在4月期间,我们忙于远程开发扩展的预览版发布。这些扩展允许您在远程机器或虚拟机上通过SSH、在Windows子系统Linux(WSL)中或在Docker容器内使用VS Code进行工作。您可以阅读使用Visual Studio Code进行远程开发博客文章以了解更多信息。

在这个版本中,仍然有几个更新,我们希望你会喜欢,同时也有许多社区贡献。

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

编辑器

稳定的CodeLens

VS Code 现在乐观地缓存了 CodeLens 的位置,并在切换编辑器后立即恢复它们。这修复了在切换编辑器时 CodeLens 行会略微移动的问题。

稳定的CodeLens

语言

带有供应商前缀的CSS属性值的较低排名

CSS属性值以破折号'-'为前缀(例如-moz-grid-ms-grid),现在在自动完成中排在grid之后。

调试

debug.showSubSessionsInToolBar

我们引入了设置debug.showSubSessionsInToolBar,该设置控制调试子会话是否显示在调试工具栏中。当此设置为false时,子会话上的停止命令也将停止父会话。此设置的默认值为false。

任务

终止所有任务

任务:终止任务 命令现在有一个新选项,可以在有多个任务运行时终止所有任务。如果这是您经常执行的操作,您可以使用 terminateAll 参数为该命令创建键盘快捷键。

{
  "key": "ctrl+k t",
  "command": "workbench.action.tasks.terminate",
  "args": "terminateAll"
}

自动显示问题面板

新的revealProblems任务属性允许您自动显示问题面板。属性值为alwaysneveronProblem

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "npm",
      "script": "watch",
      "problemMatcher": "$tsc-watch",
      "isBackground": true,
      "presentation": {
        "reveal": "always",
        "revealProblems": "onProblem"
      }
    }
  ]
}

对扩展的贡献

预览:远程开发

注意: 远程开发扩展 需要 Visual Studio Code Insiders

Visual Studio Code 远程开发 允许您使用容器、远程机器或 Windows Subsystem for Linux (WSL) 作为全功能的开发环境。

Remote Development 扩展包中的扩展在远程工作区的上下文中运行,而 VS Code 的感觉就像在本地运行时一样。

Vetur

Vetur 扩展现在提供了语义诊断、悬停信息、跳转到定义以及在 Vue 模板插值区域内的 JavaScript 表达式中查找引用功能:

Vetur 在插值中的 JavaScript 支持

你可以在Vetur文档中阅读更多关于此功能的信息。

其他改进包括减少内存使用和导入路径补全。您可以在Vetur 更新日志中了解更多信息。

扩展开发

多扩展调试

在这个里程碑中,我们增加了同时调试多个扩展的支持。如果你正在开发一组紧密耦合或相互依赖的扩展,这将非常有用。

以前这个功能只能通过VS Code的命令行界面使用,现在可以多次指定参数--extensionDevelopmentPath。通常--extensionDevelopmentPath用于扩展的启动配置中。当开发多个扩展时,我们建议将各个扩展项目合并到一个多文件夹工作区,并创建一个新的启动配置(存储在.code-workspace文件中),该配置使用多个--extensionDevelopmentPath参数来分别对应各个扩展。

这是一个示例工作区 .code-workspace 文件,包含两个扩展,hello1hello2,以及一个适用于这两个扩展的启动配置:

{
  "folders": [{ "path": "hello1" }, { "path": "hello2" }],
  "launch": {
    "configurations": [
      {
        "type": "extensionHost",
        "request": "launch",
        "name": "Launch Two Extensions",
        "args": [
          "--extensionDevelopmentPath=${workspaceFolder:hello1}",
          "--extensionDevelopmentPath=${workspaceFolder:hello2}"
        ],
        "outFiles": [
          "${workspaceFolder:hello1}/out/**/*.js",
          "${workspaceFolder:hello2}/out/**/*.js"
        ]
      }
    ]
  }
}

请注意,在此版本中,无法通过组合各个扩展项目的preLaunchTask来创建一个同时构建两个扩展的preLaunchTask

以前可以通过语法[link name](http://link)在通知消息中包含链接,但这仅适用于在浏览器中打开的链接。现在,您还可以使用语法[link name](command:)从链接调用命令。当用户点击链接时,将触发具有提供的标识符的命令。

您现在可以在通知中的链接上添加标题,当用户悬停在链接上时将显示该标题。语法是 [link name](link "")

提议的扩展API

每个里程碑都伴随着新的提议API,扩展作者可以尝试使用它们。我们一如既往地重视您的反馈。以下是您尝试提议API需要做的事情:

  • 你必须使用Insiders,因为提议的API经常变化。
  • 您必须在扩展的package.json文件中包含这一行:"enableProposedApi": true
  • 将最新版本的vscode.proposed.d.ts文件复制到您的项目中。

请注意,您不能发布使用提议API的扩展。我们可能会在下一个版本中进行重大更改,并且我们从不希望破坏现有的扩展。

vscode.workspace.workspaceFile

有一个新的工作区属性返回工作区文件的位置。例如:file:///Users/name/Development/myProject.code-workspaceuntitled:1555503116870 用于未命名且尚未保存的工作区。

根据打开的工作空间,值将是:

  • undefined 当没有工作区或只打开了一个文件夹时。
  • 工作区文件的路径为 Uri

如果工作区未命名,返回的URI将使用untitled:方案。

工作区文件位置的一个用途是调用 vscode.openFolder 命令,以便在关闭后再次打开工作区:

vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);

注意:不建议使用workspace.workspaceFile位置直接将配置数据写入文件。您可以使用workspace.getConfiguration().update(),无论打开的是单个文件夹还是未命名或已保存的工作区,它都能正常工作。

机器特定设置

如果您有允许用户自定义可执行路径的设置,并且这些路径需要限定在它们运行的机器上,您现在可以将此类设置分类为machine范围。扩展作者在贡献configuration扩展点时设置scope属性。特定于机器的设置只能为用户设置进行配置。

"configuration": {
  "title": "Git",
  "properties": {
   "git.path": {
      "type": [
        "string",
        "null"
      ],
      "markdownDescription": "Path and filename of the git executable.",
      "default": null,
      "scope": "machine"
    }
  }
}

工程

重写的本地文件系统提供程序

扩展已经能够为自定义资源提供自己的文件系统实现(了解更多)。然而,VS Code 自己的本地文件实现并未使用相同的扩展 API。这导致在处理本地文件资源时与来自扩展的资源存在细微差异。在过去的两个里程碑中,我们重写了本地文件系统提供程序,以使用扩展 API 来保持一致性。

新文档

Python Azure 函数

有一个新的将Python部署到Azure Functions教程,描述了如何创建和部署Python无服务器Azure Functions。

杂项

语言服务器协议

语言服务器协议 已经提出了对以下新功能的支持:

  • 选择范围:用于计算一组位置的选择范围。从客户端发送到服务器。
  • 调用层次结构:计算给定符号的调用层次结构。从客户端发送到服务器。
  • 进度:从服务器启动进度报告。从服务器发送到客户端。

新功能将在下一个版本的 vscode-languageclientvscode-languageserver npm 模块中提供。

显著的修复

  • 48259: 资源管理器尊重来自FileSystemProvider的回收站功能
  • 68276: 调用堆栈“在断点处暂停”UI 对于长线程名称不可见
  • 69603: 终端窗口在Mac OS中崩溃
  • 72110: 调试控制台不必要地渲染换行符
  • 71737: 调试窗口中的滚动行为异常
  • 71588: 在资源管理器中显示文件时出错
  • 70492: ‘运行扩展’上的‘报告问题’按钮导致数十个重复问题

感谢您

最后但同样重要的是,向以下帮助使VS Code变得更好的人们表示衷心的感谢!

对我们问题跟踪的贡献。如果您想帮助我们管理收到的问题,请参阅我们的社区问题跟踪页面:

vscode 的贡献:

vscode-css-languageservice 的贡献:

vscode-html-languageservice的贡献:

node-jsonc-parser的贡献:

language-server-protocol的贡献:

vscode-languageserver-node的贡献:

vscode-eslint 的贡献:

vscode-lsif-extension的贡献:

vscode-textmate的贡献:

vscode-recipes的贡献:

vscode-vsce 的贡献:

localization的贡献:

有超过800名云+AI本地化社区成员使用微软本地化社区平台(MLCP),其中约有100名活跃的贡献者为Visual Studio Code做出贡献。

我们感谢您的贡献,无论是通过提供新的翻译、对翻译进行投票,还是建议流程改进。

这是贡献者的快照。有关项目的详细信息,包括贡献者名单,请访问项目网站https://aka.ms/vscodeloc

  • 波斯尼亚语: Ismar Bašanović.
  • 捷克语: Daniel Padrta, David Jareš, Jan Hajek, Jiří Hofman.
  • 丹麦语: Allan Kimmer Jensen, Thomas Larsen.
  • 荷兰语: Maxim Van Damme, Sven Klaasen.
  • 英语(英国): Martin Littlecott, Tobias Collier, William Wood, Giorgi Jambazishvili.
  • 法语: Antoine Griffard, Thierry DEMAN-BARCELÒ, Mohamed Sahbi, Steven Dugois, Michael VAUDIN.
  • 德语: Christof Opresnik.
  • 印地语: Abhirav Kushwaha, Pramit Das.
  • Chinese Simplified: paul cheung, 斌 项, Fan Su, Justin Liu, Horie Yuan, 王文杰, 赵畅畅, anson zhang, Wang Debang, Pluwen, Yiting Zhu, Joel Yang, Michael Zhang, 擎 钟, 涛 徐, 少民 谈, 伟 全, panda small, Array Zhang, LI ZHAO.
  • Chinese Traditional: 謝政廷, 煾 雪.
  • 匈牙利语: Levente Hallai Seiler.
  • 印尼语: Laurensius Dede Suhardiman.
  • 意大利语: Alessandro Alpi, Luigi Bruno, Emanuele Meazzo, Marco Dal Pino.
  • Japanese: EbXpJ6bp -, nh, Kyohei Uchida, Yoshihisa Ozaki, Seiji Momoto, Hasefumi, 迪人 熊本, Koichi Makino, Kyohei Moriyama, 美穂 山本, Aya Tokura.
  • 韩语: 형섭 이, Youngjae Kim, siin lee, Keunyop Lee.
  • 拉脱维亚语: Kaspars Bergs.
  • 立陶宛语: Augustas Grikšas.
  • 波兰语: Wojciech Maj, Marek Biedrzycki, Igor 05, Marcin Weksznejder, Szymon Seliga, Paweł Modrzejewski, ‎Michał Stojke, Artur Zdanowski.
  • 葡萄牙语(巴西): Alessandro Trovato, Judson Santiago, Roberto Fonseca, Marcelo Fernandes, Lucas Miranda, Ray Carneiro, Loiane Groner, Daniel Luna, Lucas Santos, Saymon Damásio.
  • 葡萄牙语(葡萄牙): Ana Rebelo, Pedro Teixeira, João Carvalho, Tiago Antunes.
  • 罗马尼亚语: Alexandru Staicu.
  • 俄语: Andrey Veselov, Дмитрий Кирьянов, nata kazakova, Валерий Батурин.
  • 西班牙语: Andy Gonzalez, Carlos Mendible, José María Aguilar, Alvaro Enrique Ruano.
  • 泰米尔语: Boopesh Kumar, Karunakaran Samayan, Merbin J Anselm.
  • 土耳其语: mehmetcan gun, Sinan Açar, S. Ferit Arslan.
  • 乌克兰语: Sviatoslav Ivaskiv, George Molchanyuk.
  • 越南语: Khôi Phạm, Spepirus Shouru, Việt Anh Nguyễn.