April 2019 (version 1.34)

下载:Windows: 用户 系统 | Mac | Linux 64位: snap deb rpm 压缩文件 | 32位: deb rpm tarball

欢迎使用Visual Studio Code的2019年4月版. 在四月份,我们忙于远程开发扩展的预览版. 这些扩展使您可以在远程计算机或VM上,在Linux的Windows子系统(WSL)或Docker容器内通过SSH使用VS Code. 您可以阅读使用Visual Studio Code进行远程开发博客文章,以了解更多信息.

此版本中仍然有一些更新,希望您也愿意,以及社区的许多贡献.

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

Editor

Stable CodeLens

现在,VS Code乐观地缓存了CodeLens位置,并在切换编辑器后立即将其还原. 这解决了在编辑器之间切换时CodeLens行会稍微移动的问题.

Stable CodeLens

Languages

Lower rank for CSS property values with vendor prefix

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

Debugging

debug.showSubSessionsInToolBar

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

Tasks

Terminate all tasks

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

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

Automatically show Problems panel

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

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

Contributions to extensions

Preview: Remote Development

Note: The Remote Development extensions require Visual Studio Code Insiders.

Visual Studio Code远程开发允许您将容器,远程计算机或Windows Linux子系统(WSL)用作完整功能的开发环境.

远程开发扩展包中的扩展在远程工作空间的上下文中运行,而VS Code就像在本地运行时一样.

Vetur

The Vetur extension now offers semantic diagnostics, hover information, jump to definition, and find references for the JavaScript expression inside Vue's template interpolation region:

Vetur JavaScript support in interpolations

您可以在Vetur文档中阅读有关此功能的更多信息 .

其他改进包括减少内存使用和导入路径完成. 您可以在Vetur更新日志中了解有关它们的更多信息.

Extension authoring

Multi-extension debugging

在这个里程碑中,我们增加了对一次调试多个扩展的支持. 如果要开发一组紧密耦合或相互依赖的扩展,这将很有用.

以前,此功能仅通过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:<command id>)从链接调用命令. 当用户单击链接时,将触发带有提供的标识符的命令.

现在,您可以在通知中的链接上添加标题,当用户将鼠标悬停在链接上时会显示该标题. 语法为[link name](link "<the title>") .

Proposed extension APIs

每个里程碑都随附新提出的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打开工作空间或单个文件夹时undefined .
  • 工作空间文件的路径为Uri .

如果工作空间是无标题的,则返回的URI将使用untitled:方案.

工作空间文件位置的一种用法是调用vscode.openFolder命令以在关闭工作空间后再次打开它:

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

注意:建议不要使用workspace.workspaceFile位置将配置数据直接写入文件中. 您可以使用workspace.getConfiguration().update()在打开单个文件夹以及未命名或保存的工作空间时都可以使用.

Machine-specific settings

如果您具有允许用户自定义可执行路径的设置,并且需要将这些路径限制为他们正在运行的machine范围,则现在可以将这些设置分类为machine范围. 扩展作者在为configuration扩展点做出贡献时会设置scope属性. 机器特定的设置只能配置为用户设置.

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

Engineering

Rewritten filesystem provider for local files

Extensions have been able to provide their own filesystem implementations for custom resources (read more here). However, VS Code's own implementation for local files was not implemented with the same extension APIs. This resulted in subtle differences when dealing with local file resources compared to resources coming from extensions. Over the last two milestones, we rewrote our local file system provider to use the extension APIs for consistency.

New documentation

Python Azure Functions

新增了一个"将Python部署到Azure函数"教程,其中介绍了如何创建和部署Python无服务器Azure函数.

Miscellaneous

Language Server Protocol

语言服务器协议已建议支持以下新功能:

  • 选择范围:计算仓位数组的选择范围. 从客户端发送到服务器.
  • 呼叫层级:计算给定符号的呼叫层级. 从客户端发送到服务器.
  • 进度:从服务器启动进度报告. 从服务器发送到客户端.

The new features are available in the next versions of the vscode-languageclient and vscode-languageserver npm modules.

Notable fixes

  • 48259 :资源管理器尊重FileSystemProvider的垃圾桶功能
  • 68276 :长线程名不可见调用堆栈"在断点处暂停" UI
  • 69603 :Mac OS中的终端窗口崩溃
  • 72110 :调试控制台无需换行
  • 71737 :在调试窗口中滚动显示异常
  • 71588 :在资源管理器中显示文件时出错
  • 70492 :"正在运行的扩展程序"上的"报告问题"按钮导致数十个重复的问题

Thank you

最后但同样重要的是,非常感谢! 致使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个使用Microsoft Localization Community Platform(MLCP)的Cloud + AI Localization社区成员,其中大约100个是Visual Studio Code的活跃参与者.

通过提供新的翻译,对翻译进行投票或建议改进流程,我们对您的贡献表示感谢.

这是贡献者的快照. 有关项目的详细信息(包括贡献者姓名列表),请访问项目站点, 网址https://aka.ms/vscodeloc .

  • 波斯尼亚人:伊斯玛·巴斯诺维奇(IsmarBašanović).
  • 捷克语:丹尼尔·帕德塔(Daniel Padrta),大卫·贾里斯(DavidJareš),扬·海耶克(Jan Hajek),吉日·霍夫曼(JiříHofman).
  • 丹麦语:艾伦·基默·詹森,托马斯·拉森.
  • 荷兰语: Maxim Van Damme,Sven Klaasen.
  • 英文(英国): Martin Littlecott,Tobias Collier,William Wood,Giorgi Jambazishvili.
  • 法语: Antoine Griffard,ThierryDEMAN-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).
  • 日语: EbXpJ6bp-,nh,内田京平,尾崎义久,本田诚司,Hasefumi,熊本敏人,牧野浩一,森山京平,山本美穗,仓仓彩.
  • 韩国人:李亨se,金英宰,李善贤,李基y.
  • 拉脱维亚语: Kaspars Bergs.
  • 立陶宛语: AugustasGrikšas.
  • 波兰语: Wojciech Maj,Marek Biedrzycki,Igor 05,Marcin Weksznejder,Szymon Seliga,PawełModrzejewski,MichałStojke,Artur Zdanowski.
  • 葡萄牙语(巴西):亚历山德罗·特罗瓦托,朱迪森·圣地亚哥,罗伯托·丰塞卡,马塞洛·费尔南德斯,卢卡斯·米兰达,雷·卡内罗,洛伊恩·格罗纳,丹尼尔·卢纳,卢卡斯·桑托斯,西蒙·达马西奥.
  • 葡萄牙语(葡萄牙): Ana Rebelo,Pedro Teixeira,JoãoCarvalho,Tiago Antunes.
  • 罗马尼亚语: Alexandru Staicu.
  • 俄语:安德烈·维斯洛夫(Andrey Veselov),德米特里·基里亚诺夫(Dmitry Kiryanov),娜塔·卡扎科娃(nata kazakova),瓦莱里·巴图林(Valery Baturin).
  • 西班牙语:安迪·冈萨雷斯(Andy Gonzalez),卡洛斯·门迪斯(Carlos Mendible),何塞·玛丽亚·阿吉拉(JoséMaríaAguilar),阿尔瓦罗·恩里克·鲁阿诺(Alvaro Enrique Ruano).
  • 泰米尔语: Boopesh Kumar,Karunakaran Samayan,Merbin J Anselm.
  • 土耳其语:穆罕默德制枪,锡南·阿萨尔(SinanAçar),S.Ferit Arslan.
  • 乌克兰文: Sviatoslav Ivaskiv,George Molchanyuk.
  • 越南语: Khoi Pham,Spepirus Shouru,Viet Anh Nguyen.