読み込むランタイム バージョンの決定

共通言語ランタイムは、次の情報を使用して、アプリケーションのために読み込むランタイム バージョンを決定します。

  • 利用できるランタイム バージョン

  • アプリケーションがサポートするランタイム バージョン

サポートされているランタイム バージョン

ランタイムは、アプリケーション構成ファイルとポータブル実行可能 (PE) ファイル ヘッダーを使用して、アプリケーションがサポートするランタイムのバージョンを決定します。アプリケーション構成ファイルが存在しない場合、ランタイムはアプリケーションの PE ファイル ヘッダーで指定されているランタイム バージョンを読み込みます。ただし、このバージョンが利用できる場合です。

アプリケーション構成ファイルが存在する場合は、次のプロセスの結果に基づいて、ランタイムは読み込む適切なバージョンを決定します。

  1. ランタイムは、アプリケーション構成ファイルの <supportedRuntime> 要素 要素を調べます。サポートされているランタイム バージョンが <supportedRuntime> 要素で 1 つ以上指定されている場合、ランタイムは最初の <supportedRuntime> 要素で指定されているランタイム バージョンを読み込みます。このバージョンが利用できない場合、ランタイムは次の <supportedRuntime> 要素を調べ、指定されているランタイム バージョンの読み込みを試みます。このランタイム バージョンが利用できない場合は、次の <supportedRuntime> 要素を調べます。サポートされるランタイム バージョンがどれも利用できない場合、ランタイムはランタイム バージョンの読み込みに失敗し、メッセージが表示されます (手順 3. 参照)。

  2. ランタイムはアプリケーションの実行可能ファイルの PE ファイル ヘッダーを読み込みます。PE ファイル ヘッダーで指定されたランタイム バージョンが利用できる場合、ランタイムはこのバージョンを読み込みます。指定されたランタイム バージョンが利用できない場合は、PE ヘッダーのランタイム バージョンと互換性があると Microsoft によって決められたランタイム バージョンを検索します。このバージョンが見つからない場合、プロセスは手順 3. に進みます。

  3. ランタイムは、アプリケーションがサポートしているランタイム バージョンが利用できないことを示すメッセージを表示します。ランタイムは読み込まれません。

    Noteメモ :

    このメッセージが表示されないようにするには、レジストリ キー HKLM\Software\Microsoft\.NETFramework の値 NoGuiFromShim を使用するか、環境変数 COMPLUS_NoGuiFromShim を使用します。たとえば、無人インストールや Windows サービスなど、一般にはユーザーとの対話が不要なアプリケーションの場合、このメッセージを抑制できます。このメッセージを抑制すると、ランタイムによって、イベント ログにメッセージが書き込まれます。レジストリ値 NoGuiFromShim を 1 に設定すると、コンピュータ上のすべてのアプリケーションで、このメッセージが抑制されます。別の方法として、COMPLUS_NoGuiFromShim 環境変数を 1 に設定すると、特定のユーザー コンテキストで実行されるアプリケーションについてメッセージを抑制できます。

Noteメモ :

ランタイム バージョンが読み込まれた後、アセンブリ バインディングのリダイレクトによって、.NET Framework アセンブリの異なるバージョンを読み込むように指定されることがあります。これらのバインディングのリダイレクトは、リダイレクトされた特定のアセンブリだけに適用されます。

参照

概念

アセンブリ バインディングのリダイレクト
ランタイム バージョン情報の検索
アセンブリ バインディングのリダイレクトの構成

その他の技術情報

side-by-side 実行の基本