パイプライン開発の必要条件
パイプライン セグメントとアドインが探索され、アクティブ化されるようにするには、指定されたスコープ、属性、ディレクトリ構造の必要条件を満たす必要があります。
パイプライン セグメントおよびアセンブリ
アドイン、コントラクト、ビューはパブリックでなければなりません。 アダプターおよびそのコンストラクターは内部使用にすることができます。
一般に、パイプライン セグメントは独自のアセンブリ内に含まれますが、同じアセンブリで次のセグメントを組み合わせることができます。
アドインのホスト ビューとアドイン側ビュー。
ホスト側アダプターとアドイン側アダプター。
ホスト側アダプターとアドイン側アダプターは、ビューを同じアセンブリに結合する場合にのみ、結合することができます。
パイプラインの一方の側のセグメントを、パイプラインの他方の側のセグメントと結合する場合、たとえばアドインのホスト ビューをアドイン ビューに組み合わせる場合は、そのアセンブリをそのセグメントのパイプラインの両方の側に配置する必要があります。
同じアセンブリ内のビューを結合していない場合、ホストを同じアセンブリ内のアドインのホスト ビューに結合することができます。
属性の必要条件
次に示すパイプライン セグメントでは、それらを定義する属性がクラスに必要です。
アドインでは AddInAttribute が必要です。
コントラクトでは AddInContractAttribute が必要です。
アドイン ビューでは AddInBaseAttribute が必要です。
アドイン側アダプターでは AddInAdapterAttribute が必要です。
ホスト側アダプターでは HostAdapterAttribute が必要です。
アドイン パイプライン セグメントのホスト ビューでは、オブジェクトが AddInStore.FindAddIns(Type, String, String[]) メソッドに渡され、検出の必要はないため、属性は必要ありません。
パイプライン セグメントとその必須属性を次の図に示します。
アドイン モデルとその型に必要な属性
パイプライン ディレクトリの必要条件
.NET Framework でパイプライン セグメントを探索して、アドインをアクティブ化するには、パイプライン セグメントを指定のディレクトリに置く必要があります。 ディレクトリ名を指定する必要がありますが、大文字と小文字の区別はありません。 指定しない名前は、パイプライン ルート ディレクトリの名前 (探索メソッドに指定する) と、アドインが含まれるサブディレクトリの名前だけです。 指定されたすべてのセグメント名は、パイプライン ルートの下にある同じレベルのサブディレクトリとなります。
次の図は、これらのディレクトリの必要条件を示しています。
アドイン開発に必要なディレクトリ
次の図は、必要なディレクトリ構造を示しています。
ディレクトリ |
説明 |
---|---|
パイプラインのルート |
パイプライン セグメントのサブディレクトリを含むディレクトリ。 このディレクトリの名前には指定はなく、任意の位置に置くことができます。 例 : ..\Pipeline |
AddIns |
省略可能。 1 つ以上のサブディレクトリを含むディレクトリ。各サブディレクトリにはアドインが含まれています。 このディレクトリは AddIns という名前であることが必要です。 例 : ..\Pipeline\AddIns アドインをシステム内の他の場所に配置することができます。 |
AddInSideAdapters |
アドイン側アダプター アセンブリを含むディレクトリ。 このディレクトリは AddInSideAdapters という名前であることが必要です。 例 : ..\Pipeline\AddInSideAdapters |
AddInViews |
アドイン ビュー アセンブリを含むディレクトリ。 このディレクトリは AddInViews という名前であることが必要です。 例 : ..\Pipeline\AddInViews |
コントラクト |
コントラクト アセンブリを含むディレクトリ。 このディレクトリは Contracts という名前であることが必要です。 例 : ..\Pipeline\Contracts |
HostSideAdapters |
ホスト側アダプター アセンブリを含むディレクトリ。 このディレクトリは HostSideAdapters という名前であることが必要です。 例 : ..\Pipeline\HostSideAdapters |
AddInStore.Update メソッドおよび AddInStore.Rebuild メソッドには、パイプライン ルートを表す文字列変数、または PipelineStoreLocation 値を受け取るオーバーロードがあります。 これらのメソッドはシステム内で使用できるアドインとパイプライン セグメントを探索して、キャッシュされた情報を情報ストアで保持します。 探索メソッドの詳細については、「アドイン探索」を参照してください。
ホスト アプリケーションおよびアドイン パイプライン セグメントのホスト ビューは、任意の場所に配置でき、一般に同じディレクトリに配置されます。 ホスト アプリケーションでは、アクティブ化するアドインを表すアドイン セグメントのホスト ビューへの参照が必要です。
パイプラインは、Visual Studio ソリューションのディレクトリ構造内を含む、任意の場所に配置できます。 パイプライン セグメントをパイプライン内のディレクトリにコピーする必要があります。 パイプライン ディレクトリとサブディレクトリは、複数のパイプラインを含むことができるように設計されています。 さまざまなパイプラインのシナリオの詳細については、「アドイン パイプラインのシナリオ」を参照してください。
他の場所のアドイン
アドインは必ずしもパイプライン ディレクトリ構造内に配置する必要はありません。 アドインがパイプライン ディレクトリ構造内にない場合、AddInStore.UpdateAddIns メソッドまたは RebuildAddIns メソッドを呼び出して、アドインを含むディレクトリへのパスをパラメーターとして設定する必要があります。
AddInStore.FindAddIns メソッドを呼び出す場合は、addInPaths パラメーターも組み込む必要があります。
ホスト アプリケーションがアドインのパスと完全な型名を認識している場合は、FindAddIn メソッドを使用して特定のアドインを検出することができ、パイプライン ディレクトリ構造をクエリせずに済みます。 しかし、その場合でもパイプライン ディレクトリ構造は必要です。
Visual Studio のパイプライン セグメント参照
別のパイプライン セグメントへの参照をプロジェクトに追加する場合 (たとえば、コントラクト セグメントへの参照を必要とするアドイン側アダプターなど)、そのアセンブリではなく、セグメントのプロジェクトへの参照を作成します。 この例では、コントラクト プロジェクトへの参照が使用されます。 プロジェクト参照を使用することによって、参照されるアセンブリがパイプラインに配置されることがないようにして、競合を避けることができます。 ファイルをローカルにコピーしないことによっても、競合を避けることができます。
プロジェクト参照を追加するには
ソリューション エクスプローラーで、[参照設定] フォルダーを右クリックし、[参照の追加] を選択します。
[プロジェクト] タブで目的のプロジェクトを選択し、[OK] をクリックします。
[参照設定] フォルダーの下に追加されたプロジェクト参照をクリックします。
[プロパティ] 参照で、[ローカル コピー] を [False] に設定します。
必要な参照
System.AddIn.dll および System.Contract.dll へのアセンブリ参照を必要とするパイプライン セグメントを次の表に示します。 一部のセグメントでは、コンパイルされた他のセグメントへの参照も必要です。
パイプライン セグメント |
アセンブリおよびプロジェクト参照 |
名前空間と型参照 |
---|---|---|
コントラクト |
System.AddIn.dll System.AddIn.Contract.dll |
System.AddIn.Pipeline System.AddIn.Contract |
アドイン ビュー |
System.AddIn.dll |
System.AddIn.Pipeline |
アドイン側アダプター |
System.AddIn.dll System.AddIn.Contract.dll アドイン ビュー セグメント コントラクト セグメント |
System.AddIn.Pipeline |
ホスト側アダプター |
System.AddIn.dll System.AddIn.Contract.dll ホスト ビュー セグメント コントラクト セグメント |
System.AddIn.Pipeline |
ホスト |
System.AddIn.dll ホスト ビュー セグメント |
System.AddIn.Hosting ホスト ビュー |
アドイン |
System.AddIn.dll アドイン ビュー セグメント |
System.AddIn アドイン ビュー |
アドインのホスト ビューには参照の必要条件はありませんが、ホスト アプリケーションにはあります。
Visual Studio のパイプラインへの配置
Visual Studio では、出力ビルド パスを変更することによって、パイプライン ディレクトリ構造にパイプライン セグメントをビルドできます。
Visual Studio のパイプラインへ配置するには
[ツール] メニューで、プロジェクトの [プロパティ] をポイントして、[ビルド] を選択します。
パイプライン セグメントの [出力パス] を、パイプライン ディレクトリ構造内の各ディレクトリに変更します。
ホスト アプリケーションとホスト ビューは通常、同じディレクトリに配置されます。 パイプライン ディレクトリは任意の場所に作成できますが、通常はホスト アプリケーションと同じディレクトリにします。