次の方法で共有


複数のフレームワーク バージョンとプラットフォームをターゲットとする

MSBuild を使用すると、アプリケーションをコンパイルして、複数のバージョンの .NET Framework のいずれか、および複数のシステム プラットフォームのいずれかで実行できます。 たとえば、アプリケーションをコンパイルして 32 ビット プラットフォーム上の .NET Framework 2.0 で実行し、同じアプリケーションをコンパイルして 64 ビット プラットフォーム上の .NET Framework 4.5 で実行できます。

手記

この記事では、プロジェクトが一度に 1 つのフレームワークと 1 つのプラットフォームのみを対象にできる、.NET Framework ビルドに適用される以前の種類のマルチターゲットについて説明します。 .NET Core および .NET 5 以降では、プロジェクト ファイルの TargetFrameworks (複数形) プロパティを使用して、新しい種類のマルチターゲットを使用できます。 dotnet build または同様の .NET CLI コマンドを使用してビルドする場合、またはプロジェクトを再読み込みした後に Visual Studio を使用する場合、ビルドでは新しい種類のマルチターゲットが使用されます。この場合、一覧表示されているターゲット フレームワークごとに複数のビルドが 1 回実行されます。 ターゲット フレームワーク を参照してください。

MSBuild のターゲット設定の機能の一部を次に示します。

  • 以前のバージョンの .NET Framework (バージョン 2.0、3.5、4 など) を対象とするアプリケーションを開発できます。

  • .NET Framework 以外のフレームワーク (Silverlight Framework など) を対象にすることができます。

  • ターゲット フレームワークの定義済みのサブセットである、フレームワーク プロファイルをターゲットにすることができます。

  • 現在のバージョンの .NET Framework のサービス パックがリリースされた場合は、それをターゲットにすることができます。

  • MSBuild のターゲット設定では、アプリケーションが対象のフレームワークとプラットフォームで使用できる機能のみを使用することが保証されます。

ターゲット フレームワークとプラットフォーム

ターゲット フレームワーク は、プロジェクトを実行するためにビルドされる .NET Framework のバージョンであり、ターゲット プラットフォーム は、プロジェクトを実行するためにビルドされるシステム プラットフォームです。 たとえば、.NET Framework 2.0 アプリケーションをターゲットにして、80x86 プロセッサ ファミリ (x86) と互換性のある 32 ビット プラットフォームで実行することができます。 ターゲット フレームワークとターゲット プラットフォームの組み合わせは、ターゲット コンテキストと呼ばれます。 詳細については、「ターゲット フレームワークとターゲット プラットフォームの 」を参照してください。

ツールセット (ToolsVersion)

ツールセットは、アプリケーションの作成に使用されるツール、タスク、およびターゲットをまとめて収集します。 ツールセットには、csc.exevbc.exeなどのコンパイラ、共通ターゲット ファイル (microsoft.common.targets)、共通タスク ファイル (microsoft.common.tasks) が含まれます。 4.5 ツールセットを使用して、.NET Framework バージョン 2.0、3.0、3.5、4、および 4.5 をターゲットにすることができます。 ただし、2.0 ツールセットは、.NET Framework バージョン 2.0 を対象とするためにのみ使用できます。 詳細については、「ツールセットの (ToolsVersion)」を参照してください。

参照アセンブリ

ツールセットで指定されている参照アセンブリは、アプリケーションの設計とビルドに役立ちます。 これらの参照アセンブリは、特定のターゲット ビルドを有効にするだけでなく、Visual Studio IDE のコンポーネントと機能をターゲットと互換性のあるコンポーネントと機能に制限します。 詳細については、「デザイン時にアセンブリを解決する 」を参照してください。

ターゲットとタスクを構成する

MSBuild でアウトプロセスを実行するように MSBuild ターゲットとタスクを構成して、実行しているコンテキストとは大きく異なるコンテキストをターゲットにすることができます。 たとえば、開発用コンピューターが .NET Framework 4.5 を使用する 64 ビット プラットフォームで実行されている間に、32 ビットの .NET Framework 2.0 アプリケーションをターゲットにすることができます。 詳細については、「ターゲットとタスクの構成」を参照してください。

トラブルシューティング

ターゲット コンテキストに含まれていないアセンブリを参照しようとすると、エラーが発生する可能性があります。 これらのエラーとその解決方法の詳細については、「.NET Framework ターゲット エラーのトラブルシューティングを参照してください。