Visual Studio のマルチ ターゲットの概要

Visual Studio のマルチターゲット機能を使用すると、アプリケーションで必要な .NET Framework の特定のバージョンまたはプロファイルを指定できます。 マルチターゲットの主な利点は、現在のバージョンの Visual Studio を使用して、以前のバージョンの .NET Framework を対象とするプロジェクトを作成および開発できることです。 たとえば、新しい .NET Framework 依存関係を追加せずに、Visual Studio 2005 および Visual Studio 2008 で作成されたプロジェクトの開発を継続できます。 マルチターゲット機能により、アプリケーションは指定された .NET Framework バージョンで利用できる機能だけを使用するようになります。 さらに、マルチターゲット機能を使用すると、新しい .NET Framework バージョンを配置パッケージに追加せずに、古いアプリケーションの配置を継続できます。

注意

Visual Studio のマルチターゲット機能では、アプリケーションが複数のバージョンの .NET Framework で機能することは保証されません。 マルチターゲット機能を使用して、アプリケーションの対象となる .NET Framework バージョンを選択できます。 選択したバージョンで実行できるかどうかを確認するために、アプリケーションをテストする必要があります。 Visual Studio のマルチターゲットは、.NET Framework 2.0 以降のバージョンにのみ適用されます。

.NET Framework のバージョンとプロファイル

Visual Studio 2010 に含まれるのは、.NET Framework 4 だけです。 以前のバージョンの .NET Framework を対象にするには、.NET Framework 3.5 SP1 をインストールしておく必要があります。 .NET Framework 3.5 SP1 には、.NET Framework 2.0、.NET Framework 3.0、および .NET Framework 3.5 SP1 が含まれています。 .NET Framework 3.5 SP1 のダウンロードとインストールについては、Microsoft ダウンロード センター Web サイトの「Microsoft .NET Framework 3.5 Service Pack 1」を参照してください。

.NET Framework プロファイルは、特定のライブラリおよび機能のセットを備えた .NET Framework のサブセットです。 Framework プロファイルの例としては、クライアント アプリケーションを作成するために使用するクライアント プロファイルが挙げられます。 クライアント プロファイルの詳細については、「.NET Framework Client Profile」を参照してください。

対象となる .NET Framework のバージョンまたはプロファイルを指定するには、プロジェクトの作成時に [新しいプロジェクト] ダイアログ ボックスでバージョンまたはプロファイルを選択します。 この選択内容に基づいて、使用できるプロジェクト テンプレートの一覧が抽出されます。

注意

Visual Studio Express Edition では、[新しいプロジェクト] ダイアログ ボックスでマルチターゲットを使用できません。

対象とする .NET Framework バージョンの変更

既存のプロジェクトの対象となる .NET Framework のバージョンまたはプロファイルを変更するには、プロジェクトのプロパティを変更します。 詳細については、「[アプリケーション] ページ (プロジェクト デザイナー) (C#)」および「[ビルドの詳細設定] ダイアログ ボックス (Visual Basic)」を参照してください。

Visual Studio では、対象とする .NET Framework バージョンを変更するときに、参照されるアセンブリのバージョンが自動的に変更されないことがあります。 そのような場合は、手動での変更が必要になることもあります。 詳細については、「.NET Framework を対象とするエラーのトラブルシューティング」を参照してください。

マルチ ターゲット機能

Visual Studio のマルチ ターゲット機能には、次の特徴があります。

  • 旧バージョンの .NET Framework を対象とするプロジェクトを Visual Studio で開いたときに、そのプロジェクトを自動的にアップグレードしたり、前のバージョンを対象とした状態を維持したりすることができます。

  • 新しいプロジェクトを作成するときに、対象とする .NET Framework のバージョンを指定できます。

  • 既存のプロジェクトの対象となっている .NET Framework のバージョンを変更できます。

  • 同じソリューションの別々のプロジェクトで、異なるバージョンの .NET Framework を対象とすることができます。

  • プロジェクトの対象となる .NET Framework のバージョンを変更すると、Visual Studio では、参照ファイルおよび構成ファイルに対して必要な変更が加えられます。

さらに、旧バージョンの .NET Framework を対象とするプロジェクトで作業する場合、Visual Studio は開発環境で次のような変更を動的に行います。

  • [新しいプロジェクト][新しい項目の追加][新しい参照の追加][サービス参照の追加] の各ダイアログ ボックスの項目をフィルター処理して、新しいバージョンでのみ使用可能な選択肢を除外します。

  • ツールボックスのカスタム コントロールをフィルター処理して、新しいバージョンでのみ使用可能なコントロールを除外したり、対象とするバージョンに複数のコントロールが使用可能である場合に最新のバージョンを表示したりします。

  • IntelliSense をフィルター処理して、新しいバージョンでのみ使用可能な言語機能を除外します。

  • プロパティ ウィンドウのプロパティをフィルター処理して、新しいバージョンでのみ使用可能なプロパティを除外します。

  • メニュー オプションをフィルター処理して、新しいバージョンでのみ使用可能なオプションを除外します。

  • 適切なバージョンのコンパイラで、適切なコンパイラ オプションを使用してコンパイルおよびビルドします。

複数のバージョンの .NET Framework と互換性を持つアプリケーションの開発

複数のバージョンの .NET Framework と互換性を持つアプリケーションを開発する場合は、古いバージョンの .NET Framework を対象とするアプリケーションを開発してから、新しいバージョンの .NET Framework を対象としてビルドすることをお勧めします。 たとえば、.NET Framework 3.5 を対象とするアプリケーションを開発し、.NET Framework 4 を対象としてビルドできます。

システム参照およびユーザー アセンブリ参照の解決

[参照の追加] ダイアログ ボックスでは、対象となる .NET Framework のバージョンと関係のないシステム アセンブリが無効になります (システム アセンブリとは .dll ファイルのことで、ある .NET Framework バージョンの一部です)。 これにより、ターゲット バージョンにないアセンブリへの参照を追加せずに済みます。 プロジェクト ファイルを変更し、現在プロジェクトでターゲットとなっているバージョンより新しい .NET Framework バージョンに属する参照を組み込む場合、その参照は解決されません。また、この参照に依存するコントロールを追加または使用することもできません。 この参照を解決するには、プロジェクトの .NET Framework ターゲットをその参照が含まれるターゲットに切り替えます。これはプロジェクトの [プロパティ ページ] 上で行うことができます。 詳細については、「プロジェクト デザイナーを使用したプロジェクトのプロパティの管理」を参照してください。

LINQ の有効化

.NET Framework Version 3.5 以降にプロジェクトを移行する場合、System.Core の参照と System.Linq のプロジェクトレベル インポート (Visual Basic のみ) が自動的に追加されます。 LINQ 機能を使用する場合は、[Option Infer] もオンにする必要があります (Visual Basic のみ)。 対象となる .NET Framework のバージョンを 3.0 または 2.0 に変更すると、この参照とインポートは自動的に削除されます。 詳細については、「方法 : LINQ プロジェクトを作成する」を参照してください。

参照

概念

ASP.NET Web プロジェクト用の .NET Framework のマルチ ターゲット機能

その他の技術情報

MSBuild Concepts