VisualStudio.Extensibility について (プレビュー)

VisualStudio.Extensibility は、パフォーマンスと信頼性を向上させるために IDE からアウト オブ プロセスで実行される拡張機能に重点を置いた Visual Studio 拡張機能を開発するための新しいフレームワークです。 開発者の生産性を最大化するため、合理化されて慎重に設計された最新の非同期 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 では使用できない場合があります。 その場合は、インプロセスで実行している VS SDK と共に VisualStudio.Extensibility SDK を使用して、機能の不足を補うことができます。 詳細については、「インプロセス拡張機能」を参照してください。

VisualStudio.Extensibility に関する最新情報は、VSExtensibility GitHub リポジトリのお知らせよりご覧いただけます。

[アーティクル] 説明
VisualStudio.Extensibility のインストール VisualStudio.Extensibility の最新プレビューをダウンロードしてインストールします。
開始するには 拡張機能をまだ開発したことがない場合は、初心者向けのクイック スタートと入門チュートリアルから開始します。
概念 SDK と拡張機能の仕組みについてのメンタル モデルを構築します。
概要 詳細については、主要な機能それぞれの概要を参照してください。
サンプル 主な機能を示すサンプル コードについて説明します。
API リファレンス VisualStudio.Extensibility API のドキュメントを参照します。
試験段階の 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 を使用する方法を理解するには、非同期と待機を使用した非同期プログラミング依存関係の挿入を十分に理解しておくことが推奨されます。 さらに、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 を使用して言語サポートを追加する方法については、「言語サーバー プロバイダー」を参照してください

サンプルおよびチュートリアル

すべてのサンプルを含む Visual Studio ソリューションは、Samples.sln にあります。

サンプル 説明
シンプルなコマンド ハンドラー コマンド操作の基本を示します。 初めての Visual Studio 拡張機能の作成に関するチュートリアルもご覧ください。
guid 拡張機能を挿入する コード エディターでテキストまたはコードを挿入する方法、特定のアクティブ化条件でコマンドを構成する方法、ローカライゼーションにリソース ファイルを使用する方法を示します。 シンプルな拡張機能の作成に関するチュートリアルもご覧ください。
コマンドの親子階層 IDE のさまざまな側面に親子階層として使用できるコマンドを作成する方法を示します。
ドキュメント セレクター ファイル パス パターンに一致するファイルのみに適用するエディター拡張機能を作成する方法を示します。
[出力] ウィンドウ 出力ウィンドウ API の最も基本的な使用方法を示します
ツール ウィンドウ ツール ウィンドウを作成し、コンテンツを設定する方法を示します。
ユーザー プロンプト ユーザーにプロンプトを表示する方法を示します。
ダイアログ カスタム UI を使用したダイアログをユーザーに表示する方法を示します。
ワード カウントのマージン 文書内の単語数を表示するエディター マージンの拡張機能を作成する方法を示します。
Markdown リンター 拡張機能内で複数のコンポーネントを相互にやり取りする方法と Visual Studio のさまざまな領域を拡張する方法を示します。
プロジェクト クエリ 作成できるプロジェクト システム クエリのさまざまな種類を示します。
コメント リムーバー .NET 依存関係の挿入を通して Visual Studio SDK サービスを活用し、コマンド、プロンプト、進行状況レポートに VisualStudio.Extensibility API を使用する方法について説明します。
RegexMatchDebugVisualizer リモート UI を使用してデバッガー ビジュアライザーを作成し、モーダル ダイアログ ウィンドウで起動する正規表現の一致を視覚化する方法を示します。
MemoryStreamDebugVisualizer デバッガー ビジュアライザーを作成して、非モーダル ツール ウィンドウで起動する MemoryStream オブジェクトを視覚化する方法を示します。
RustLanguageServiceProvider Rust ファイルを開いたときに Intellisense とヒントを追加する Rust 言語サーバー プロバイダー拡張機能を作成する方法を示します。

試験段階の API と重要な変更

17.9 のリリース以降、API の大部分を安定版としてラベル付けする準備ができています。 つまり、これらの API に重大な変更を加える予定はありません。 ユーザビリティに関するユーザーからのフィードバックに対応するなどで重要な変更が必要になる場合、正式なお知らせが行われ、重要な変更のページで十分に通知されます。

次のいずれかの理由により、安定性のためにこの水準をまだ満たしていない API がいくつかあります。

  • 機能領域は新機能であり、今後のバージョンで追加の機能と変更が予定されています。
  • この API は新しいものであり、安定としてマークする前にユーザー フィードバックをデザインに取り入れたいと考えています。
  • 特定の API の使用が難しいというフィードバックがあったため、今後のバージョンで更新する予定です。

これらの API では、拡張機能の作成者が自信を持って SDK に拡張機能を作成できるように、[Experimental] 属性を使用して明示的にラベル付けをしています。

試験段階の API の使用方法などの詳細については、試験段階の API のページを参照してください。

既知の問題

皆さまのフェードバックとバグの報告を課題トラッカーでお寄せいただければ、SDK で見つかったすべての課題に対処させていただきます。

現在知られている問題については、既知の問題のページを参照してください。

高度なトピック

[アーティクル] 説明
高度なリモート UI リモート UI モデルに関する詳細な情報
インプロセス拡張機能 VisualStudio.Extensibility SDK インプロセスを使用するためのさまざまなオプションに関する簡単なチュートリアル

API ドキュメント

フィードバックを送信する

フィードバックとエンゲージメントを積極的に求めています。 プレビュー フェーズは、課題やオポチュニティを特定するために有用なコミュニティの意見を獲得する重要な時期です。 フェードバックとバグの報告を課題トラッカーでお知らせください。