サイド バイ サイド アセンブリをリソースとして使用する
マニフェストは、アプリケーションのバイナリ実行可能ヘッダー ファイル内のリソースとしてアプリケーションに追加できます。 MANIFEST_RESOURCE_IDの値によって、マニフェストで説明されているサイド バイ サイド アセンブリの依存関係がローダーによってどのように使用されるかが決まります。
MANIFEST_RESOURCE_IDを 1 に設定すると、ローダーはマニフェストで指定されたサイド バイ サイド アセンブリ依存関係をプロセスの既定値として使用します。 すべてのプラグインでは、このプロセスの既定値も使用されます。
次の表は、-DISOLATION_AWARE_ENABLED フラグを使用してアプリケーションをコンパイルするときに、ローダーがMANIFEST_RESOURCE_IDのさまざまな値にマニフェストを使用する方法をまとめたものです。 値 1 から 16 は、Windows XP で使用するために予約されていることに注意してください。 開発者は、アクティブ化コンテキスト リファレンスで説明されている関数を使用してアクティブ化コンテキストを管理する場合に、他の値を使用できます。
| MANIFEST_RESOURCE_IDの値 | マニフェストはプロセスの既定値を指定しますか? | 静的インポートに使用しますか? | EXE に使用しますか? | DLL に使用しますか? | -DISOLATION_AWARE_ENABLED でコンパイルされた場合は、サイド バイ サイド バージョンのアセンブリを使用しますか? |
|---|---|---|---|---|---|
| 1 | はい | はい | はい | いいえ | はい |
| 2 | いいえ | はい | はい | はい | はい |
| 3 | いいえ | いいえ | はい | はい | はい |
MANIFEST_RESOURCE_ID 1 は、プラグインをホストしないアプリケーションに使用する必要があります。アプリケーションのすべての部分でマニフェストで指定されたサイド バイ サイド アセンブリのバージョンを使用する必要がある場合は、MANIFEST_RESOURCE_ID 1 を使用します。 詳細については、「 拡張機能のないアプリケーションでのアセンブリの有効化」を参照してください。
MANIFEST_RESOURCE_ID 2 は、サード パーティ製のコントロールまたはプラグインをホストするアプリケーションに使用する必要があります。この場合、マニフェストは、静的読み込み、DllMain の呼び出し、および -DISOLATION_AWARE_ENABLED によってリダイレクトされる呼び出しによって読み込まれるすべてのサイド バイ サイド アセンブリに影響します。 詳細については、「DLL、拡張機能、またはコントロール パネルをホストするアプリケーションでアセンブリを有効にする」を参照してください。
MANIFEST_RESOURCE_ID 3 は、-DISOLATION_AWARE_ENABLED による呼び出しのリダイレクトにのみ使用する必要があります。 他のメソッドによる読み込みは影響を受けません。