MSBuild ターゲット フレームワークおよびターゲット プラットフォーム

プロジェクトはターゲット フレームワークとターゲット プラットフォームで動作するようにビルドできます。ターゲット フレームワークとは .NET Framework の特定のバージョンを表し、ターゲット プラットフォームとは特定のソフトウェア アーキテクチャを表します。 たとえば、80x86 プロセッサ ファミリ ("x86") と互換性のある 32 ビット プラットフォーム上の .NET Framework 2.0 で動作するアプリケーションを対象とすることができます。 ターゲット フレームワークとターゲット プラットフォームの組み合わせはターゲット コンテキストと呼ばれます。

重要

この記事では、ターゲット フレームワークを指定するための従来の方法を示します。 SDK スタイルのプロジェクトでは、netstandard のようなさまざまな TargetFrameworks が有効になります。 詳細については、「ターゲット フレームワーク」をご覧ください。

ターゲット フレームワークとプロファイル

ターゲット フレームワークとは、ビルドするプロジェクトの実行対象とする .NET Framework の特定のバージョンを意味します。 ターゲット フレームワークの仕様は必須です。これは、ターゲット フレームワークの仕様によって、そのフレームワークのバージョン専用のコンパイラ機能とアセンブリ参照が利用可能になるためです。

現在、.NET Framework については次のバージョンを使用できます。

  • .NET Framework 2.0 (Visual Studio 2005 に付属)

  • .NET Framework 3.0 (Windows Vista に付属)

  • .NET Framework 3.5 (Visual Studio 2008 に付属)

  • .NET Framework 4.0

  • .NET Framework 4.5.2

  • .NET Framework 4.6 (Visual Studio 2015 に付属)

  • .NET Framework 4.6.1

  • .NET Framework 4.6.2

  • .NET Framework 4.7

  • .NET Framework 4.7.1

  • .NET Framework 4.7.2

  • .NET Framework 4.8

.NET Framework の各バージョンでは、参照できるアセンブリの一覧がそれぞれ異なっています。 たとえば、WPF (Windows Presentation Foundation) アプリケーションをビルドするには、プロジェクトが .NET Framework のバージョン 3.0 以上 を対象としている必要があります。

ターゲット フレームワークは、プロジェクト ファイルの TargetFrameworkVersion プロパティで指定されます。 プロジェクトのターゲット フレームワークを変更するには、Visual Studio 統合開発環境 (IDE) でプロジェクトのプロパティ ページを使用します。 詳細については、.NET Framework のターゲット バージョンを指定する」を参照してください。 TargetFrameworkVersion に使用できる値は、v2.0v3.0v4.0v3.5v4.5.2v4.6v4.6.1v4.6.2v4.7v4.7.1v4.7.2v4.8 です。

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

目標一覧表はターゲット フレームワークのサブセットです。 たとえば、.NET Framework 4 Client Profile には、MSBuild アセンブリへの参照が含まれていません。

Note

ターゲット プロファイルは、ポータブル クラス ライブラリにのみ適用されます。

ターゲット プロファイルは、プロジェクト ファイルの TargetFrameworkProfile プロパティで指定されます。 目標一覧表を変更するには、IDE でプロジェクトのプロパティ ページにあるターゲット フレームワークのコントロールを使用します。

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>

ターゲット プラットフォーム

プラットフォームは、特定のランタイム環境を定義するハードウェアとソフトウェアの組み合わせです。 たとえば、オブジェクトに適用された

  • x86 は、Intel 80x86 プロセッサまたはそれに相当するプロセッサで実行されている 32 ビット Windows オペレーティング システムを示しています。
  • x64 は、Intel x64 プロセッサまたはそれに相当するプロセッサで実行されている 64 ビット Windows オペレーティング システムを示しています。
  • anycpu は、任意のプラットフォーム上で実行できるように構成された出力を指定します。 可能な場合は、アプリケーションを 64 ビット プロセスとして実行し、32 ビット モードしか使用できない場合は、32 ビットにフォールバックします。
  • anycpu32bitpreferred は、任意のプラットフォーム上で実行される出力を指定します。 64 ビットと 32 ビットの両方のアプリケーションをサポートするシステムで、32 ビット モードでアプリケーションを実行します。
  • Xbox は、Microsoft Xbox 360 プラットフォームを示しています。
  • ARM は、Advanced RISC Machine (ARM) プロセッサ搭載のコンピューター上で実行されるように、アセンブリをコンパイルします。
  • ARM64 では、A64 命令セットをサポートする Advanced RISC Machine (ARM) プロセッサが搭載されたコンピューター上の 64 ビット CLR で実行されるように、アセンブリがコンパイルされます。

ターゲット プラットフォームは、ビルドするプロジェクトの実行対象となる特定のプラットフォームです。 ターゲット プラットフォームは、プロジェクト ファイルの PlatformTarget ビルド プロパティで指定されます。 ターゲット プラットフォームを変更するには、IDE でプロジェクトのプロパティ ページまたは [構成マネージャー] を使用します。

<PropertyGroup>
   <PlatformTarget>x86</PlatformTarget>
</PropertyGroup>

PlatformTarget の値はコンパイラに渡され、生成される出力が決まります。 C# プロジェクトの場合は、C# コンパイラ オプション -platform にマップされます。 プラットフォーム オプションについて詳しくは、コンパイラ オプション: PlatformTarget に関する記事で説明されています。

ターゲット構成はターゲット プラットフォームのサブセットです。 たとえば、x86Debug 構成には、ほとんどのコード最適化が含まれていません。 ターゲット構成は、プロジェクト ファイルの Configuration ビルド プロパティで指定されます。 ターゲット構成を変更するには、プロジェクトのプロパティ ページまたは [構成マネージャー] を使用します。

<PropertyGroup>
   <PlatformTarget>x86</PlatformTarget>
   <Configuration>Debug</Configuration>
</PropertyGroup>