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 を使用して、Visual Studio SDK を使用して記述できる拡張機能を記述できるようになります。 ただし、その時点まで、拡張機能で必要な機能がまだ VisualStudio.Extensibility で使用できない場合があります。 その場合は、VisualStudio.Extensibility SDK を、インプロセスで実行されている Visual Studio SDK と共に使用して、機能のギャップをカバーできます。 詳細については、 In-proc 拡張機能に関するページを参照してください。
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 extension development
ワークロードを含む Visual Studio 2022 バージョン 17.9 Preview 1 以降で動作します。
始めましょう
次の記事を読むことで、理解を深め、始めるのに役立ちます。
- 最初の Visual Studio 拡張機能を作成 すると、拡張機能として同等の "Hello, world" を作成する方法が示されます。
- 単純な拡張機能を作成 すると、エディター ウィンドウに GUID を追加する、より興味深い拡張機能を作成する方法が示されます。
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 でダイアログを使用してユーザーと対話する(ダイアログを参照)
- デバッグ時にカスタム データ視覚化を作成する(デバッガー ビジュアライザーを参照)
- プロジェクトとソリューションに関する情報を照会または変更する、「Project Query」を参照してください。
- 設定の定義、読み取り、更新を行う(「設定」を参照)
- 言語サーバー/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 言語サーバー プロバイダー拡張機能を作成する方法を示します。 |
CompositeExtension | ブローカー サービスを使用して通信するインプロセス コンポーネントとアウトプロセス コンポーネントを使用して拡張機能を作成する方法を示します。 |
試験段階の API と重大な変更
17.9 リリース以降、ほとんどの API に安定したラベルを付ける準備ができました。 つまり、これらの API に重大な変更を加える予定はありません。 ユーザーからの使いやすさに関するフィードバックによって促されたような重大な変更は、十分な予告期間を設けた上で、重大な変更 ページで事前に正式に通知されます。
いくつかの理由から、安定性のためにこのバーをまだ満たしていない API がいくつかあります。
- 機能領域は新機能であり、今後のバージョンでは追加の機能と変更が予定されています。
- この API は新しいものであり、安定したマークを付ける前に、ユーザーフィードバックを設計に組み込みたいと考えています。
- 特定の API を使用するのが難しいというフィードバックを受け取ったので、今後のバージョンで更新する予定です。
これらの API は、 [Experimental]
属性を使用して明示的にラベル付けされ、拡張機能の作成者が SDK に自信を持って拡張機能を作成するのに役立ちます。
試験的 API の使用方法など、詳細については、 試験的 API の ページを参照してください。
既知の問題
イ シュー トラッカーのフィードバックとバグ レポートに感謝し、SDK で見つかった問題に対処します。
現在の既知の問題については、既知の問題 のページをご覧ください。
高度なトピック
[アーティクル] | 説明 |
---|---|
その他のリモート UI の概念 | リモート UI モデルの操作に関連するその他のトピック |
高度なリモート UI | リモート UI モデルに関する詳細な情報 |
In-proc 拡張機能 | VisualStudio.Extensibility SDK in-proc を使用するためのさまざまなオプションに関する簡単なチュートリアル |
API ドキュメント
- Microsoft.VisualStudio.Extensibility
- Microsoft.VisualStudio.Extensibility.Editor
- Microsoft.VisualStudio.ProjectSystem.Query
フィードバックを送信する
フィードバックとエンゲージメントを積極的に求めています。 プレビュー フェーズは、問題や機会を特定するのに役立つコミュニティの意見を得るのに最適な時期です。 フィードバックを提供し、 問題トラッカーでバグを報告することができます。