共用方式為


關於 VisualStudio.Extensibility (預覽)

VisualStudio.Extensibility 是開發 Visual Studio 擴充功能的新架構,主要著重於從 IDE 執行跨進程的延伸模組,以改善效能和可靠性。 其功能是現代化、異步的 API,經過簡化且精心設計,以最大化開發人員生產力。 VisualStudio.Extensibility 處於使用中開發狀態,並可作為預覽版。

使用目前的預覽版,您可以開發各種 Visual Studio 擴充功能,包括但不限於:

  • 建立指令
  • 在編輯器中使用程式代碼或文字
  • 向用戶顯示提示或對話框
  • 建立除錯器視覺化工具

VisualStudio.Extensibility 旨在解決開發人員在Visual Studio中使用和撰寫延伸模組時遇到的許多問題。 使用 VisualStudio.Extensibility 撰寫延伸模組提供下列優點:

  • 提高可靠性:Visual Studio 會保持回應,如果擴充功能當機或停止回應,則不會當機。
  • 簡化 API 複雜性:VisualStudio.Extensibility 擁有簡化的架構、一致的 API 設計,以及清楚的文件。
  • 熱載入功能:安裝擴充功能時,不需要重新啟動Visual Studio。

最後,您將能夠使用 VisualStudio.Extensibility SDK 來撰寫任何可使用 Visual Studio SDK 撰寫的延伸模組。 不過,在此之前,您可能會遇到在 VisualStudio.Extensibility 中尚未提供您擴充套件所需的功能的情況。 在此情況下,您可以使用 VisualStudio.Extensibility SDK 搭配在同一進程中執行的 Visual Studio SDK,以涵蓋任何功能差距。 若要深入瞭解,請參閱 內部擴充功能

如需 VisualStudio.Extensibility 的最新資訊,可能可以在 VSExtensibility GitHub 資料庫的 公告中找到。

文章 描述
安裝 VisualStudio.Extensibility 下載並安裝 VisualStudio.Extensibility 的最新預覽。
開始使用 如果您之前尚未開發延伸模組,請從初學者快速入門和入門教學課程開始。
概念 建置 SDK 和延伸模組運作方式的精神模型。
概觀 閱讀功能每個主要區域的概觀,以深入瞭解。
範例 探索示範主要功能的範例程序代碼。
API 參考 流覽 VisualStudio.Extensibility API 文件。
實驗性 API 和重大變更 了解我們穩定與實驗性 API 的方法,以及舊版的重大變更。
已知問題 檢視 VisualStudio.Extensibility SDK 的已知問題。
進階主題 瞭解 VisualStudio.Extensibility SDK 的實作詳細數據。

安裝 VisualStudio.Extensibility

目前的 VisualStudio.Extensibility Preview 與要安裝 Visual Studio extension development 工作負載的 Visual Studio 2022 17.9 版 Preview 1 或更新版本搭配運作。

開始

下列文章可協助您取得導向並開始使用」

若要瞭解如何使用 VisualStudio.Extensibility,建議您徹底瞭解使用 async 和 await 的異步程序設計,以及 相依性插入。 此外,VisualStudio.Extensibility 中的 UI 是以 Windows Presentation Foundation 為基礎,因此您可能會想要檢閱 WPF 檔

概念

如果您熟悉 Visual Studio SDK,請參閱 給 VSSDK 使用者的 VisualStudio.Extensibility 簡介

若要建置Visual Studio延伸模組運作方式的精神模型,請參閱 新的Visual Studio延伸模組 的元件,以瞭解延伸模組的架構。 此外,您可以閱讀 依賴注入,它用於在擴展模組的元件之間共享元件。

若要瞭解 SDK 中包含的內容,請參閱 SDK 功能區域。

您的擴充功能應該在 IDE 中的什麼時間和地點出現? 符合特定條件時,Visual Studio 擴充功能會出現在 IDE 中。 若要控制您的延伸模組在 IDE 中出現的方式和時間,請參閱 以規則為基礎的啟用條件約束

Visual Studio 延伸模組可透過貢獻將其功能提供給 Visual Studio。 如需詳細資訊,請參閱 貢獻

瞭解 VisualStudio.Extensibility 中使用的 遠端 UI 模型。

綜述

閱讀延伸模組開發專案可能需要之 SDK 區域的概觀。

  • 建立命令並將其公開給 IDE 中的使用者,請參閱 命令
  • 使用檔案和文件的內容,請參閱 編輯器延伸模組
  • 使用這些檔案本身的記憶體內部表示法,請參閱 Documents
  • 使用擴充功能中的輸出視窗,請參閱 輸出視窗
  • 使用 Visual Studio IDE 中的工具視窗、可停駐視窗,請參閱 工具視窗
  • 使用具有可自訂按鈕的提示來與使用者互動,請參閱 使用者提示
  • 使用具有自定義 UI 的對話框來與用戶互動,請參閱 對話框
  • 在偵錯時建立自定義數據視覺效果,請參閱 調試程式可視化檢視
  • 查詢或修改專案和解決方案的相關信息,請參閱 項目查詢
  • 定義、讀取和更新設定,請參閱 設定
  • 使用語言伺服器/LSP 以取得其他語言支援,請參閱 Language Server Provider

範例和教學課程

您可以在 Samples.sln找到包含所有範例的 Visual Studio 解決方案。

樣本 描述
簡單的命令處理程式 示範使用命令的基本概念。 另請參閱 建立您的第一個Visual Studio擴充功能 教學課程。
插入 guid 擴充功能 示範如何在程式代碼編輯器中插入文字或程式碼、如何設定具有特定啟用條件的命令,以及如何使用資源檔案進行當地語系化。 另請參閱 建立簡單的擴充功能 教學課程。
命令式育兒 示範如何撰寫可父代至 IDE 不同層面的命令。
檔選取器 示範如何建立只適用於符合檔案路徑模式的檔案的編輯器延伸模組。
輸出視窗 顯示 輸出視窗 API 的最基本用法
工具視窗 示範如何建立工具視窗,並填入內容。
使用者提示 示範如何向用戶顯示提示。
對話框 示範如何向用戶顯示具有自定義UI的對話框。
字數邊界 示範如何建立編輯器邊界延伸模組,以顯示檔中的字數計數。
Markdown linter 示範多個元件如何在延伸模組內互動,以及如何擴充Visual Studio的不同區域。
項目查詢 您可以進行數種不同的項目系統查詢。
批註移除程式 示範如何透過 .NET 相依性插入取用 Visual Studio SDK 服務,並使用 VisualStudio.Extensibility API 進行命令、提示和進度報告。
RegexMatchDebugVisualizer 示範如何使用 遠端 UI 建立 偵錯器可視化工具,以可視化顯示將在模式對話框窗口中啟動的正則表示式匹配。
MemoryStreamDebugVisualizer 示範如何建立 調試程式可視化檢視,以可視化在非強制回應工具視窗中啟動的MemoryStream物件。
RustLanguageServiceProvider 示範如何建立 Rust 語言伺服器提供者延伸模組,以在開啟 Rust 檔案時新增 Intellisense 和工具提示。

實驗性 API 和重大變更

從 17.9 版開始,我們已準備好將大部分 API 標記為穩定。 也就是說,我們不打算對這些 API 進行任何重大變更。 有任何重大變更,例如使用者關於可用性意見反應所促成的任何 變更,都會在我們的 重大變更頁面上事先正式通知,同時會給予充分的提前通知。

我們的一些 API 尚未達到穩定性的標準,原因之一是:

  • 功能區域是新功能,未來版本預期會有其他功能和變更。
  • API 是新的,我們想要在將使用者意見反應納入設計中,再將其標示為穩定。
  • 我們收到特定 API 難以使用的意見反應,因此我們計劃在未來版本中更新它。

這些 API 會使用 [Experimental] 屬性明確標示,以協助延伸模組作者有信心在 SDK 中建立擴充功能。

如需詳細資訊,包括如何使用實驗 API,請參閱我們的 實驗 API 頁面。

已知問題

我們非常感謝您在 問題追蹤器中的意見反應和錯誤報告,而且我們努力解決 SDK 中發現的任何問題。

如需任何目前已知問題的相關信息,請瀏覽我們的 已知問題 頁面。

進階主題

文章 描述
其他遠端 UI 概念 與使用遠端 UI 模型相關的其他主題
進階遠端用戶界面 遠端 UI 模型的深入資訊
程式內延伸模組 使用 VisualStudio.Extensibility SDK in-proc 之不同選項的快速逐步解說

API 文件

傳送意見反應

我們正積極尋求意見反應和參與。 預覽階段是取得社群意見,以協助我們找出問題和機會的絕佳時機。 您可以在 問題追蹤器中提供意見反應並回報錯誤。