この記事の情報は、.NET 5 以降に適用されます。 UWP プロジェクトについては、 UWP バージョンの選択に関する記事のこの情報を参照してください。
Visual Studio では、既定のバージョンがプロジェクトのターゲット フレームワーク (TFM
) に合わせて調整されているため、UI を使用して言語バージョンを変更するオプションは無効になります。 この既定の構成により、言語機能とランタイム サポートの間の互換性が保証されます。 Visual Studio で言語バージョンを変更するには、プロジェクトのターゲット フレームワークを変更します。
たとえば、ターゲット TFM
(. NET 6 から .NET 9 など) を変更すると、言語バージョンが C# 10 から C# 13 に適宜更新されます。 こうすることで、ランタイムの互換性に関する問題が回避され、サポートされていない言語機能による予期しないビルド エラーが最小限に抑えられます。
自動的に選択されたものとは異なる特定の言語バージョンが必要な場合は、この記事のメソッドを参照して、プロジェクト ファイル内の既定の設定を直接オーバーライドしてください。
警告
LangVersion
要素を latest
に設定することは推奨されていません。
latest
設定にすると、インストールされているコンパイラで最新バージョンが使用されます。
latest
の値はマシン間で変化し、ビルドの信頼性が低下する可能性があります。 さらに、現在の SDK に含まれていないランタイム機能またはライブラリ機能を必要とする可能性がある言語機能も有効になります。
C# のバージョンを明示的に指定する必要がある場合は、いくつかの方法で実行できます。
- プロジェクト ファイルを手動で編集します。
- サブディレクトリ内の複数のプロジェクトに対して言語バージョンを設定する。
- LangVersion コンパイラ オプションを設定する。
ヒント
プロジェクト プロパティ ページで Visual Studio の言語バージョンを確認できます。 [ビルド] タブの下の [詳細設定] ページに選択されているバージョンが表示されます。
現在使用している言語バージョンを確認するには、コードに #error version
を入れます (大文字と小文字を区別します)。 このプラグマは、コンパイラ のバージョンと現在選択されている言語バージョンを含むメッセージを含むコンパイラ エラー CS8304 をコンパイラ レポートにします。 このプラグマの詳細については、「 #error (C# リファレンス)」を参照してください。
プロジェクト ファイルを編集する
プロジェクト ファイルで言語のバージョンを設定できます。 プロジェクト ファイルは、プロジェクトのルート フォルダー内の *.csproj
ファイルです。 たとえば、プレビュー機能に明示的にアクセスする場合は、次の例のような要素を追加します。
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
preview
値は、コンパイラでサポートされている最新のプレビュー C# 言語バージョンを使用します。
複数のプロジェクトを構成する
複数の C# プロジェクトを構成するには、通常はソリューション ディレクトリに、要素を含む <LangVersion>
ファイルを作成します。 以下の設定を Directory.Build.props ファイルに追加します。:
<Project>
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>
そのファイルが含まれるディレクトリのすべてのサブディレクトリ内のビルドで、プレビュー C# バージョンが使用されるようになります。 詳細については、「ビルドのカスタマイズ」を参照してください。
注
C# と VB のバージョンは異なります。 サブディレクトリに両方の言語のプロジェクトが含まれているフォルダーには 、Directory.Build.Props ファイルを使用しないでください。 バージョンが一致しません。
C# 言語バージョン リファレンス
重要
ターゲット TFM に関連付けられているバージョンより新しい C# 言語バージョンの使用はサポートされていません。
次の表では、現在のすべての C# 言語バージョンを示します。 古いコンパイラでは、すべての値が解釈されない場合があります。 最新の .NET SDK をインストールすると、一覧表示されているすべてにアクセスできます。
[値] | 意味 |
---|---|
preview |
コンパイラは、最新のプレビュー バージョンの有効な言語構文をすべて受け入れます。 |
latest |
コンパイラは、最新リリース バージョンのコンパイラ (マイナー バージョンを含む) の構文を受け入れます。 |
latestMajor または default |
コンパイラは、最新リリースのメジャー バージョンのコンパイラの構文を受け入れます。 |
14.0 |
コンパイラは、C# 14 以下に含まれる構文のみを受け入れます。 |
13.0 |
コンパイラが受け入れるのは C# 13 以下に含まれている構文だけです。 |
12.0 |
コンパイラは、C# 12 以下に含まれている構文のみを受け入れます。 |
11.0 |
コンパイラは、C# 11 以下に含まれている構文のみを受け入れます。 |
10.0 |
コンパイラは、C# 10 以下に含まれている構文のみを受け入れます。 |
9.0 |
コンパイラは、C# 9 以下に含まれている構文のみを受け入れます。 |
8.0 |
コンパイラは、C# 8.0 以下に含まれている構文のみを受け入れます。 |
7.3 |
コンパイラは、C# 7.3 以下に含まれている構文のみを受け入れます。 |
7.2 |
コンパイラは、C# 7.2 以下に含まれている構文のみを受け入れます。 |
7.1 |
コンパイラは、C# 7.1 以下に含まれている構文のみを受け入れます。 |
7 |
コンパイラは、C# 7.0 以下に含まれている構文のみを受け入れます。 |
6 |
コンパイラは、C# 6.0 以下に含まれている構文のみを受け入れます。 |
5 |
コンパイラは、C# 5.0 以下に含まれている構文のみを受け入れます。 |
4 |
コンパイラは、C# 4.0 以下に含まれている構文のみを受け入れます。 |
3 |
コンパイラは、C# 3.0 以下に含まれている構文のみを受け入れます。 |
ISO-2 または 2 |
コンパイラは、ISO/IEC 23270:2006 C# (2.0) に含まれている構文のみを受け入れます。 |
ISO-1 または 1 |
コンパイラは、ISO/IEC 23270:2003 C# (1.0/1.2) に含まれている構文のみを受け入れます。 |
.NET