ソース管理パッケージは、Visual Studio IDE で提供されるサービスを使用する VSPackage です。 その代わりに、ソース管理パッケージは、ソース管理サービスとしての機能を提供します。 さらに、ソース管理パッケージは、ソース管理を Visual Studio に統合するためのソース管理プラグインよりも汎用性の高い代替手段です。
ソース管理プラグイン API を実装するソース管理プラグインは、厳密なコントラクトに従います。 たとえば、プラグインは既定の Visual Studio ユーザー インターフェイス (UI) を置き換えることはできません。 さらに、ソース管理プラグイン API では、プラグインが独自のソース管理モデルを実装することはできません。 ただし、ソース管理パッケージは、これらの両方の制限を克服します。 ソース管理パッケージでは、Visual Studio ユーザーのソース管理エクスペリエンスを完全に制御できます。 さらに、ソース管理パッケージでは、独自のソース管理モデルとロジックを使用でき、ソース管理関連のすべてのユーザー インターフェイスを定義できます。
ソース管理パッケージコンポーネント
アーキテクチャ図に示すように、ソース管理スタブという名前の Visual Studio コンポーネントは、ソース管理パッケージを Visual Studio と統合する VSPackage です。
ソース管理スタブは、次のタスクを処理します。
ソース管理パッケージの登録に必要な一般的な UI を提供します。
ソース管理パッケージを読み込みます。
ソース管理パッケージをアクティブ/非アクティブとして設定します。
ソース管理スタブは、ソース管理パッケージのアクティブなサービスを検索し、IDE からすべての受信サービス呼び出しをそのパッケージにルーティングします。
ソース管理アダプター パッケージは、Visual Studio で提供される特別なソース管理パッケージです。 このパッケージは、ソース管理プラグイン API に基づくソース管理プラグインをサポートするための中心的なコンポーネントです。 ソース管理プラグインがアクティブなプラグインである場合、ソース管理スタブは、そのイベントをソース管理アダプター パッケージに送信します。 さらに、ソース管理アダプター パッケージは、ソース管理プラグイン API を使用してソース管理プラグインと通信し、すべてのソース管理プラグインに共通する既定の UI も提供します。
一方、ソース管理パッケージがアクティブ パッケージの場合、ソース管理スタブは、Visual Studio SDK Source-Control パッケージ インターフェイスを使用してパッケージと直接通信します。 ソース管理パッケージは、独自のソース管理 UI をホストします。
ソース管理パッケージの場合、Visual Studio では、統合用のソース管理コードまたは API は提供されません。 これは、 ソース管理プラグイン が厳密な関数とコールバックのセットを実装する必要があるソース管理プラグインの作成に関するページで説明されているアプローチと対照的です。
他の VSPackage と同様に、ソース管理パッケージは、
CoCreateInstanceを使用して作成できる COM オブジェクトです。 VSPackage は、 IVsPackageを実装することで、Visual Studio IDE で自身を使用できるようにします。 インスタンスが作成されると、VSPackage はサイト ポインターと、IDE で使用可能なサービスとインターフェイスへの VSPackage アクセスを提供する IServiceProvider インターフェイスを受け取ります。VSPackage ベースのソース管理パッケージを作成するには、ソース管理プラグイン API ベースのプラグインを記述するよりも高度なプログラミングの専門知識が必要です。