フレームワーク対象設定機能の概要

適用対象:yesVisual Studio noVisual Studio for Mac noVisual Studio Code

Visual Studio では、プロジェクトの対象となる .NET のバージョンを指定できます。 フレームワークを対象にする機能は、指定したフレームワーク バージョンで利用できる機能のみをアプリケーションで使用することを保証するのに役立ちます。 別のコンピューター上で実行する .NET Framework アプリについては、アプリケーションが対象とする .NET Framework バージョンが、コンピューターにインストールされている .NET Framework バージョンとの互換性を持っている必要があります。

Visual Studio のソリューションには、異なるバージョンの .NET を対象とするプロジェクトを含めることができます。 ただし、1 つのビルドのための参照条件を使用して 1 つのバージョンの .NET に対してのみビルドを行うか、各バージョンに対して異なるバイナリを再帰的にビルドすることができます。 ターゲット フレームワークの詳細については、「ターゲット フレームワーク」を参照してください。

ヒント

異なるプラットフォームに対応する複数のアプリケーションを対象にすることもできます。 詳細については、MSBuild のマルチ ターゲットに関する記事をご覧ください。

フレームワークの対象設定機能

フレームワークの対象設定機能には、次の特徴があります。

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

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

  • 1 つのプロジェクトで複数のフレームワークをターゲットに設定できます。

  • 同じソリューション内にある複数のプロジェクトのそれぞれで、異なるバージョンの .NET を対象とすることができます。

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

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

以前のフレームワーク バージョンを対象とするプロジェクトで作業するとき、Visual Studio では、開発環境が次のように動的に変更されます。

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

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

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

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

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

  • ビルドを行う場合は、対象のバージョンに適したコンパイラのバージョンおよびコンパイラ オプションを使用します。

Note

  • フレームワークの対象機能は、開発中のアプリケーションが正しく実行されることを保証するわけではありません。 対象のバージョンで実行できるかどうかを確認するために、アプリケーションをテストする必要があります。
  • .NET Framework 2.0 より前のバージョンのフレームワークを対象にすることはできません。

対象フレームワークのバージョンを選択する

.NET Framework プロジェクトを作成するときは、プロジェクト テンプレートを選択した後で、対象の .NET Framework バージョンを選択できます。 使用できる Framework のリストには、選択したテンプレートの種類に適用されるインストール済みの Framework バージョンが表示されます。 .NET Core テンプレート、.NET Framework 以外のプロジェクト テンプレートの場合、 [Framework] ドロップダウン リストは表示されません。

Visual Studio 2019 の [フレームワーク] ドロップダウン

.NET Framework プロジェクトの作成を選択すると、次のスクリーンショットのようなインターフェイスが表示されます。

Visual Studio 2022 の [フレームワーク] ドロップダウン リストのスクリーンショット。

.NET プロジェクトの作成を選択すると、次の 2 つのスクリーンショットのようなユーザー インターフェイス (UI) が表示されます。

最初に表示される画面は、 [新しいプロジェクトの構成] ダイアログです。

Visual Studio 2022 の [新しいプロジェクトの構成] ダイアログ ボックスのスクリーンショット。

2 番目に表示される画面は、 [その他のオプション] ダイアログです。

Visual Studio 2022 の [その他のオプション] ダイアログ ボックスのスクリーンショット。

ターゲット フレームワークを変更する

Visual Basic、C#、または F# の既存のプロジェクトでは、プロジェクトのプロパティ ダイアログ ボックスで、.NET のターゲット バージョンを変更します。 C++ プロジェクトのターゲット バージョンを変更する方法については、代わりに「How to: Modify the Target Framework and Platform Toolset (方法: ターゲット フレームワークおよびプラットフォームのツールセットを変更する)」をご覧ください。

  1. ソリューション エクスプローラーで、変更するプロジェクトの右クリック コンテキスト メニューを開き、 [プロパティ] を選択します。

  2. [プロパティ] ウィンドウの左側の列で、 [アプリケーション] タブを選択します。

    プロジェクトのプロパティの [アプリケーション] タブ

    注意

    UWP アプリを作成した後は、Windows または .NET のターゲット バージョンを変更することはできません。

  3. [ターゲット フレームワーク] 一覧で、目的のバージョンを選択します。

  4. 表示される検証ダイアログ ボックスで [はい] ボタンを選択します。

    プロジェクトがアンロードされます。 プロジェクトを再読み込みすると、上で選択した .NET のバージョンが対象になります。

  1. ソリューション エクスプローラーで、変更するプロジェクトの右クリック コンテキスト メニューを開き、 [プロパティ] を選択します。

  2. [プロパティ] ウィンドウの左側の列で、 [アプリケーション] タブを選択します。

    Note

    UWP アプリを作成した後は、Windows または .NET のターゲット バージョンを変更することはできません。

  3. [ターゲット フレームワーク] 一覧で、目的のバージョンを選択します。

    .NET Framework プロジェクトの場合、表示されるダイアログはおそらく次のスクリーンショットのようになります。

    .NET Framework オプションが強調表示されている [プロジェクトのプロパティ] ダイアログのスクリーンショット。

    .NET プロジェクトの場合、ダイアログはおそらく次のスクリーンショットのようになります。

    [プロジェクトのプロパティ] ダイアログ ボックスの [全般] タブのスクリーンショット。[ターゲット フレームワーク] の選択が示されています。

  4. 確認ダイアログ ボックスが表示されたら、 [はい] ボタンを選択します。

    プロジェクトがアンロードされます。 プロジェクトを再読み込みすると、上で選択した .NET のバージョンが対象になります。

Note

対象とするバージョンとは別の .NET のバージョンへの参照がコードに含まれている場合、コードをコンパイルまたは実行するとエラー メッセージが表示されることがあります。 これらのエラーを解決するには、参照を変更します。 「.NET を対象とするエラーのトラブルシューティング」を参照してください。

ヒント

ターゲット フレームワークによっては、プロジェクト ファイル内で次のように表現されている場合があります。

  • .NET Core アプリの場合: <TargetFramework>netcoreapp2.1</TargetFramework>
  • .NET Standard アプリの場合: <TargetFramework>netstandard2.0</TargetFramework>
  • .NET Framework アプリの場合: <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>

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

.NET の特定のバージョンを対象にするには、最初に適切なアセンブリ参照をインストールする必要があります。 .NET ダウンロード ページでさまざまなバージョンの .NET の開発者向けパックをダウンロードすることができます。

.NET Framework プロジェクトの場合、[参照の追加] ダイアログ ボックスでは、対象の .NET Framework のバージョンに関係しないシステム アセンブリが無効にされます。その結果、それらのアセンブリをプロジェクトに誤って追加することはありません。 (システム アセンブリとは、.NET Framework バージョンの一部である .dll ファイルのことです)。対象より新しいバージョンのフレームワークに属する参照は解決されず、そのような参照に依存するコントロールを追加することはできません。 このような参照を有効にするには、プロジェクトの対象である .NET Framework を、その参照を含むバージョンに再設定します。

アセンブリ参照の詳細については、「デザイン時のアセンブリの解決」を参照してください。

LINQ を有効にする

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

関連項目