テンプレートの C# コードが以前のバージョンでサポートされない
.NET 6 以降、.NET SDK に付属しているプロジェクト テンプレートには、最新の C# 言語機能が使用されています。 次の言語機能は、テンプレートで生成されるコードに使用され、プロジェクトの既定で有効になっています。
C# 言語の最新機能の中には、以前のターゲット フレームワークではサポートされないものがあるため、次のようなシナリオで問題が発生する可能性があります。
- .NET 6 テンプレートを使用した後、ターゲット フレームワークを旧バージョンに変更した場合。
- .NET 6 テンプレートを使用した後に、以前のターゲット フレームワークのバージョンを追加してマルチターゲットにする場合。
導入されたバージョン
.NET SDK 6.0.100
以前の動作
以前の .NET バージョンでは、プロジェクト テンプレートで作成した C# コードを変更することなく、ターゲット フレームワークを以前のバージョンに変更したり、バージョンを追加したりすることができました。
新しい動作
.NET 6 以降、ターゲット フレームワークを変更または追加する場合、サポートされていない言語機能の使用を避けるために、テンプレートによって生成された C# コードを必要に応じて変更する場合があります。 このような変更を加えないと、プロジェクトはビルドされません。 通常、コンパイラのエラーと警告には、生成されたコードを変更して、新しいターゲット フレームワークと互換性を持たせる方法が説明されています。
カテゴリの変更
この変更は、"ソースの互換性" に影響します。
変更理由
Microsoft では、プロジェクト テンプレートを最新の言語機能と同期させたいと考えています。 最新のフレームワークをターゲットとする主な使用シナリオには、最新の C# 言語機能が使用されています。
推奨アクション
以前のフレームワークのバージョンに再ターゲットしたときにコンパイル時のエラーと警告が発生した場合は、その情報を参考にして、選択したターゲット フレームワークと互換性を持たせるように生成されたコードを変更してください。
以前のフレームワークをターゲットにするときにコンパイル時のエラーが発生しないようにするには、次の推奨事項に従ってください。
- ターゲット フレームワークを以前のバージョンに変更することは避けます。 代わりに、Visual Studio でのプロジェクト作成時またはコマンドラインで
dotnet new <templateName> --framework <targetFramework>
を使用して、必要なターゲット フレームワークを選択します。 - マルチターゲット プロジェクトを作成する場合は、プロジェクトの作成時に最も低いターゲット フレームワークのバージョンを選択します。 追加のターゲット フレームワークは、プロジェクトの作成後に追加します。
影響を受ける API
該当なし
.NET