Visual Studio for Mac で複数のターゲット フレームワークを持つプロジェクト

重要

Visual Studio for Mac は、Microsoft の モダン ライフサイクル ポリシーに従って、2024 年 8 月 31 日に廃止される予定です。 引き続き Visual Studio for Mac を使用できますが、VS Code 用の新しい C# 開発キット拡張機能のプレビュー バージョンなど、Mac 上の開発者向けの他のいくつかのオプションがあります。

サポートタイムラインと代替方法の詳細をご確認ください

Visual Studio for Mac では、いくつかの .NET Framework バージョンのいずれか、またはいくつかのシステム プラットフォームのいずれかで実行できるように、Xamarin または .NET Core プロジェクトを構成できます。 たとえば、.NET Framework 4.6 と .NET Core 3.1 の両方で実行できるように、プロジェクトのターゲットを設定することができます。

ターゲット フレームワークの詳細については、「ターゲット フレームワーク」を参照してください。

Note

このトピックは、Visual Studio for Mac に適用されます。 Windows 上の Visual Studio については、「フレームワーク対象設定機能の概要」をご覧ください。

複数のフレームワークをターゲットにする

ターゲット フレームワークはプロジェクト ファイル内で指定されます。これを編集するには、プロジェクトを右クリックし、[ツール] > [ファイルの編集] コマンドを選択します。 単一のターゲット フレームワークを指定するときは、TargetFramework 要素を使用します。 次のコンソール アプリのプロジェクト ファイルでは、.NET Core 3.0 をターゲットにする方法が示されています。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

</Project>

ターゲット フレームワークが複数あるときは、複数形の TargetFrameworks 要素を使います。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard1.4;net40;net45</TargetFrameworks>
  </PropertyGroup>

詳細については、複数のフレームワークをターゲットにする方法をご覧ください。

複数バージョン対応プロジェクトでのコードの操作

複数のターゲット フレームワークを持つプロジェクトの C# ファイルを編集する場合は、使用するターゲット フレームワークを指定して、ご自分のエディター操作をガイドすることができます (たとえば、そのフレームワークでサポートされていない API を使用すると警告を表示します)。 ターゲット フレームワークを変更するには、エディター ウィンドウの左上隅にある [ターゲット フレームワーク] セレクターを使用します。

Using the target framework selector to change the target framework, located at the top of the editor window

場合によっては、お使いのアプリケーションのターゲット プラットフォームに応じて、異なる API を呼び出す必要があります。 これを行うには、条件コードを記述して、特定のプラットフォームに向けたコードをコンパイルします。

public class MyClass
{
    static void Main()
    {
#if NET40
        Console.WriteLine("Target framework: .NET Framework 4.0");
#elif NET45  
        Console.WriteLine("Target framework: .NET Framework 4.5");
#else
        Console.WriteLine("Target framework: .NET Standard 1.4");
#endif
    }
}

コードを記述するときに、IntelliSense のオートコンプリート候補に警告が表示されるため、お使いのアプリケーションがサポートしているターゲット フレームワークに対して特定の API が不足していないかどうかを確認できます。

A warning message shown in IntelliSense, an API will not work for a specified target framework. Example text: namespace System.Buffers, SharedUtils (netstandard2.0) - Not Available. You can use the navigation bar to switch context.

関連項目