サイド バイ サイド アセンブリをリソースとして使用する
マニフェストは、アプリケーションのバイナリ実行可能ヘッダー ファイル内のリソースとしてアプリケーションに追加できます。 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 による呼び出しのリダイレクトにのみ使用する必要があります。 他のメソッドによる読み込みは影響を受けません。