次の方法で共有


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

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

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

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

導入されたバージョン

.NET SDK 6.0.100

以前の動作

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

新しい動作

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

カテゴリの変更

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

変更の理由

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

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

古いフレームワークをターゲットにするときのコンパイル時エラーを回避するには、次の推奨事項に従います。

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

影響を受ける API

なし