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

2024 年 9 月 (版本 1.94)

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

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

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


歡迎使用 Visual Studio Code 2024 年 9 月版。此版本包含許多更新,希望您會喜歡,其中一些主要亮點包括:

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新Insiders:想盡快嘗試新功能嗎?您可以下載每晚Insiders版本並儘快嘗試最新更新。

GitHub Copilot

在聊天中切換語言模型

此前,我們宣佈您可以註冊提前訪問 OpenAI o1 模型。獲得訪問許可權後,您將在 VS Code 的 Copilot Chat 中擁有一個 Copilot Chat 模型選擇器控制元件,用於選擇用於聊天對話的模型版本。

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

Inline Chat 中的 GPT-4o

我們將 Copilot Inline Chat 升級到 GPT-4o,以便在您在編輯器中使用聊天時,為您提供更快、更準確、更高質量的程式碼和解釋。

聊天中的公共程式碼匹配

您可以允許 GitHub Copilot 返回可能與 GitHub.com 上公開可用程式碼匹配的程式碼。當為您的組織訂閱個人訂閱啟用此功能時,Copilot 程式碼補全已經為您提供了檢測到的匹配項的詳細資訊。我們現在也在 Copilot Chat 中向您顯示這些公共程式碼匹配項。

如果您的組織或訂閱啟用了此功能,您可能會在響應末尾看到一條訊息,其中包含一個檢視匹配項連結。如果您選擇此連結,將開啟一個編輯器,其中顯示匹配程式碼引用的詳細資訊。

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 Chat 中使用@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.

預設情況下,歷史項引用選擇器設定為Auto,它會渲染當前歷史項引用、其遠端和一個可選基的圖。

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

跨單元格的多游標支援 (預覽)

筆記本編輯器現在支援在單元格之間進行多游標編輯,透過設定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 元素顯示

我們改進了 JavaScript 偵錯程式中 HTML 元素的顯示方式。以前,它們被渲染為簡單的物件,很難導航。現在,它們更密切地反映了 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 之前執行。如果您選擇啟用,您可以使用終端 shell 整合的功能,例如命令裝飾、重新執行命令、執行最近的命令(如果它們在 Mac 或 Linux 中)。您可以透過設定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 拉取請求

GitHub 拉取請求擴充套件程式已取得更多進展,該擴充套件程式使您能夠處理、建立和管理拉取請求和問題。查閱該擴充套件程式0.98.0 版本變更日誌以瞭解亮點。

擴充套件開發

刪除桌面應用中的自定義分配器

在此版本中,我們刪除了在 1.78 版本中新增到桌面應用程式擴充套件主機中的自定義分配器。此自定義分配器充當橋樑,用於支援與 Electron 執行時構建的 V8 沙盒不相容的 Node.js 本機外掛。您可以參閱此跟蹤問題以獲取更多上下文。

我們已確保前 5000 個擴充套件程式不受此更改的影響。如果您的擴充套件程式或您的擴充套件程式的依賴項受到此更改的影響,您可以嘗試以下補救建議

  • 如果您的擴充套件程式使用n-api,那麼在使用外部陣列緩衝區時將返回狀態napi_no_external_buffers_allowed。在這種情況下,您可以切換到使用 API 的副本版本napi_create_buffer_copy
  • 如果您的擴充套件程式使用node-addon-api,請參閱此文件以獲取替代 API 和編譯時設定。
  • 如果您想避免複製帶來的效能開銷,您可以使用V8 分配器來確保緩衝區後端儲存與 V8 沙盒相容。

我們還添加了遙測功能,以識別可能受影響的擴充套件程式和本機外掛,以便我們可以主動聯絡擴充套件程式作者並儘可能提供幫助。如果您的擴充套件程式受到影響,並且上述建議均不適用於您,請在我們的討論帖中發表評論,我們將樂意提供幫助。

除錯介面卡協議

我們規範瞭如何在除錯介面卡協議中對變數顯示和輸出進行文字著色和樣式設定。著色透過 ANSI 控制序列工作,並且要求客戶端和除錯介面卡在它們的初始化請求和功能中分別supportsANSIStyling

預覽功能

多個 GitHub 帳戶

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

此功能在 VS Code Insiders 中預設啟用。在 VS Code 的穩定版本中,您可以透過github.experimental.multipleAccounts設定開啟此功能。

以下是一些您可能需要多個帳戶的場景

  • 使用帳戶1進行設定同步,使用帳戶2進行 GitHub 拉取請求擴充套件
  • 使用帳戶1進行 GitHub 擴充套件(用於推送),使用帳戶2進行 GitHub Copilot

要使用此功能,只需觸發登入操作(無論是使用設定同步等內建功能還是使用擴充套件程式),您將獲得登入其他帳戶的選項。此功能還與新的帳戶首選項快速選擇器完美結合,如果您需要在後期更改帳戶。

雖然大多數功能應該會繼續與您現有的擴充套件程式一起使用,但某些行為可能尚未與此多帳戶世界完美配合。如果您認為有改進的空間,請對這些擴充套件程式提出問題。藉助相對較新的vscode.authentication.getAccounts('github') API,擴充套件程式有很大的能力來處理多個帳戶。

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

基於 MSAL 的 Microsoft 身份驗證

我們一直在努力將我們的 Microsoft 身份驗證堆疊遷移到使用MSAL (Microsoft Authentication Library)。這是一項巨大的工程,但在此迭代中我們取得了巨大進展。這項工作涵蓋所有 VS Code 客戶端,因此包括 VS Code 和Web 版 VS Code

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

  • 對於 VS Code 桌面客戶端,我們將此功能放在設定microsoft.useMsal之後。目前將其放在設定之後,因為我們計劃轉向代理流程,這將使 VS Code 能夠使用作業系統的身份驗證狀態。因此,為了儘量減少中斷,我們將首先完成這項工作,然後再廣泛啟用此功能。儘管如此,如果您渴望嘗試這種新的身份驗證,歡迎您嘗試並向我們提供反饋。

您可以在問題 #178740中檢視此向 MSAL 過渡在所有 VS Code 中的詳細狀態。

TypeScript 5.7

此版本包含對即將釋出的 TypeScript 5.7 版本的初步支援。有關詳細資訊,請檢視TypeScript 5.7 計劃

要開始使用 TypeScript 5.7 的預覽版,請安裝TypeScript Nightly 擴充套件程式

提議的 API

語言模型工具

我們繼續迭代我們的LanguageModelTool API。該 API 主要包含兩部分

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

  2. 語言模型支援工具的機制,例如擴充套件在發出請求時傳遞工具、語言模型請求工具呼叫以及擴充套件傳回工具呼叫結果。

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

檢視問題 #213274以獲取更多詳細資訊或向我們提供反饋。

注意:API 仍在積極開發中,內容可能會發生變化。

工程

VS Code 中正在推出 ESM

我們終於在 VS Code 穩定版本中推出了 ESM 工作。這意味著 VS Code 核心的所有層(electron、node.js、瀏覽器、workers)都在 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 檔案監視器持續佔用 200%+ CPU
  • 10054 [WSL]:當localhostForwarding = false時,埠選項卡錯誤地報告 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 的貢獻