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 月版本。此版本包含許多更新,希望您會喜歡,其中一些主要亮點包括:
- 在資源管理器中查詢 - 使用改進的查詢控制元件在資源管理器檢視中快速查詢檔案。
- 原始碼管理圖 - 在原始碼管理圖中提供更多篩選選項和互動性。
- Python 測試覆蓋率 - 執行帶覆蓋率的 Python 測試,並在編輯器中獲得豐富的結果。
- ESM - 透過遷移到 ESM 來加快 VS Code 啟動速度。
- 擴充套件的帳戶偏好設定 - 指定用於擴充套件的帳戶。
- 原生 REPL 中的 Copilot - 在原生 REPL 中獲取程式碼補全功能和內聯聊天。
- 改進的聊天上下文 - 拖放檔案或使用 IntelliSense 獲取更相關的聊天上下文。
- 測試環境設定 - 獲取有關為工作區設定測試框架的幫助。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新。Insiders:想盡快嘗試新功能嗎?您可以下載每晚Insiders版本並儘快嘗試最新更新。
GitHub Copilot
在聊天中切換語言模型
先前,我們宣佈您可以 註冊以提前訪問 OpenAI o1 模型。獲得訪問許可權後,您將在 VS Code 中的 Copilot Chat 中擁有一個 Copilot Chat 模型選擇器控制元件,用於為您的聊天對話選擇要使用的模型版本。

GPT-4o 在內聯聊天中
我們已將 Copilot 內聯聊天升級到 GPT-4o,以便在您使用編輯器中的聊天時,為您提供更快、更準確、更高質量的程式碼和解釋。
聊天中的公共程式碼匹配
您可以允許 GitHub Copilot 返回可能與 GitHub.com 上公開可用的程式碼匹配的程式碼。當此功能針對您的 組織訂閱或 個人訂閱啟用時,Copilot 程式碼補全已為您提供了檢測到的匹配項的詳細資訊。現在,我們也會在 Copilot Chat 中顯示這些公共程式碼的匹配項。
如果此功能已為您的組織或訂閱啟用,您可能會在響應末尾看到一個帶有“檢視匹配項”連結的訊息。如果您選擇該連結,將開啟一個編輯器,其中顯示匹配程式碼引用的詳細資訊。

在 GitHub Blog 上獲取有關 GitHub Copilot 中程式碼引用的更多資訊。
聊天中的檔案建議
在聊天輸入欄位中,您現在可以輸入 #<檔名> 來獲取檔名建議,並快速將它們作為上下文附加到您的提示中。這適用於支援檔案附件的聊天位置,例如聊天檢視、快速聊天、內聯聊天和筆記本聊天。
聊天響應中改進的檔案連結
我們改進了 Copilot 響應中提及的工作區檔案路徑的渲染效果。當您向 @workspace 提問時,這些路徑非常常見。
您首先會注意到的是,工作區檔案的路徑現在包含一個檔案圖示。這使您能夠輕鬆地區分它們在聊天響應中的位置。檔案圖示基於您當前的檔案圖示主題。

這些路徑是可互動的連結,只需選擇它們即可開啟相應的檔案。您甚至可以使用拖放操作將檔案開啟到新的編輯器組中,或將其插入到文字編輯器中,方法是在放置之前按住 Shift。
預設情況下,這些連結只顯示檔名,但您可以將滑鼠懸停在上面以檢視完整的檔案路徑。

您還可以右鍵單擊其中一個路徑,以開啟一個上下文選單,其中包含其他命令,例如複製資源的相對路徑,或在作業系統檔案瀏覽器中顯示檔案。

我們計劃在接下來的迭代中進一步改進工作區路徑的渲染效果,並對響應中的符號名稱進行類似的改進。
拖放檔案以新增聊天上下文
您現在可以透過將檔案或編輯器選項卡直接從工作臺拖到聊天中,輕鬆地將其他檔案作為上下文附加到聊天提示中。對於內聯聊天,請按住 Shift 並拖放檔案以將其作為上下文新增,而不是開啟它。
歷史記錄中包含檔案附件
有多種方法可以將檔案或編輯器選擇作為相關上下文附加到聊天請求中。以前,此上下文僅新增到當前請求,不包含在後續請求的歷史記錄中。現在,這些附件會保留在歷史記錄中,以便您可以持續引用它們,而無需重新附加。

Python 原生 REPL 中的內聯聊天和補全
Python 擴充套件使用的原生 REPL 編輯器現在支援直接在輸入框中進行 Copilot 內聯聊天和程式碼補全。
在筆記本中接受並執行生成的程式碼
當您使用 Copilot 內聯聊天在筆記本中生成程式碼時,現在可以接受並直接從內聯聊天執行生成的程式碼。
在筆記本聊天中附加變數
當您在筆記本中使用 Copilot 時,現在可以將 Jupyter 核心中的變數附加到您的請求中。新增變數可為您提供對聊天請求上下文的更精確控制,從而獲得更相關的 Copilot 響應。
在內聯聊天中,鍵入 # 後跟變數名,或使用 📎 控制元件(⌘/ (Windows, Linux Ctrl+/))來新增上下文變數。
重新整理聊天使用者體驗
我們已重新整理聊天檢視,帶來全新的歡迎體驗,並更新了聊天輸入區域的佈局。您現在可以使用 @ 按鈕輕鬆查詢可用聊天參與者和斜槓命令的列表,包括內建命令和已安裝擴充套件的聊天參與者。您還可以透過在聊天輸入框中鍵入 / 或 @ 來查詢參與者和斜槓命令。

語義搜尋結果(預覽)
設定: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 預設可用。

命令中心聊天(實驗性)
我們正在試驗一個命令中心入口以訪問聊天。它提供了對所有相關聊天命令的快速訪問,例如啟動不同的聊天體驗或向提示附加上下文。請注意,命令中心本身需要啟用,才能顯示聊天命令中心入口。

改進的時間上下文(實驗性)
設定: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 設定中配置測試生成指令。
輔助功能
入門
我們的幫助選單現在包含一個輔助功能入門演練,使您更輕鬆地探索和利用輔助功能選項。演練向您介紹輔助功能幫助對話方塊、輔助功能訊號、鍵盤快捷鍵等功能。

註釋可訪問性改進
我們為註釋執行緒控制元件引入了一個可訪問的檢視。此檢視包括相關的編輯器上下文,使您能夠保持專注,而無需在編輯器和可訪問檢視之間切換。同樣,現在在註釋面板的可訪問檢視中提供了編輯器上下文。
我們還引入了註釋:聚焦當前行註釋命令,該命令允許您使用鍵盤從編輯器快速移動到註釋控制元件。在編輯器中還有前往下一個和上一個註釋範圍的新操作:註釋:轉到下一個註釋範圍和註釋:轉到上一個註釋範圍。
工作臺
更改擴充套件的帳戶偏好設定
在此迭代中,我們探索瞭如何改善更改擴充套件首選帳戶的體驗。例如,如果您有多個 GitHub 帳戶,並且意外地用錯誤的帳戶登入 GitHub Copilot,現在需要使用另一個帳戶。
現在可以透過多種方式在事後更改此偏好設定。
-
活動欄中的帳戶選單 > <您的帳戶> > 管理受信任的擴充套件 > 選擇擴充套件的齒輪圖示

-
擴充套件檢視 > 擴充套件(使用身份驗證)的上下文選單(或齒輪圖示)> 選擇帳戶偏好設定

-
擴充套件詳細資訊檢視 > 齒輪圖示 > 選擇帳戶偏好設定

選擇這些選項中的任何一個都會帶您到一個快速選擇介面,您可以在其中更改擴充套件使用的帳戶。

更改擴充套件的帳戶偏好設定時,這會向擴充套件傳送一個事件,由擴充套件自行處理。如果您沒有看到預期的行為,請報告該擴充套件的問題,以便處理帳戶偏好設定的體驗。
另外,如果您對此流程有任何反饋,請告知我們。
檢視與配置檔案關聯的資料夾和工作區
在此版本中,我們在配置檔案編輯器中引入了一個資料夾和工作區部分。此部分從一箇中央位置列出了與特定配置檔案關聯的所有資料夾和工作區。從該部分,您可以新增或修改資料夾,或在新視窗中開啟資料夾或工作區。

跨所有配置檔案更新擴充套件
在此版本中,我們引入了跨所有配置檔案更新擴充套件的功能。如果您有多個配置檔案並且希望保持擴充套件版本同步,這將非常有用。以前,您必須切換到每個配置檔案併為該配置檔案更新擴充套件。
擴充套件檢視中的警告
當存在任何無效擴充套件或因版本不相容而停用的擴充套件時,擴充套件檢視現在會顯示一個警告徽章和相關資訊。

在資源管理器中查詢
我們改進了資源管理器檢視中的查詢功能,以便更容易在大型專案中搜索檔案。您可以使用 ⌥⌘F (Windows, Linux Ctrl+Alt+F) 鍵盤快捷鍵在檔案資源管理器中開啟查詢控制元件。搜尋時,您可以在模糊匹配和連續匹配之間切換,以獲得更靈活的結果。
請注意,某些上下文選單操作在搜尋期間暫時停用。敬請關注更多即將推出的改進!
發行說明
我們在發行說明中使用了更簡單的語法來引用設定(setting.name),該語法在發行說明編輯器中顯示時也具有現在熟悉的設定齒輪圖示。

編輯器
內嵌提示改進
我們添加了 editor.inlayHints.maximumLength 設定,該設定控制內嵌提示在多少個字元後被截斷。
我們還修訂了內嵌提示的更新策略,現在在鍵入時,它們應該會更快地更新,但不會導致游標的任何水平移動。
實驗性編輯上下文
在此版本中,我們引入了一個新的實驗性設定 editor.experimentalEditContextEnabled。此設定使 EditContext API 能夠為 VS Code 中的編輯體驗提供支援。採用 EditContext API 使我們能夠修復某些 IME 組合問題。總的來說,我們認為它將從長遠來看改善編輯體驗,並最終將預設啟用。
啟用此設定後,請務必重新載入您的 VS Code 視窗以利用此功能。
原始碼管理
原始碼管理圖檢視改進
在上個版本中,我們添加了新的原始碼管理圖檢視。在此版本中,我們一直在努力擴充套件新新增檢視中的功能,並最佳化檢視的佈局。
儲存庫選擇器
當您開啟包含多個儲存庫的資料夾/工作區時,原始碼管理圖檢視的標題會顯示一個儲存庫選擇器。預設情況下,原始碼管理圖檢視顯示活動儲存庫,與狀態列中的資訊匹配。您可以使用儲存庫選擇器將原始碼管理圖檢視*鎖定*到特定的儲存庫。

歷史記錄項引用選擇器
在此版本中,我們在原始碼管理圖檢視標題中添加了一個新的歷史記錄項引用選擇器。您可以使用此引用選擇器將歷史記錄項篩選到不同的分支,或檢視多個分支。

預設情況下,歷史記錄項引用選擇器設定為 Auto,它將渲染當前歷史記錄項引用、其遠端分支和可選基準圖。

歷史記錄項操作
在此版本中,我們擴充套件了原始碼管理歷史記錄項的上下文選單中可用的操作列表。我們添加了從歷史記錄項建立新分支/標籤、挑選歷史記錄項以及檢出(分離)項的操作。

原始碼管理圖設定
在此版本中,我們添加了一組新設定,以便您可以自定義圖表。
- scm.graph.badges - 控制原始碼管理圖檢視中顯示的徽章
- scm.graph.pageOnScroll - 控制當您滾動到列表末尾時原始碼管理圖檢視是否載入下一頁項
- scm.graph.pageSize - 原始碼管理圖檢視中顯示的預設項數以及載入更多項時的數量
Notebook
單元格之間的多游標支援(預覽)
筆記本編輯器現在透過 notebook.multiCursor.enabled 設定支援單元格之間的多游標編輯。目前,這隻能透過快捷鍵 Ctrl+D 觸發,並且支援核心編輯器操作以及有限的編輯器命令子集。
差異編輯器顯示文件元資料更改
筆記本差異編輯器現在還顯示對文件元資料的更改,例如核心資訊和單元格語言。

在差異檢視中摺疊未更改的區域
筆記本差異檢視現在遵守 diffEditor.hideUnchangedRegions.enabled 設定。啟用後,未更改的程式碼塊將預設摺疊,這使得在大型筆記本中審查更改更加容易。

Web Worker 中的筆記本序列化(實驗性)
此版本引入了一項實驗性功能,可在 Web Worker 中進行筆記本序列化。當您處理大型筆記本時,這有助於減少擴充套件主機程序中的主執行緒阻塞時間。預設情況下,此功能處於停用狀態,但可以透過將 ipynb.experimental.serialization 設定為 true 來啟用。
除錯
支援資料著色
VS Code 支援除錯介面卡協議的文字樣式新功能。這使得變數檢視、監視檢視、懸停和除錯控制檯中的資料可以透過 ANSI 轉義序列進行著色。
JavaScript 偵錯程式
改進的 HTML 元素顯示
我們改進了 JavaScript 偵錯程式中 HTML 元素的顯示方式。以前,它們被渲染為普通物件,難以導航。現在,它們更準確地反映了 DOM 結構,並且我們利用新的著色功能提供了一些基本的語法高亮。

啟動配置中 Node 命令的自動補全
launch.json 檔案中有一個新的自動補全助手,用於安裝在 node_modules 中的命令列應用程式。這使得設定 vitest 或 nest 等工具的除錯更加容易。
更清晰的已載入源檢視
我們更改了 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 程式碼中的問題跟蹤,並提供了更具上下文的反饋。要整合它,請在 task.json 中的任務中新增 "problemMatcher": "$python"。問題匹配器會掃描任務的輸出中的錯誤和警告,並在“問題”面板中顯示它們,從而增強您的開發工作流程。
下面是一個使用 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 Pull Requests 擴充套件方面取得了更多進展,該擴充套件使您能夠處理、建立和管理拉取請求和問題。請檢視擴充套件 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 設定來啟用此功能。
以下是一些您可能需要多個賬戶的場景
- 將 Account1 用於設定同步,將 Account2 用於 GitHub Pull Request 擴充套件
- 將 Account1 用於 GitHub 擴充套件(用於推送),將 Account2 用於 GitHub Copilot
要使用此功能,只需觸發登入操作(無論是透過內建功能如設定同步,還是透過擴充套件),您都會看到登入另一個賬戶的選項。如果您需要在稍後階段更改賬戶,此功能也與新的 賬戶偏好快速選擇 完美配合。
雖然大多數功能應該能與您現有的擴充套件正常工作,但有些行為可能還無法完全適應這個多賬戶的世界。如果您認為有改進的空間,請在這些擴充套件上提出 issue。藉助相對較新的 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 包含兩個主要部分
-
擴充套件註冊一個工具的能力。工具是一段旨在供語言模型使用的功能。例如,讀取檔案的 Git 歷史記錄。
-
語言模型支援工具的機制,例如擴充套件在發出請求時傳遞工具、語言模型請求工具呼叫以及擴充套件傳回工具呼叫結果。
在此里程碑中,我們添加了工具在執行前請求使用者確認的能力。這對於可能具有某些副作用的工具很有用。
有關更多詳細資訊或提供反饋,請檢視 issue #213274。
注意:API 仍處於積極開發中,內容可能會發生變化。
工程
ESM 已在 VS Code 中釋出
我們終於在 VS Code 穩定版中釋出了我們的 ESM 工作。這意味著 VS Code 核心的所有層(electron、node.js、browser、workers)都使用 JavaScript 中的 import 和 export 語法進行模組載入和匯出。我們所有的舊 AMD 載入器都已停用,並將作為我們十月份的債務清理工作的一部分被移除。
轉向 ESM 大幅提高了啟動效能。首先,消除了大量 AMD 開銷,其次,主要工作臺捆綁包的大小也減少了 10% 以上。

現在我們已完全轉換為 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 持續消耗 200% 以上 CPU
- 10054 [WSL]: 當
localhostForwarding = false時,Ports 選項卡錯誤地報告 WSL 中的埠已轉發到本地
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
拉取請求
對 vscode 的貢獻
- @BABA983 (BABA)
- 修復終端標籤頁選擇不正常工作 PR #224394
- 註冊摺疊匯入操作 PR #227216
- @BlackHole1 (Kevin Cui): ci: 確保重試邏輯一致性 PR #226038
- @Cecil0o0 (hj): chore: 在構建擴充套件時移除未使用的忽略項。 PR #227906
- @dangerman (Anees Ahee): 修復影像預覽透明度網格縮放 PR #226505
- @g-cappai (Gianluca Cappai): 修復在 markdown 預覽中開啟 html 錨點連結 PR #228633
- @gabritto (Gabriela Araujo Britto): [typescript-language-features] 可展開懸停 PR #228255
- @gjsjohnmurray (John Murray)
- 向預覽編輯器選項卡懸停新增操作 PR #226023
- 修復工作區擴充套件啟用失敗訊息中的拼寫錯誤 PR #227348
- 修正狀態列中除錯面板的工具提示文字大小寫(修復 #228088) PR #228089
- @henricryden: 為 check-requirements-linux.sh 中的 libc.so.6 新增額外的搜尋路徑 PR #227713
- @janssen-tiobe (janssen): 修復:問題面板表格檢視中的激進 URI 編碼 PR #224841
- @jeanp413 (Jean Pierre): 修復初始終端尺寸在重新載入時顯示不正確 PR #225554
- @jjaeggli (Jacob Jaeggli): 使用 ctrl+alt+space 文件焦點建議詳情 PR #190096
- @juliapz (Julia Pozdeeva): 防止查詢小部件在 AUX 視窗中被裁剪 PR #229001
- @marrej (Marcus Revaj): # 在重構預覽中渲染檔案建立 PR #226950
- @nojaf (Florian Verdonck)
- 使用 Worker 序列化 Notebook PR #226632
- 在 ErrorNoTelemetry 訊息中包含 id PR #226715
- @PhantomPower82: 完善入門頁面(修復 #226991) PR #226994
- @rafamerlin (Rafael Merlin): 使插入提示長度可配置 PR #221276
- @rehmsen (Ole)
- 在
setup中初始化測試變數以避免順序依賴。 PR #226596 - 支援每個 notebook 單元格的多個註釋小部件。 PR #226770
- 在
- @remcohaszing (Remco Haszing): 將 test-results.xml 新增到 .gitignore PR #214238
- @repraze (Thomas Dubosc): fix: 在 browser/hover.css 中用 flex-end 替換 end PR #224102
- @segevfiner (Segev Finer): 為自定義文字編輯器採用 ext host 重啟 PR #225985
- @SimonSiefke (Simon Siefke): fix: 除錯檢視中的記憶體洩漏 PR #225334
- @sunnylost (sunnylost): 擴充套件:將表格單元格內容包裝在段落元素中 PR #228365
- @tisilent (xiejialong): 新增編輯器 GPU 渲染回退 PR #228414
- @tmm1 (Aman Karmani): 在 macOS 上忽略 tsserver 對 createDirectoryWatcher(~/Library) 的請求 PR #227653
對 vscode-docs 的貢獻
- @0dinD (Odin Dahlström): 更新支援的 Java 版本 PR #7561
- @alexwkleung (Alex Leung): 更新輸入 Jupyter 伺服器 URL 的截圖 PR #7584
- @DiskCrasher (Mike): 修復了程式碼中缺失的“!” PR #7595
- @gaganshera (Gaganjot Singh): 更新 prompt-crafting.md PR #7555
- @harish-s-developer (Harish Srinivasan): 添加了新的管理依賴項部分,修復了一個拼寫錯誤 PR #7617
- @harrydowning (Harry Downing): 刪除關於預釋出標籤的錯誤陳述 PR #7593
- @listsarah (Sarah Listzwan): 關閉 Issue #7536:更新“嵌入式程式語言” PR #7539
- @mistymadonna (Misty Hays): 更新了 Azure 擴充套件主頁,建立了新的入門頁面 PR #7520
- @muzimuzhi (Yukai Chou): 拼寫錯誤,新增缺失的內聯程式碼標記 PR #7589
- @partev: 修復 URL 重定向 PR #7608
- @Sarke (Peter Stalman): 另一個 Flatpak/KDE5 錢包的解決方法 PR #7606
- @seaniyer (Sean): 更新 publishing-extension.md PR #7540
- @vinistock (Vinicius Stock): 更新 Ruby 連結指向新文件 PR #7607
- @wjandrea (William Andrea)
對 vscode-extension-samples 的貢獻
- @liu3hao (Weihao): 新增缺失的啟用事件 PR #1057
對 vscode-js-debug 的貢獻
- @lucacasonato (Luca Casonato): fix: 不要在 Deno 中注入 NODE_OPTIONS PR #2080
對 vscode-jupyter 的貢獻
- @rchiodo (Rich Chiodo): 使 display_name 的更改也觸發核心更改事件 PR #15967
對 vscode-languageserver-node 的貢獻
- @StellaHuang95 (Stella): 支援
CodeAction上的llmGenerated屬性 PR #1557
對 vscode-pull-request-github 的貢獻
對 vscode-python-debugger 的貢獻
- @rchiodo (Rich Chiodo): 將 debugpy 資訊更新至最新發布版本 PR #462
對 vscode-vsce 的貢獻
- @mlasson (Marc Lasson): 修復選項提示中的拼寫錯誤 PR #1046
對 vscode-wasm 的貢獻
- @mlugg (Matthew Lugg): 修復流錯誤 PR #196
對 language-server-protocol 的貢獻
- @aschaber1 (Alexander Schaber): chore: 修復
kubernets到kubernetes的拼寫錯誤 PR #2013 - @dawedawe (dawe): 修復 CompletionParams 文件中的拼寫錯誤 PR #2019
- @didrikmunther (Didrik Munther): 修復 pullDiagnostics.md 中的拼寫錯誤 PR #2022
- @InSyncWithFoo (InSync)
- @SamB (Samuel Bronson): 更新 servers.md:vscode-markdown-languageserver 已移動 PR #2012
- @sh-cho (Seonghyeon Cho): 新增 fluent-bit 語言伺服器實現 PR #2016
- @StellaHuang95 (Stella): 支援
CodeAction上的llmGenerated屬性 PR #2020