フレームワークのターゲット設定の概要
Visual Studio では、プロジェクトのターゲットにする .NET のバージョンを指定できます。 フレームワークのターゲット設定は、指定されたフレームワーク バージョンで使用できる機能のみをアプリケーションが使用することを保証するのに役立ちます。 .NET Framework アプリを別のコンピューターで実行するには、アプリケーションが対象とするフレームワークバージョンが、コンピューターにインストールされているフレームワークバージョンと互換性がある必要があります。
Visual Studio ソリューションには、さまざまなバージョンの .NET を対象とするプロジェクトを含めることができます。 ただし、1 つのビルドに対して参照条件を使用するか、ターゲット フレームワークごとに異なるバイナリをビルドするかのどちらか 1 つのバージョンの .NET に対してのみビルドできることに注意してください。 ターゲット フレームワークの詳細については、「ターゲット フレームワークの 」を参照してください。
ヒント
また、さまざまなプラットフォームのアプリケーションをターゲットにすることもできます。 詳細については、「マルチターゲティング」を参照してください。
フレームワークのターゲット設定機能
フレームワークのターゲット設定には、次の機能が含まれます。
以前のバージョンのフレームワークを対象とするプロジェクトを開くと、Visual Studio はプロジェクトを自動的にアップグレードするか、ターゲット as-isのままにすることができます。
.NET Framework プロジェクトを作成するときに、対象とする .NET Framework のバージョンを指定できます。
1 つのプロジェクトで複数のフレームワークをターゲットに設定できます。
同じソリューション内の複数のプロジェクトごとに異なるバージョンの .NET を対象にすることができます。
既存のプロジェクトが対象とする .NET のバージョンを変更できます。
プロジェクトが対象とする .NET のバージョンを変更すると、Visual Studio は参照ファイルと構成ファイルに必要な変更を加えます。
以前のフレームワーク バージョンを対象とするプロジェクトで作業する場合、Visual Studio は次のように開発環境を動的に変更します。
[新しい項目の追加] ダイアログ ボックス、[新しい参照 の追加] ダイアログ ボックス、および [サービス参照の追加] ダイアログ ボックスの項目をフィルター処理して、対象のバージョンでは使用できない選択肢を省略します。
ツールボックス のカスタム コントロールをフィルター処理して、対象のバージョンで使用できないコントロールを削除し、複数のコントロールが使用可能な場合に最も up-toの日付コントロールのみを表示します。
IntelliSense をフィルター処理して、対象のバージョンで使用できない言語機能を除外します。
プロパティ ウィンドウのプロパティをフィルター処理して、対象のバージョンで使用できないプロパティを除外します。
メニュー オプションをフィルター処理して、対象のバージョンでは使用できないオプションを省略します。
ビルドでは、コンパイラのバージョンと、ターゲット バージョンに適したコンパイラ オプションが使用されます。
手記
- フレームワークのターゲット設定では、アプリケーションが正しく実行されるとは限りません。 対象のバージョンに対してアプリケーションが実行されていることを確認するには、アプリケーションをテストする必要があります。
- .NET Framework 2.0 より前のバージョンのフレームワークを対象にすることはできません。
ターゲット フレームワークを変更する
既存の Visual Basic、C#、または F# プロジェクトでは、プロジェクトのプロパティ ダイアログ ボックスでターゲットの .NET バージョンを変更します。 C++ プロジェクトのターゲット バージョンを変更する方法については、「ターゲット フレームワークとプラットフォーム ツールセットを変更する方法」 を参照してください。
ソリューション エクスプローラー で、変更するプロジェクトの右クリック コンテキスト メニューを開き、[プロパティ] 選択します。
[プロパティ] ウィンドウの左側の列で、[ アプリケーション] タブを選択します。
手記
UWP アプリを作成した後は、対象となるバージョンの Windows または .NET を変更することはできません。
ターゲット フレームワークの の一覧で、目的のバージョンを選択します。
表示された確認ダイアログ ボックスで、[はい] ボタンを 選択します。
プロジェクトがアンロードされます。 再読み込みすると、先ほど選択した .NET バージョンが対象になります。
ソリューション エクスプローラー で、変更するプロジェクトの右クリック コンテキスト メニューを開き、[プロパティ] 選択します。
[プロパティ] ウィンドウの左側の列で、[ アプリケーション] タブを選択します。
手記
UWP アプリを作成した後は、対象となるバージョンの Windows または .NET を変更することはできません。
ターゲット フレームワークの の一覧で、目的のバージョンを選択します。
.NET Framework プロジェクトの場合、表示されるダイアログは次のスクリーンショットのようになります。
.NET プロジェクトの場合、ダイアログは次のスクリーンショットのようになります。
確認ダイアログ ボックスが表示されたら、[はい] ボタンを選択します。
プロジェクトがアンロードされます。 再読み込みすると、先ほど選択した .NET バージョンが対象になります。
複数のフレームワークをターゲットとする
.NET 5 以降では、プロジェクト ファイルを手動で編集することで、1 つのビルドで複数のフレームワークのプロジェクトをビルドできます。 プロジェクト ファイルを開き、TargetFramework
プロパティを TargetFrameworks
に置き換え、次のコードのように、ターゲット フレームワーク モニカー (TFM) の一覧をセミコロンで区切って指定します。
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
SDK スタイルのプロジェクト のターゲット フレームワークの TFM の一覧を参照してください。
この変更を行った後、プロジェクトを再読み込みする必要があります。 その後、[プロパティ] ウィンドウを開くと、[アプリケーション] タブで、ターゲット フレームワークの一覧を編集できます。
手記
対象の .NET とは異なるバージョンの .NET への参照がコードに含まれている場合は、コードをコンパイルまたは実行するときにエラー メッセージが表示されることがあります。 これらのエラーを解決するには、参照を変更します。 「.NET ターゲット エラーのトラブルシューティング」を参照してください。
ヒント
ターゲット フレームワークに応じて、プロジェクト ファイルで次の方法で表すことができます。
- .NET Core アプリの場合:
<TargetFramework>netcoreapp2.1</TargetFramework>
- .NET Standard アプリの場合:
<TargetFramework>netstandard2.0</TargetFramework>
- .NET Framework アプリの場合:
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
ターゲット フレームワークのバージョンを選択する
.NET Framework プロジェクトを作成するときに、プロジェクト テンプレートを選択した後でターゲットの .NET Framework バージョンを選択できます。 使用可能なフレームワークの一覧には、選択したテンプレートの種類に適用できるインストール済みのフレームワーク バージョンが含まれています。 non-.NET Framework プロジェクト テンプレート (.NET Core テンプレートなど) の場合、Framework ドロップダウン リストは表示されません。
.NET Framework プロジェクトの作成を選択すると、次のスクリーンショットのようなインターフェイスが表示されます:
.NET プロジェクト を作成すると、以下の2つのスクリーンショットのようにユーザーインターフェース (UI) が表示されます。
最初に表示される画面は、[新しいプロジェクト の構成] ダイアログ です。
表示される 2 番目の画面は、追加オプション ダイアログです。
システム アセンブリとユーザー アセンブリ参照の問題を解決する
.NET バージョンを対象にするには、まず適切なアセンブリ参照をインストールする必要があります。 .NET のさまざまなバージョンの開発者パックは、.NET ダウンロード ページでダウンロードできます。
.NET Framework プロジェクトの場合、参照 ダイアログ ボックスでは、ターゲットの .NET Framework バージョンに関連しないシステム アセンブリが無効になり、プロジェクトに誤って追加されないようにします。 (システム アセンブリは、.NET Framework バージョンに含まれる .dll ファイルです)。対象のバージョンよりも高いフレームワーク バージョンに属する参照は解決せず、そのような参照に依存するコントロールを追加することはできません。 このような参照を有効にする場合は、プロジェクトの .NET Framework ターゲットを、参照を含むターゲットにリセットします。
アセンブリ参照の詳細については、「デザイン時アセンブリを解決する」を参照してください。
LINQ を有効にする
.NET Framework 3.5 以降をターゲットにすると、System.Core への参照と、System.Linq のプロジェクト レベルのインポート (Visual Basic のみ) が自動的に追加されます。 LINQ 機能を使用する場合は、Option Infer
も有効にする必要があります (Visual Basic のみ)。 ターゲットを以前の .NET Framework バージョンに変更すると、参照とインポートは自動的に削除されます。 詳細については、「LINQの使用」を参照してください。