side-by-side 実行

side-by-side 実行は、アプリケーションまたはコンポーネントの複数のバージョンを同じコンピューターで実行する機能です。 共通言語ランタイムの複数のバージョン、および 1 つの共通言語ランタイムを使用するアプリケーションとコンポーネントの複数のバージョンを同じコンピューターで同時に実行できます。

共通言語ランタイムの 2 つの異なるバージョンを同じコンピューターで使用する複数のアプリケーションを次の図に示します。 アプリケーション A、B、および C はランタイム バージョン 1.0 を使用し、アプリケーション D はランタイム バージョン 1.1 を使用します。

ランタイムの 2 つのバージョンの side-by-side 実行

side-by-side 実行

.NET Framework は、共通言語ランタイムと API 型を含む 24 個前後のアセンブリで構成されています。 ランタイムと .NET Framework アセンブリは、個別にバージョン管理されます。 たとえば、ランタイムのバージョン 1.0 は実際にはバージョン 1.0.3705.0 で、.NET Framework アセンブリのバージョン 1.0 はバージョン 1.0.3300.0 です。

コンポーネントの 2 つの異なるバージョンを同じコンピューターで使用する複数のアプリケーションを次の図に示します。 アプリケーション A とアプリケーション B はコンポーネントのバージョン 1.0 を使用し、アプリケーション C は同じコンポーネントのバージョン 2.0 を使用します。

コンポーネントの 2 つのバージョンの side-by-side 実行

side-by-side 実行

side-by-side 実行により、アプリケーションがバインドするコンポーネントのバージョンやアプリケーションが使用するランタイムのバージョンをより詳細に制御できます。

side-by-side 実行の利点

Windows XP および .NET Framework 以前では、アプリケーションは同じコードの非互換バージョンを識別できないため、DLL の競合が発生することがありました。 DLL に含まれる型情報は、ファイル名だけに関連付けられていました。 アプリケーションは、DLL に含まれている型とアプリケーションの作成に使用された型が同じであるかどうかを判断できませんでした。 この結果、新しいバージョンのコンポーネントが古いバージョンを書き変え、アプリケーションが壊れてしまうことがありました。

side-by-side 実行と .NET Framework によって、DLL の競合を防ぐ次の機能が得られます。

  • 厳密な名前付きアセンブリ

    side-by-side 実行機能は、厳密な名前付きアセンブリを使用して、型情報をアセンブリの特定のバージョンにバインドします。 これによって、アプリケーションまたはコンポーネントが、アセンブリの無効なバージョンをバインドするのを防げます。 また、厳密な名前付きアセンブリによって、1 つのファイルの複数のバージョンが同じコンピューター上に存在することが可能で、アプリケーションはこれらを使用できます。 詳細については、「厳密な名前付きアセンブリ」を参照してください。

  • バージョンを認識するコード ストレージ

    .NET Framework のグローバル アセンブリ キャッシュには、バージョンを認識するコード ストレージが用意されています。 グローバル アセンブリ キャッシュは、コンピューター全体にわたるコード キャッシュで、.NET Framework がインストールされているすべてのコンピューターに存在します。 グローバル アセンブリ キャッシュは、バージョン、カルチャ、発行者の情報に基づいてアセンブリを格納し、コンポーネントおよびアプリケーションの複数バージョンをサポートします。 詳細については、「グローバル アセンブリ キャッシュ」を参照してください。

  • 分離

    .NET Framework を使用すると、分離して実行できるアプリケーションとコンポーネントを作成できます。 分離は、side-by-side 実行に欠くことのできない構成要素です。 分離には、使用しているリソースを認識し、アプリケーションまたはコンポーネントの複数のバージョンでこれを確実に共有する処理も含まれます。 また、分離には、バージョンに固有の方法でファイルを格納する方法も含まれます。 分離の詳細については、「side-by-side 実行用のアプリケーションおよびコンポーネントを作成するときのガイドライン」を参照してください。

バージョンの互換性

.NET Framework Version 1.0 と 1.1 は互換性を持つようにデザインされています。 .NET Framework Version 1.0 で作成されたアプリケーションはバージョン 1.1 で動作し、.NET Framework Version 1.1 で作成されたアプリケーションはバージョン 1.0 で動作する必要があります。 ただし、.NET Framework Version 1.1 で追加された API 機能は、.NET Framework Version 1.0 では動作しません。 .NET Framework Version 2.0 で作成されたアプリケーションは .NET Framework Version 2.0 でのみ動作します。 .NET Framework Version 2.0 で作成されたアプリケーションは、Version 1.1 以前では動作しません。

.NET Framework のバージョンは、ランタイムとそれに対応する .NET Framework アセンブリで構成される単一のユニットとして扱われます。この概念をアセンブリの統一と呼んでいます。 他のバージョンの .NET Framework アセンブリを含むようにアセンブリ バインディングをリダイレクトすることもできますが、既定のアセンブリ バインディングのオーバーライドは危険性が伴うため、配置する前に厳密なテストが必要です。

関連トピック

タイトル

説明

ランタイム バージョン情報の検索

アプリケーション用に読み込むランタイムのバージョンに関する情報をランタイムが検索する方法について説明します。

.NET Framework アセンブリ統合の概要

異なるバージョンの .NET Framework アセンブリへの参照をランタイムがどのように扱うかについて説明します。

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

アプリケーション用にどのバージョンのランタイムを読み込むのかをランタイムが決定するまでの手順について説明します。

アセンブリ バインディングのリダイレクト

アプリケーションをアセンブリの特定のバージョンにバインドする方法について説明します。

部分限定アセンブリ参照と side-by-side 実行

side-by-side 実行で使用するアプリケーションの部分限定アセンブリ参照の使用についての関連事項を説明します。

発行者ポリシー ファイルと side-by-side 実行

アセンブリ バインディングをリダイレクトする発行者ポリシー ファイルの使用方法に関する情報と手順について説明します。

サテライト アセンブリと side-by-side 実行

side-by-side 実行でのサテライト アセンブリの処理方法について説明します。

インストールされている .NET Framework バージョンの確認

.NET Framework の複数のバージョンのインストールと使用方法について説明します。

方法 : アプリケーション構成ファイルを使用して対象とする .NET Framework のバージョンを指定する

アプリケーションが共通言語ランタイムのバージョンをターゲットにするときに使用する構成ファイルの作成方法について説明します。

複数バージョンのアプリケーションまたはコンポーネントの作成

side-by-side 実行用に設計されたアプリケーションおよびコンポーネントの作成方法と配置方法について説明します。

アプリケーションおよびコンポーネントのサービス方針の決定

バージョン管理されるコンポーネントおよびアプリケーションのサービス モデルの作成方法について説明します。

インプロセスの side-by-side 実行

インプロセスのランタイム ホストの並行アクティブ化を使用して、1 つのプロセスで複数のバージョンの CLR を実行する方法について説明します。

共通言語ランタイムのアセンブリ

アセンブリの概念的な概要を説明します。

アプリケーション ドメイン

アプリケーション ドメインの概念的な概要を説明します。

参照

<supportedRuntime> 要素