Share via


アドインのアクティブ化

探索メソッドを使用して、指定したホスト ビューに関するアドイン トークンのコレクションを取得した場合、AddInToken オブジェクトによって表されるトークンを使用することによって、コレクションからアドインをアクティブ化できます。 システムで使用できるアドインを探索する方法については、「アドイン探索」を参照してください。

AddInToken オブジェクトで Activate メソッドのオーバーロードを使用する場合、次のアクティブ化オプションを指定できます。

  • アドインが読み込まれるアプリケーション ドメイン。

  • アドイン用に作成されるアプリケーション ドメインに付与されるセキュリティ信頼レベルまたはアクセス許可セット。

  • アドインをアクティブ化する外部プロセス。 これはアドイン開発の拡張オプションです。

Activate メソッドはアドインのホスト ビューを返します。その後、ホスト アプリケーションはコントラクトに定義されているようにメソッドを呼び出すことができます。 ホスト アプリケーションは、AddInController クラスを使用してアドインをシャットダウンすることによって、アドインの有効期間を制御できます。 さらに、アドインが参照されなくなった場合に、ガベージ コレクターが回収できるようにします。

アクティベーション

通常、ホスト アプリケーションは、ホストおよびアドインが別々のアプリケーション ドメインで実行されるようにし、アドインごとに 1 つのアプリケーション ドメインが用意されます。 これにより、アドインはホストおよび他のアドインの両方から分離したコンテキストで実行できます。 この分離によって、競合を避け、アドインのバージョン管理が可能になります。

アドインは独自のアプリケーション ドメイン内にあるため、独自の環境でテストでき、さらにパイプラインのアドイン側もテストできます。 アドイン アダプター、コントラクト、アドイン ビュー パイプライン セグメントはアドインと同じアプリケーション ドメインに読み込まれます。 アドインに必要な他のアセンブリもアドインのアプリケーション ドメインに読み込まれます。

アドインをアクティブ化する際、ホスト アプリケーションは一般に Activate メソッドのオーバーロードを使用します。このオーバーロードは、指定したセキュリティ レベルを受け取り、そのアドイン用にアプリケーション ドメインを自動的に作成します。 セキュリティ レベルには AddInSecurityLevel または PermissionSet を指定できます。 Activate メソッドは、アドインのアプリケーション ドメインを作成するとき、addinassemblyname.config という構成ファイルが存在すれば、それをアプリケーション ドメインの構成ファイルとして設定します。

さらに細かく制御したり、アドインをプールしたりする場合には、AddInToken.Activate メソッドのオーバーロードを使用して、読み込むアドインに既存のアプリケーション ドメインを指定できます。 既存のアプリケーション ドメインを指定すると、リソース、セキュリティ コンテキスト、カルチャ情報を他のアドインと簡単に共有できます。

アドインのアプリケーション ドメインに適用されるセキュリティのコンテキストを考慮する必要があります。 たとえば、ホスト アプリケーションは完全信頼で実行するが、アドインはもっと少ないアクセス許可で実行することが必要な場合があります。 Activate メソッドのオーバーロードを使用して、AddInSecurityLevel 列挙体でセキュリティ ゾーンを指定できます。 これらのセキュリティ ゾーンには、FullTrustHostIntranet、または Internet があります。 セキュリティ ゾーンに適切なアクセス許可は、アプリケーション ドメインで実行中のコードにも適用されます。 これらのセキュリティ ゾーンで使用できるアクセス許可は、既存の .NET Framework セキュリティ設定に依存しています。

セキュリティ ゾーンのアクセス許可を使用しない場合は、Activate メソッドのオーバーロードを使用して、独自の PermissionSet オブジェクトを用意できます。

Activate メソッドのオーバーロードを使用して、アドイン用に外部プロセスを作成するか、アドインをホストするために作成された既存の外部プロセスにアドインをアタッチできます。 これらのオーバーロードは AddInProcess クラスおよび AddInEnvironment クラスを使用します。 外部プロセスのアドインをアクティブ化する方法の詳細については、「方法 : さまざまな分離レベルとセキュリティ レベルのアドインをアクティブにする」を参照してください。

アドインの有効期間制御

AddInController クラスには、次のアドイン タスクのためのメソッドがあります。

  • アドインのシャットダウン。

  • アドインのアプリケーション ドメインの取得。

  • 将来のアクティブ化に備えたアドインのトークンの取得。

  • 外部プロセスのアクティブ化で使用するための AddInEnvironment オブジェクトの取得。

指定したアドインのコントローラーを取得するには、GetAddInController メソッドを使用します。

Shutdown メソッドは、アドインをシャットダウンするために必要な詳細情報を処理します。 詳細情報には、アドインの読み込み場所、アプリケーション ドメイン、さらに場合によってはアドインが実行されている外部プロセスに関する情報が含まれます。 アプリケーション ドメインが自動的に作成された場合、このメソッドはそのアプリケーション ドメインをアンロードします。 アドインが指定のアプリケーション ドメインでアクティブ化された場合、リモート コントラクト オブジェクトでの有効期間サービスはタイムアウトとなり、アプリケーション ドメインはロードされたままになります。 コントラクト オブジェクトが破棄されると、アドインはガベージ コレクションにより再利用できるようになります。

次の例では、自動的に作成されるアプリケーション ドメイン内でセキュリティ レベルを指定してアドインをアクティブ化しています。

'Ask the user which add-in they would like to use.
Dim selectedToken As AddInToken = ChooseAddIn(tokens)
'Activate the selected AddInToken in a new
'application domain with the Internet trust level.
Dim CalcAddIn As Calculator = selectedToken.Activate(Of Calculator)(AddInSecurityLevel.Internet)
'Run the add-in using a custom method.
RunCalculator(CalcAddIn)
//Ask the user which add-in they would like to use.
AddInToken selectedToken = ChooseAddIn(tokens);

//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);

//Run the add-in using a custom method.
RunCalculator(CalcAddIn);

参照

処理手順

方法 : さまざまな分離レベルとセキュリティ レベルのアドインをアクティブにする

概念

アドインおよび拡張機能

アドイン探索

有効期間管理

コントラクト、ビュー、およびアダプター