關於 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 來寫入任何可使用 VS SDK 寫入的擴充功能。 不過,完成開發之前,您可能會遇到 VisualStudio.Extensibility 中尚未提供擴充功能的情況。 在此情況下,您可以使用 VisualStudio.Extensibility SDK 搭配執行同處理序的 VS 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 預覽適用於 Visual Studio 2022 17.9 版 Preview 1 或更高版本,需安裝 Visual Studio extension development 工作負載。

開始使用

下列文章可協助您瞭解概況並開始使用」

若要了解如何使用 VisualStudio.Extensibility,建議您充分了解使用 async 和 await 進行非同步程式設計相依性插入。 此外,VisualStudio.Extensibility 中的 UI 是以 Windows Presentation Foundation (WPF) 為基礎,因此您可能會想要檢閱 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 的使用者,請參閱命令
  • 若要使用檔案和文件的內容,請參閱編輯器擴充功能
  • 若要使用這些文件本身的記憶體內部表示法,請參閱文件
  • 使用擴充功能中的輸出視窗,請參閱輸出視窗
  • 使用工具視窗、Visual Studio IDE 中的可停駐視窗,請參閱工具視窗
  • 使用具有可自訂按鈕的提示來與使用者互動,請參閱使用者提示
  • 使用具有自訂 UI 的對話來與使用者互動,請參閱對話方塊
  • 偵錯時建立自訂資料視覺效果,請參閱偵錯工具視覺化檢視
  • 查詢或修改有關專案和方案的資訊,請參閱專案查詢
  • 如需使用語言伺服器/LSP 以取得其他語言支援,請參閱語言伺服器提供者

範例和教學課程

您可以在 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 模型的深入資訊
同處理序擴充功能 使用 VisualStudio.Extensibility SDK in-proc 之不同選項的快速逐步解說

API 文件

傳送意見反應

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