參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

2019 年 4 月 (版本 1.34)

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

歡迎使用 Visual Studio Code 2019 年 4 月版本。在 4 月,我們忙於釋出 遠端開發 擴充套件的預覽版。這些擴充套件允許您透過 SSH 在遠端機器或虛擬機器上、在適用於 Linux 的 Windows 子系統 (WSL) 中或在 Docker 容器內使用 VS Code。您可以閱讀使用 Visual Studio Code 進行遠端開發部落格文章以瞭解更多資訊。

此版本中仍有幾項更新,我們希望您也會喜歡,以及許多社群貢獻。

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

編輯器

穩定的 CodeLens

VS Code 現在會樂觀地快取 CodeLens 位置,並在切換編輯器後立即恢復它們。這修復了切換編輯器時 CodeLens 行會略微偏移的問題。

Stable 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 遠端開發 允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

遠端開發擴充套件包 中的擴充套件在遠端工作區的上下文中執行,而 VS Code 感覺就像您在本地執行一樣。

Vetur

Vetur 擴充套件現在為 Vue 模板插值區域內的 JavaScript 表示式提供語義診斷、懸停資訊、跳轉到定義和查詢引用

Vetur JavaScript support in interpolations

您可以在 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

以前總是可以透過語法 [連結名稱](http://連結) 在通知訊息中包含連結,但這僅適用於在瀏覽器中開啟的連結。現在您還可以透過語法 [連結名稱](command:<命令 ID>) 從連結呼叫命令。當用戶單擊連結時,將觸發具有提供的識別符號的命令。

您現在可以為通知中的連結新增標題,當用戶將滑鼠懸停在連結上時會顯示該標題。語法是 [連結名稱](連結 "<標題>")

建議的擴充套件 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 Functions

有一個新的 將 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 名 Cloud + AI Localization 社群成員使用 Microsoft Localization Community Platform (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。
  • 簡體中文: 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。
  • 繁體中文: 謝政廷、煾 雪。
  • 匈牙利語: Levente Hallai Seiler。
  • 印度尼西亞語: Laurensius Dede Suhardiman。
  • 義大利語: Alessandro Alpi、Luigi Bruno、Emanuele Meazzo、Marco Dal Pino。
  • 日語: 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。