アクティベーション構成ファイル
マネージ拡張モデルを提供するアプリケーションは、アプリケーション構成ファイルまたはホスト構成ファイル内にバージョンを指定することで、拡張機能が .NET Framework ランタイムの特定のバージョンで実行されることを要求できます。 .NET Framework Version 4 より前は、より新しいバージョンのランタイムで拡張機能を記述する唯一の方法は、アプリケーションに別の構成ファイルを提供することでした。 あいにく、これにより、すべての拡張機能に対してより新しいランタイムの使用が強制されるという望ましくない結果になりました。
アクティブ化構成ファイルは、拡張機能の作成者がアプリケーションの拡張モデルをプラットフォームとして使用し、読み込まれるすべての拡張機能を完全に制御するという特定のシナリオに対して別のソリューションを提供します。 このシナリオでは、ランタイムのどのバージョンが読み込まれてアクティブ化されるかを拡張機能の作成者が決定できる点が合理的です。
たとえば、.NET Framework 4 を使用して Microsoft 管理コンソール (MMC) スナップインのセットを作成し、MMC が .NET Framework Version 2.0 ランタイムのアクティブ化を指定するコンピューターで管理コンソールのユーザー インターフェイスをカスタマイズすることが必要な場合があります。 MMC のアクティブ化情報を直接置換することはできませんが、環境変数を使用して、特定のコンソールに対してオーバーライドするアクティブ化構成ファイルの場所を指定し、コンソールの起動時に .NET Framework 4 ランタイムがアクティブ化されるようにすることはできます。
アクティブ化構成ファイルの提供
アクティブ化構成ファイル名は、アプリケーション構成ファイル名と同じパターンに従いますが、拡張子 .activation_config を使用します。 たとえば、MyApp.exe という名前のアプリケーションのアプリケーション構成ファイルの名前は MyApp.exe.config で、アクティブ化構成ファイルの名前は MyApp.exe.activation_config です。
アクティブ化構成ファイルには、任意の構成ファイル要素を含めることができますが、解析される要素はアクティブ化に通常使用される次の要素だけです。
<startup> セクションの要素。
<runtime> セクションの <gcServer> 要素、<appdomainResourceMonitoring> 要素、および <etwEnable> 要素。
重要 アクティブ化構成ファイル内のこの 3 つの <runtime> 設定が、アプリケーション構成ファイルまたはホスト構成ファイル内の対応する設定と同じであることを確認してください。
アクティブ化構成ファイルは、ランタイムを起動する shim コードでのみ使用されます。 ランタイム自体には、ファイルとのやり取りはありません。
アプリケーション構成ファイルを作成した後で、COMPLUS_ApplicationMigrationRuntimeActivationConfigPath 環境変数をファイルが置かれているパスに設定します。 アクティブ化するランタイムの選択プロセス中に、このパスで、名前がパターンと一致するアプリケーション構成ファイルが検索されます。
環境変数が設定されていても、指定したパスにパターンと一致するアクティブ化構成ファイルが含まれていない場合、ランタイムのアクティブ化は、通常どおりアプリケーション構成ファイルまたはホスト構成ファイルによって制御されます。
環境変数は、グローバルに設定するか、環境を構成するランチャー プロセスで設定できます。 グローバル環境変数の設定は、他のアプリケーションとの競合状態を引き起こします。
たとえば、次のコマンド ライン セッションは、アクティブ化構成ファイルをフォルダーにコピーし、環境変数をそのパスに設定し、アプリケーションを実行します。
copy c:\MyConfigs\MyApp.exe.activation_config c:\CustomConfigs
set COMPLUS_ApplicationMigrationRuntimeActivationConfigPath =
c:\CustomConfigs
c:\Program Files\MyApp\MyApp.exe
次のアクティブ化構成ファイルは、.NET Framework 4 ランタイムのアクティブ化を指定し、架空のアプリケーションの構成ファイルから架空の <appDomainResourceMonitoring> 設定を複製します。
<configuration>
<startup>
<supportedRuntime version="v4.0.xxxx"/>
</startup>
<runtime>
<appDomainResourceMonitoring enabled="true"/>
</runtime>
</configuration>
サポートされているアクティブ化方法
アクティブ化構成ファイルは、次のアクティブ化方法に影響します。 "レガシ" という用語は、.NET Framework 4 より前のバージョンの .NET Framework を意味します。
.NET Framework 4 がインストールされているコンピューターでのマネージ .exe ファイルの実行。
レガシ ホスト API の使用。たとえば、CorBindToRuntimeHost グローバル関数など。
Visual C++ で作成されたレガシ混在モード コンポーネントの読み込みと実行。
レガシ COM コンポーネントの読み込みと実行。
メモ アクティブ化構成ファイルは、.NET Framework 4 以降を使用して作成された COM コンポーネントを読み込んで実行するときには使用されません。
METAHOST_POLICY_USE_PROCESS_IMAGE_PATH フラグを指定した、ホスト API の ICLRMetaHostPolicy::GetRequestedRuntime メソッドの使用。
ICLRMetaHostPolicy::GetRequestedRuntime メソッドの使用と、pwzBinary パラメーターのアセンブリ ファイル パスの指定。
メモ アクティブ化構成ファイルは、ICLRMetaHostPolicy::GetRequestedRuntime メソッドが呼び出され、pwzBinary パラメーターと METAHOST_POLICY_USE_PROCESS_IMAGE_PATH フラグのどちらも使用されていない場合には使用されません。