通常、拡張機能は Visual Studio プロセスに読み込まれていますが、VisualStudio.Extensibility ではほとんどの Visual Studio 拡張機能がアウトプロセスになります。 このアウトプロセス モデルを使用すると、より信頼性が高くパフォーマンスの高い拡張機能を作成できます。 次のドキュメントでは、次の内容について説明します。
- 新しい拡張モデルの一般的なアーキテクチャ
- 新しい機能拡張モデルの API を利用する方法
- 新しいモデルで拡張機能をコンパイルして F5 デバッグする方法
- 新しいモデルで拡張機能の記述を開始するためのリソースとコード サンプル
VisualStudio.Extensibility モデルについて
新しい VisualStudio.Extensibility モデルは、以前のモデルを使用して Visual Studio で拡張機能を使用および記述するときに開発者が経験する多くの問題に対処することを目的としています。 次のような問題があります。
- 拡張機能が原因でクラッシュし、Visual Studio やその他のインストールされている拡張機能がハングする
- 一貫性がなく、最新ではないドキュメントと API、特殊な専門知識の要件、および圧倒的なアーキテクチャ
- 拡張機能をインストールするために Visual Studio を再起動する必要があります
- .NET Core はサポートされません
VisualStudio.Extensibility を使用して拡張機能を記述すると、次の利点があります。
- 信頼性 の向上 – 新しいモデルで記述された拡張機能はアウトプロセスであり、Visual Studio UI をブロックしません。 これは、拡張機能がクラッシュした場合、結果として VS がクラッシュしないことを意味します。
- API の複雑さの 軽減 – 新しいモデルの API は、古いモデルの高度な機能を維持しながら、より一貫性があり、実装しやすくするために、ゼロから構築されています。
- .NET のみ – .NET と C# の最新の機能強化の恩恵を受けるために、新しい拡張モデルでは、プロセス外のホストに対してのみ .NET がサポートされ、.NET プロセスでホストされます。
- .NET Core のサポート - アウトプロセス拡張機能では、新しい .NET バージョンのサポートと、その利点を活用できます。
- ホットローディング機能 – 新しいモデルを使用して記述された拡張機能は、Visual Studio を再起動しなくてもインストールおよび読み込むことができます (まだインストールされていない Visual Studio コンポーネントの前提条件を必要とする拡張機能は除きます)。
- クロス CPU プラットフォーム – 基になる実装は RPC 互換のブローカー サービスに基づいており、.NET ベースであるため、.NET ランタイムでサポートされているすべての CPU プラットフォームですべての拡張機能が実行されます。
テクノロジ
VisualStudio.Extensibility モデルは、主に、Visual Studio からブローカー サービスとして提供される RPC コントラクトに基づいて構築されています。 拡張機能は、RPC 経由で Visual Studio と通信する外部の ServiceHub プロセスでホストされます。 拡張機能はどちらも Visual Studio によって提供されるサービスを利用し、場合によっては Visual Studio プロセスにサービスを提供することもできます。
SDK の一部として提供される機能拡張パッケージは、これらの RPC コントラクトに関連する基本クラス、ユーティリティ メソッド、ラッパー オブジェクトで構成され、拡張性の面を使いやすくして検出することを目的としています。 この目標は、拡張機能の作成者が Visual Studio エコシステムにすばやく貢献しやすくすることです。
関連するコンテンツ
詳細については、次のドキュメントとチュートリアルをチェックして作業を開始してください。