🚀 在 VS Code 中

2024 年 9 月 (版本 1.94)

更新 1.94.1:此更新解決了此安全性問題

更新 1.94.2:此更新解決了這些問題

下載:Windows:x64 Arm64 | Mac:通用 Intel Silicon | Linux:deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2024 年 9 月發行版本。此版本包含許多更新,我們希望您會喜歡,其中一些重點包括

如果您想在線上閱讀這些版本資訊,請前往 code.visualstudio.com 上的更新Insiders: 想要盡快試用新功能嗎?您可以下載每晚Insiders組建,並在最新更新可用時立即試用。

GitHub Copilot

在聊天中切換語言模型

先前,我們宣布您可以註冊以搶先體驗 OpenAI o1 模型。一旦您獲得存取權,您將在 VS Code 的 Copilot 聊天中擁有 Copilot 聊天模型選擇器控制項,以選擇要用於聊天對話的模型版本。

Copilot model picker control in the Chat view enables switching to another language model.

內嵌聊天中的 GPT-4o

我們已將 Copilot 內嵌聊天升級至 GPT-4o,以便在使用編輯器中的聊天時,為您提供更快、更準確和更高品質的程式碼和說明。

聊天中的公開程式碼比對

您可以允許 GitHub Copilot 傳回可能與 GitHub.com 上公開可用的程式碼相符的程式碼。當您的組織訂閱個人訂閱啟用此功能時,Copilot 程式碼完成功能已為您提供有關偵測到的相符項目的詳細資訊。我們現在也在 Copilot 聊天中向您顯示這些公開程式碼的相符項目。

如果您的組織或訂閱啟用此功能,您可能會在回應結尾看到一則訊息,其中包含檢視相符項目連結。如果您選取此連結,將會開啟一個編輯器,其中顯示相符程式碼參考的詳細資訊。

Chat code referencing example.

在 GitHub 部落格上取得有關 GitHub Copilot 中的程式碼參考的更多資訊。

聊天中的檔案建議

在聊天輸入欄位中,您現在可以輸入 #<filename> 以取得檔案名稱建議,並將它們快速附加到您的提示中作為內容。這適用於支援檔案附件的聊天位置,例如聊天檢視、快速聊天、內嵌聊天和筆記本聊天。

我們改進了 Copilot 回應中提及的任何工作區檔案路徑的呈現方式。當您詢問@workspace問題時,這些路徑非常常見。

您首先會注意到的是,工作區檔案的路徑現在包含檔案圖示。這可讓您輕鬆地區分聊天回應中的檔案。檔案圖示是根據您目前的檔案圖示主題

Paths to workspace files in the response now render using file icons.

這些路徑是互動式連結,因此只需選取它們即可開啟對應的檔案。您甚至可以使用拖放來在新編輯器群組中開啟檔案,或在按住 Shift 鍵後再拖放檔案,將其插入文字編輯器中。

預設情況下,這些連結僅顯示檔案名稱,但您可以將滑鼠停留在它們上方以查看完整檔案路徑。

Hovering over a workspace path to see the full workspace path.

您也可以在其中一個路徑上按一下滑鼠右鍵,以開啟包含其他命令的內容功能表,例如複製資源的相對路徑,或在作業系統的檔案總管中顯示檔案。

The context menu for a workspace path in chat provides options to open the file or copy its path.

我們計畫在即將到來的反覆運算中進一步改進工作區路徑呈現,並對回應中的符號名稱進行類似的改進。

拖放檔案以新增聊天內容

您現在可以透過將檔案或編輯器索引標籤從工作台中直接拖曳到聊天中,輕鬆地將其他檔案附加為聊天提示的內容。對於內嵌聊天,按住 Shift 鍵並拖放檔案,以將其新增為內容,而不是在編輯器中開啟它。

包含在歷史記錄中的檔案附件

有多種方法可以將檔案或編輯器選取範圍附加為聊天請求的相關內容。先前,此內容僅針對目前請求新增,並且未包含在後續請求的歷史記錄中。現在,這些附件會保留在歷史記錄中,因此您可以繼續參考它們,而無需重新附加它們。

Chat conversation shows that Copilot keeps track of attached files across multiple prompts.

Python 原生 REPL 中的內嵌聊天和完成

Python 擴充功能使用的原生 REPL 編輯器現在直接在輸入方塊中支援 Copilot 內嵌聊天和程式碼完成。

接受並在筆記本中執行產生的程式碼

當您使用 Copilot 內嵌聊天在筆記本中產生程式碼時,您現在可以接受並直接從內嵌聊天執行產生的程式碼。

在筆記本聊天中附加變數

當您在筆記本中使用 Copilot 時,您現在可以從 Jupyter 核心將變數附加到您的請求中。新增變數可讓您更精確地控制聊天請求的內容,以便您從 Copilot 獲得更相關的回應。

輸入 #,後跟變數名稱,或使用 📎 控制項 (⌘/ (Windows、Linux Ctrl+/)) 在內嵌聊天中新增內容變數。

重新整理的聊天使用者體驗

我們已使用全新的歡迎體驗重新整理聊天檢視,並且我們已更新聊天輸入區域的版面配置。您現在可以使用 @ 按鈕輕鬆找到可用的聊天參與者和斜線命令的清單,包括內建的命令和您已安裝的擴充功能的聊天參與者。您也可以透過在聊天輸入方塊中輸入 /@ 來找到參與者和斜線命令。

Updated Chat view welcome experience.

語意搜尋結果 (預覽)

設定github.copilot.chat.search.semanticTextResults

搜尋檢視可讓您在檔案中執行精確搜尋。我們現在已將功能新增至搜尋檢視,該功能使用 Copilot 提供語意相關的搜尋結果。

此功能仍處於預覽狀態,預設情況下,設定未啟用。試用看看,並告訴我們您的想法!

修正測試失敗 (預覽)

設定github.copilot.chat.fixTestFailure.enabled

我們新增了專門的邏輯來協助您診斷失敗的單元測試。此邏輯會在某些情況下由 /fix 斜線命令觸發,您也可以使用 /fixTestFailure 斜線命令直接叫用它。預設情況下,命令在聊天中啟用,但可以透過設定 github.copilot.chat.fixTestFailure.enabled停用。

自動化測試設定 (實驗性)

設定github.copilot.chat.experimental.setupTests.enabled

我們新增了一個實驗性 /setupTests 斜線命令,可以協助您設定工作區的測試設定。此命令可以推薦測試框架,提供設定和組態步驟,並建議 VS Code 擴充功能以在 VS Code 中提供測試整合。這可以節省您開始測試程式碼的時間和精力。

當您使用 /tests 命令為您的程式碼產生測試時,如果看起來尚未在您的工作區中設定此類整合,它可以推薦 /setupTests 和測試擴充功能。

從聊天開始偵錯 (實驗性)

設定github.copilot.chat.experimental.startDebugging.enabled

在此里程碑中,我們改進了實驗性 /startDebugging 斜線命令。此命令可讓您輕鬆尋找或建立啟動組態,並順暢地開始偵錯您的應用程式。當您在 Copilot 聊天中使用 @vscode 時,預設情況下可以使用 /startDebugging

A user types /startDebugging flask app port 3000 in the panel chat and is provided with the launch configuration.

命令中心中的聊天 (實驗性)

設定chat.commandCenter.enabled

我們正在實驗使用命令中心項目來存取聊天。它提供對所有相關聊天命令的快速存取,例如啟動不同的聊天體驗或將內容附加到您的提示。請注意,命令中心本身需要啟用,聊天命令中心項目才會顯示。

Chat Command Center button and the drop-down menu with relevant chat actions.

改良的時間內容 (實驗性)

設定github.copilot.chat.experimental.temporalContext.enabled

透過時間內容,您可以指示內嵌聊天將最近開啟或編輯的檔案視為聊天內容的一部分。我們改進了此功能,並邀請所有人試用。

自訂指示 (實驗性)

設定github.copilot.chat.experimental.codeGeneration.useInstructionFiles

設定github.copilot.chat.experimental.testGeneration.instructions

上一個里程碑,我們推出了自訂程式碼產生指示。我們進一步擴展了此功能,以在工作區的 .github/copilot-instructions.md 檔案中定義程式碼產生的共用指示。這些常見指示補充了您自己的個人程式碼產生指示。使用 github.copilot.chat.experimental.codeGeneration.useInstructionFiles 設定啟用程式碼產生指示檔案。

此外,您現在可以在設定中定義測試產生的指示,或從檔案匯入它們。例如,如果您始終希望為您的測試使用特定的單元測試框架。在 github.copilot.chat.experimental.testGeneration.instructions 設定中設定測試產生指示。

協助工具

開始使用

我們的說明功能表現在包含開始使用協助工具功能逐步解說,讓您可以更輕鬆地探索和使用協助工具選項。逐步解說向您介紹功能,例如協助工具說明對話方塊、協助工具訊號、鍵盤快速鍵等等。

Get Started with Accessibility Features product walkthrough.

註解協助工具改進

我們推出了註解執行緒控制項的協助工具檢視。此檢視包含相關的編輯器內容,讓您可以保持專注,而無需在編輯器和協助工具檢視之間切換。同樣地,編輯器內容現在在註解面板的協助工具檢視中提供。

我們也推出了註解:將焦點放在目前行上的註解命令,讓您可以透過鍵盤從編輯器快速移動到註解控制項。還有新的動作可移至編輯器中下一個和上一個註解範圍:註解:移至下一個註解範圍註解:移至上一個註解範圍

工作台

變更擴充功能的帳戶偏好設定

在此反覆運算中,我們探索了如何改善變更擴充功能偏好的帳戶的體驗。例如,如果您有多個 GitHub 帳戶,並且不小心使用錯誤的帳戶登入 GitHub Copilot,現在需要使用另一個帳戶。

現在可以透過多種方式在事後變更該偏好設定。

  • 活動列中的帳戶功能表 > <您的帳戶> > 管理信任的擴充功能 > 選取擴充功能的齒輪圖示

    Manage trusted extensions Quick Pick, with gear button highlighted.

  • 擴充功能檢視 > 使用驗證的擴充功能的內容功能表 (或齒輪圖示) > 選取帳戶偏好設定

    Account preferences option in the context menu of an extension.

  • 擴充功能詳細資料檢視 > 齒輪圖示 > 選取帳戶偏好設定

    Account preferences option in the gear menu of an extension.

選擇這些選項中的任何一個都會將您帶到快速選取,您可以在其中變更擴充功能使用的帳戶。

The account preference Quick Pick that enables you to select extensions for a given account.

當您變更擴充功能的帳戶偏好設定時,這會將事件傳送至擴充功能,並且由擴充功能來正確處理它。如果您沒有看到預期的行為,請回報該擴充功能的問題,以便可以處理帳戶偏好設定體驗。

此外,如果您對此流程有任何意見反應,請告訴我們。

檢視與設定檔相關聯的資料夾和工作區

在此里程碑中,我們在設定檔編輯器中推出了資料夾與工作區區段。此區段列出從中央位置與特定設定檔相關聯的所有資料夾和工作區。從此區段中,您可以新增或修改資料夾,或在新視窗中開啟資料夾或工作區。

Folders & Workspaces section in the Profile editor.

跨所有設定檔更新擴充功能

在此里程碑中,我們推出了跨所有設定檔更新擴充功能的功能。如果您有多個設定檔,並且想要保持擴充功能版本同步,這非常有用。先前,您必須切換到每個設定檔並更新該設定檔的擴充功能。

擴充功能檢視中的警告

當有任何無效的擴充功能或由於版本不相容而停用的擴充功能時,擴充功能檢視現在會顯示警告徽章和相關資訊。

Extensions view shows a warning badge and description about the warning.

在檔案總管中尋找

我們改進了檔案總管檢視中的尋找功能,使其更容易在大型專案中搜尋檔案。您可以使用 ⌥⌘F (Windows、Linux Ctrl+Alt+F) 鍵盤快速鍵在檔案總管中開啟尋找控制項。搜尋時,您可以在模糊比對和連續比對之間切換,以獲得更彈性的結果。

請注意,在搜尋期間,某些內容功能表動作暫時停用。請繼續關注即將推出的更多改進!

版本資訊

我們有一個簡化的語法,用於在我們的版本資訊中參考設定 (setting.name),當在版本資訊編輯器中顯示時,它也具有現在熟悉的設定齒輪呈現方式。

Setting URL in release notes enables navigating to the Settings editor directly.

編輯器

內嵌提示改進

我們新增了 editor.inlayHints.maximumLength 設定,它控制在多少個字元後截斷內嵌提示。

我們也修改了內嵌提示的更新策略,現在,在輸入時,它們應該更快更新,但不會導致游標的任何水平移動。

實驗性編輯內容

在此里程碑中,我們推出了一個新的實驗性設定 editor.experimentalEditContextEnabled。此設定啟用 EditContext API,以支援 VS Code 中的編輯體驗。EditContext API 的採用使我們能夠修正某些 IME 組成錯誤。一般來說,我們相信它將在長期內改善編輯體驗,並且最終將預設啟用。

啟用此設定後,請務必重新載入您的 VS Code 視窗,以充分利用它。

原始檔控制

原始檔控制圖表檢視改進

上一個里程碑,我們新增了新的原始檔控制圖表檢視。在此里程碑中,我們一直致力於擴展新新增檢視中可用的功能,並潤飾檢視的版面配置。

存放庫選擇器

當您開啟包含多個存放庫的資料夾/工作區時,原始檔控制圖表檢視標題會顯示存放庫選擇器。預設情況下,原始檔控制圖表檢視會顯示活動存放庫,與狀態列中的資訊相符。您可以使用存放庫選擇器將原始檔控制圖表檢視鎖定到特定存放庫。

Repository picker control in the title of the Source Control Graph view.

歷史記錄項目參考選擇器

在此里程碑中,我們在原始檔控制圖表檢視標題中新增了新的歷史記錄項目參考選擇器。您可以使用此參考選擇器將圖表中顯示的歷史記錄項目篩選為不同的分支,或檢視多個分支。

History item reference Quick Pick control to choose one or more items.

預設情況下,歷史記錄項目參考選擇器設定為 自動,這會呈現目前歷史記錄項目參考、其遠端和選用基底的圖表。

History item reference picker control in the title of the Source Control Graph view.

歷史記錄項目動作

在此里程碑中,我們擴展了原始檔控制歷史記錄項目的內容功能表中可用的動作清單。我們新增了從歷史記錄項目建立新分支/標籤、挑選歷史記錄項目和簽出 (分離) 項目等動作。

Context menu for items in the Source Control Graph view.

原始檔控制圖表設定

在此里程碑中,我們新增了一組新的設定,以便您可以自訂圖表

  • scm.graph.badges - 控制在原始檔控制圖表檢視中顯示哪些徽章
  • scm.graph.pageOnScroll - 控制當您捲動到清單結尾時,原始檔控制圖表檢視是否載入下一頁項目
  • scm.graph.pageSize - 要在原始檔控制圖表檢視中顯示以及載入更多項目時的預設項目數

筆記本

跨儲存格的多重游標支援 (預覽)

筆記本編輯器現在支援使用設定 notebook.multiCursor.enabled 在儲存格之間進行多重游標編輯。目前,這只能透過快速鍵 Ctrl+D 觸發,並且支援核心編輯器動作以及有限的編輯器命令子集。

差異編輯器顯示文件中繼資料變更

筆記本差異編輯器現在也顯示對文件中繼資料所做的變更,例如核心資訊和儲存格語言。

Notebook dif editor showing side-by-side changes to the document metadata.

在差異檢視中摺疊未變更的區域

筆記本差異檢視現在遵循設定 diffEditor.hideUnchangedRegions.enabled。啟用後,未變更的程式碼區塊會預設摺疊,這使得檢閱大型筆記本中的變更變得更容易。

Diff editor shows unchanged code blocks as collapsed.

Web Worker 中的筆記本序列化 (實驗性)

此版本推出了一項實驗性功能,可在 Web Worker 中啟用筆記本序列化。當您使用大型筆記本時,這有助於減少擴充功能主機處理程序中的主要執行緒封鎖時間。預設情況下,此功能已停用,但可以透過將 ipynb.experimental.serialization 設定為 true 來啟用。

偵錯

支援資料色彩化

VS Code 支援來自偵錯介面卡協定的新文字樣式功能。這使得變數檢視、監看式檢視、懸停和偵錯主控台中的資料可以透過 ANSI 逸出序列進行色彩化。

JavaScript 偵錯工具

改良的 HTML 元素顯示

我們改進了 HTML 元素在 JavaScript 偵錯工具中的顯示方式。先前,它們被呈現為簡單的物件,難以瀏覽。現在,它們更接近 DOM 結構,並且我們利用新的色彩化功能來提供一些基本的語法醒目提示。

HTML elements are colorized in the JavaScript Debug Console.

啟動組態中 Node 命令的自動完成

launch.json 檔案中,有一個新的自動完成協助程式可用於安裝在 node_modules 中的命令列應用程式。這使得更容易為 vitestnest 等工具設定偵錯。

更簡潔的已載入來源檢視

我們變更了 Node.js 內建模組、評估的指令碼和 WebAssembly 模組的來源路徑結構,以使已載入來源檢視不那麼雜亂且更易於瀏覽。

語言

TypeScript 5.6

我們的 JavaScript 和 TypeScript 支援現在使用 TypeScript 5.6。此主要更新包含許多語言和工具改進,以及重要的錯誤修正和效能最佳化。

您可以在 TypeScript 部落格上閱讀有關 TypeScript 5.6 版本的完整資訊。我們也在以下章節中包含了一些工具重點。

偵測一些常見的「始終為真」程式設計錯誤

假設您在 JavaScript 或 TypeScript 中使用正則表達式,並編寫如下程式碼

const str = '...'
if (/\d+(\.\d+)?/) {
  ...
} else {
  ...
}

糟糕!看起來我們忘記在正則表達式上呼叫 .test(),這表示 if 條件式始終評估為 true。這不是我們想要的。

即使指出此問題時很明顯,但像這樣的錯誤出奇地容易犯,甚至在 VS Code 中造成了真正的錯誤!值得慶幸的是,TypeScript 現在報告程式中一些最常見的「始終為真」錯誤。這包括針對從未為真的值測試 if 條件式,或一側無法觸及的條件式表達式,例如 /abc/ ?? /xyz/

查看 TypeScript 版本資訊,以取得有關此功能如何運作的更多範例和詳細資訊。

區域優先診斷

在非常長的 JavaScript 或 TypeScript 檔案中工作?由於區域優先診斷,您應該會開始更快地看到類型錯誤的診斷。這表示我們嘗試取得目前可見程式碼的診斷並首先顯示這些診斷,即使檔案其餘部分的診斷仍在計算中。

此最佳化與包含數千行的複雜檔案最相關。您可能不會注意到較小檔案的任何變更。

改良的 JavaScript 和 TypeScript 提交字元

提交字元可以透過在輸入時自動接受完成來加速編碼。例如,在 JavaScript 和 TypeScript 中,. 通常被視為提交字元。這表示要輸入 myVariable.property.,您只需輸入 myv.p.,第一個 . 接受 myVariable 的完成,第二個 . 接受 property 的完成。

這些提交字元現在由 TypeScript 計算,這表示它們可以更好地考慮程式的結構。我們也可以隨著時間的推移繼續改進對它們的支援。

預設情況下啟用提交字元,但可以透過將 editor.acceptSuggestionOnCommitCharacter 設定為 false 來停用。

自動匯入的排除模式

新的 autoImportSpecifierExcludeRegexes 可讓您使用正則表達式從特定套件排除自動匯入。例如,若要從模組 (例如 lodash) 的子目錄排除自動匯入,您可以設定

{
  "typescript.preferences.autoImportSpecifierExcludeRegexes": ["^lodash/.*$"]
}

您可以透過針對 JavaScript 使用 javascript.preferences.autoImportSpecifierExcludeRegexes 和針對 TypeScript 使用 typescript.preferences.autoImportSpecifierExcludeRegexes 來設定此功能。如需更多詳細資訊,請參閱 TypeScript 5.6 版本資訊

遠端開發

遠端開發擴充功能可讓您使用開發容器、透過 SSH 或 遠端通道的遠端機器,或 適用於 Linux 的 Windows 子系統 (WSL) 作為全功能開發環境。

重點包括

  • 透過 SSH/通道附加到 Kubernetes 容器
  • 手動指定 GPU 可用性

您可以在遠端開發版本資訊中深入了解這些功能。

擴充功能貢獻

Python

執行具有涵蓋率的測試

您現在可以在 VS Code 中執行具有涵蓋率的 Python 測試!若要執行具有涵蓋率的測試,請選取測試總管中的涵蓋率執行圖示,或從您通常從中觸發測試執行的任何功能表中選取「執行並涵蓋率」。如果您使用 pytest,Python 擴充功能將使用 pytest-cov 外掛程式執行涵蓋率,或者針對 unittest 使用 coverage.py

涵蓋率執行完成後,行會在編輯器中醒目提示以顯示行層級涵蓋率。這些行可以關閉並透過底部的「執行結果」面板重新開啟,在最近的測試執行下方顯示「關閉測試涵蓋率」或「檢視測試涵蓋率」。此外,「測試涵蓋率」索引標籤會出現在測試總管中「測試」索引標籤下方,也帶有燒杯圖示,您也可以使用命令面板中的 測試:專注於測試涵蓋率檢視 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 導覽至此索引標籤。在此面板上,您可以檢視工作區中每個檔案和資料夾的行和分支涵蓋率指標。

如需有關執行具有涵蓋率的 Python 測試的更多資訊,請參閱我們的Python 文件。如需有關測試涵蓋率的一般資訊,請參閱 VS Code 的測試涵蓋率文件

Python 預設問題比對器

Python 擴充功能現在包含預設問題比對器,簡化了 Python 程式碼中的問題追蹤,並提供更多內容相關的回饋。若要整合它,請將 "problemMatcher": "$python" 新增至 task.json 中的工作。問題比對器會掃描工作的輸出以尋找錯誤和警告,並將它們顯示在「問題」面板中,從而增強您的開發工作流程。

以下是使用 Python 預設問題比對器的 task.json 檔案範例

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Run Python",
      "type": "shell",
      "command": "${command:python.interpreterPath}",
      "args": ["${file}"],
      "problemMatcher": "$python"
    }
  ]
}

Python 終端機 REPL 中的 Shell 整合

Python 擴充功能現在包含一個設定,可選擇加入和退出 PYTHONSTARTUP 指令碼,該指令碼在您輸入 python 或任何其他方式在終端機中啟動 Python REPL 之前執行。如果您選擇加入,如果它們在 Mac 或 Linux 中,您可以使用終端機 Shell 整合中的功能,例如命令裝飾、重新執行命令、執行最近的命令。您可以透過設定 python.terminal.shellIntegration.enabled 啟用此功能。

Pylance 語言伺服器模式

有個新的設定 python.analysis.languageServerMode,讓您可以在目前的 IntelliSense 體驗或針對效能最佳化的輕量型體驗之間做選擇。

如果您不需要完整的 IntelliSense 功能,且偏好 Pylance 盡可能節省資源,您可以將 python.analysis.languageServerMode 設定為 light。否則,若要繼續使用您目前 Pylance 的體驗,您可以將其設定為 default

這項新功能會覆寫下列設定的預設值

設定 light 模式 default 模式
"python.analysis.exclude" ["**"] []
"python.analysis.useLibraryCodeForTypes" false true
"python.analysis.enablePytestSupport" false true
"python.analysis.indexing" false true

上述設定仍然可以個別變更,以覆寫預設值。

GitHub Pull Requests

GitHub Pull Requests 擴充功能上取得了更多進展,讓您可以處理、建立和管理提取要求和問題。請查看擴充功能 0.98.0 版本的變更記錄,以瞭解重點內容。

擴充功能撰寫

移除桌面應用程式中的自訂記憶體配置器

在此版本中,我們移除了在 1.78 版本中新增至桌面應用程式擴充功能主機的自訂記憶體配置器。此自訂記憶體配置器作為橋樑,用於支援與 V8 沙箱不相容,且針對 Electron 執行階段建置的 Node.js 原生附加元件。您可以參考此追蹤問題以取得更多背景資訊。

我們已確保前 5000 個擴充功能不受此變更影響。如果您的擴充功能或擴充功能的相依性受到此變更影響,您可以嘗試下列補救建議

  • 如果您的擴充功能使用 n-api,則在使用外部陣列緩衝區時,將會傳回狀態 napi_no_external_buffers_allowed。在這種情況下,您可以切換為使用 API 的複製版本 napi_create_buffer_copy
  • 如果您的擴充功能使用 node-addon-api,請參閱此文件以取得替代 API 和編譯時間設定。
  • 如果您想避免複製造成的效能成本,可以使用 V8 記憶體配置器,以確保緩衝區後端儲存與 V8 沙箱相容。

我們也新增了遙測功能,以識別可能受影響的擴充功能和原生附加元件,以便我們可以主動聯繫擴充功能作者,並在可能的情況下提供協助。如果您的擴充功能受到影響,且上述建議均無效,請在我們的討論串中留言,我們將很樂意提供協助。

偵錯介面卡協定

我們正式確立了如何在 Debug Adapter Protocol 的變數和輸出顯示中著色和設定文字樣式。著色透過 ANSI 控制序列運作,且需要用戶端和偵錯配接器分別在其初始化請求和功能中 supportsANSIStyling

預覽功能

多個 GitHub 帳戶

現在可以在 VS Code 中同時登入多個 GitHub 帳戶。

此功能在 VS Code Insiders 中預設為啟用。在 VS Code 的穩定組建中,您可以使用 github.experimental.multipleAccounts 設定來開啟此功能。

以下是您可能需要多個帳戶的幾個情境

  • 使用 帳戶 1 進行設定同步,並使用 帳戶 2 進行 GitHub Pull Request 擴充功能
  • 使用 帳戶 1 進行 GitHub 擴充功能 (推送),並使用 帳戶 2 進行 GitHub Copilot

若要使用此功能,只需觸發登入動作 (透過內建功能 (例如設定同步) 或擴充功能),系統會提供您登入不同帳戶的選項。如果您稍後需要變更帳戶,此功能也能與新的帳戶偏好設定快速選取完美搭配。

雖然大多數項目應該可以繼續與您現有的擴充功能搭配使用,但某些行為可能還無法在此多帳戶世界中完美運作。如果您認為有改進空間,請在這些擴充功能上開啟問題。藉由相對較新的 vscode.authentication.getAccounts('github') API 的協助,擴充功能有很大的能力來處理多個帳戶。

在下一個迭代中,我們計劃預設為所有使用者開啟此功能。

以 MSAL 為基礎的 Microsoft 驗證

我們一直致力於讓我們的 Microsoft 驗證堆疊使用 MSAL (Microsoft Authentication Library)。這是一項龐大的工程,但我們在此迭代中取得了重大進展。這項工作涵蓋所有 VS Code 用戶端,因此包括 VS Code 和 VS Code for the Web

  • 對於 vscode.dev,我們已針對所有 Microsoft 驗證請求啟用以瀏覽器為基礎的 MSAL.js。換句話說,vscode.dev 現在完全採用 MSAL。

  • 對於 VS Code 桌面用戶端,我們已將此功能置於設定 microsoft.useMsal 之後。目前置於設定之後是因為我們計劃朝向 代理流程 發展,這將使 VS Code 能夠使用作業系統的驗證狀態。因此,為了盡可能減少中斷,我們會先完成這項工作,然後再廣泛啟用此功能。話雖如此,如果您渴望嘗試這項新的驗證,歡迎您試用並向我們提供意見反應。

您可以在 Issue #178740 中查看 VS Code 所有用戶端轉換至 MSAL 的詳細狀態。

TypeScript 5.7

此版本包含即將推出的 TypeScript 5.7 版本的初始支援。請查看 TypeScript 5.7 計劃以瞭解詳細資訊。

若要開始使用 TypeScript 5.7 的預覽組建,請安裝 TypeScript Nightly 擴充功能

建議 API

語言模型工具

我們持續迭代我們的 LanguageModelTool API。此 API 包含兩個主要部分

  1. 擴充功能註冊工具的能力。工具是一項功能,旨在供語言模型使用。例如,讀取檔案的 Git 歷史記錄。

  2. 語言模型支援工具的機制,例如擴充功能在發出請求時傳遞工具、語言模型請求工具調用,以及擴充功能將工具調用的結果傳回。

在此里程碑中,我們新增了工具在執行前要求使用者確認的功能。這對於可能具有某些副作用的工具很有幫助。

請查看 issue #213274 以取得更多詳細資訊或向我們提供意見反應。

注意:API 仍在積極開發中,內容將會變更。

工程

ESM 正在 VS Code 中發布

我們終於在 VS Code 穩定版本中發布 ESM 工作。這表示 VS Code 核心的所有層 (electron、node.js、瀏覽器、背景工作執行緒) 在 JavaScript 中使用 importexport 語法進行模組載入和匯出。我們所有舊版 AMD 載入器的使用方式都已停用,並將在 10 月的債務週期間移除。

移至 ESM 大幅提升了啟動效能。首先,移除了許多 AMD 額外負荷,然後主要工作台套件大小也縮減了 10% 以上

Graph showing the trend of the main bundle load time, showing a large drop after introducing ESM.

既然我們已完全轉換為 ESM,我們計劃改善 VS Code 的工程系統。透過 ESM,許多現代工具將適用於我們,我們非常興奮能在不久的將來分享更多關於此的詳細資訊。

注意:擴充功能不受此變更影響,且不會透過 ESM 載入,請參閱 https://github.com/microsoft/vscode/issues/130367 以瞭解詳細資訊。

使用 NPM 作為預設套件管理員

從 2024 年 9 月初開始,我們已完成在 microsoft/vscode 存放庫中,將套件管理從 yarn 切換為 npm 的轉換。此決策是根據 VS Code 的特定需求,並以以下準則為中心

  • 效能:我們最初因為效能原因而移至 yarn,而 npm 現在也能滿足我們的需求
  • 安全性:我們透過限制暴露和減少我們依賴的工具數量,使我們的供應鏈更安全

值得注意的修正

  • 226401 fileWatcher 持續消耗 CPU 200% 以上
  • 10054 [WSL]:當 localhostForwarding = false 時,[WSL]:連接埠索引標籤錯誤地回報 WSL 中的連接埠已轉送到本機

感謝

最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。

問題追蹤

對我們問題追蹤的貢獻

提取要求

vscode 的貢獻

vscode-docs 的貢獻

vscode-extension-samples 的貢獻

vscode-js-debug 的貢獻

vscode-jupyter 的貢獻

vscode-languageserver-node 的貢獻

vscode-pull-request-github 的貢獻

vscode-python-debugger 的貢獻

vscode-vsce 的貢獻

vscode-wasm 的貢獻

language-server-protocol 的貢獻