テンプレートの C# コードが以前のバージョンでサポートされない

.NET 6 以降、.NET SDK に付属しているプロジェクト テンプレートには、最新の C# 言語機能が使用されています。 次の言語機能は、テンプレートで生成されるコードに使用され、プロジェクトの既定で有効になっています。

C# 言語の最新機能の中には、以前のターゲット フレームワークではサポートされないものがあるため、次のようなシナリオで問題が発生する可能性があります。

  • .NET 6 テンプレートを使用した後、ターゲット フレームワークを旧バージョンに変更した場合。
  • .NET 6 テンプレートを使用した後に、以前のターゲット フレームワークのバージョンを追加してマルチターゲットにする場合。

導入されたバージョン

.NET SDK 6.0.100 Preview 7

以前の動作

以前の .NET バージョンでは、プロジェクト テンプレートで作成した C# コードを変更することなく、ターゲット フレームワークを以前のバージョンに変更したり、バージョンを追加したりすることができました。

新しい動作

.NET 6 以降、ターゲット フレームワークを変更または追加する場合、サポートされていない言語機能の使用を避けるために、テンプレートによって生成された C# コードを必要に応じて変更する場合があります。 このような変更を加えないと、プロジェクトはビルドされません。 通常、コンパイラのエラーと警告には、生成されたコードを変更して、新しいターゲット フレームワークと互換性を持たせる方法が説明されています。

カテゴリの変更

この変更は、"ソースの互換性" に影響します。

変更理由

Microsoft では、プロジェクト テンプレートを最新の言語機能と同期させたいと考えています。 最新のフレームワークをターゲットとする主な使用シナリオには、最新の C# 言語機能が使用されています。

以前のフレームワークのバージョンに再ターゲットしたときにコンパイル時のエラーと警告が発生した場合は、その情報を参考にして、選択したターゲット フレームワークと互換性を持たせるように生成されたコードを変更してください。

以前のフレームワークをターゲットにするときにコンパイル時のエラーが発生しないようにするには、次の推奨事項に従ってください。

  • ターゲット フレームワークを以前のバージョンに変更することは避けます。 代わりに、Visual Studio でのプロジェクト作成時またはコマンドラインで dotnet new <templateName> --framework <targetFramework> を使用して、必要なターゲット フレームワークを選択します。
  • マルチターゲット プロジェクトを作成する場合は、プロジェクトの作成時に 最も低い ターゲット フレームワークのバージョンを選択します。 追加のターゲット フレームワークは、プロジェクトの作成後に追加します。

影響を受ける API

N/A