C# 言語バージョンの構成
警告
LangVersion
要素を latest
に設定することは推奨されていません。 latest
設定にすると、インストールされているコンパイラで最新バージョンが使用されます。 これはマシンによって変わり、ビルドの信頼性が低下する可能性があります。 さらに、現在の SDK に含まれていないランタイム機能またはライブラリ機能を必要とする可能性がある言語機能も有効になります。
C# のバージョンを明示的に指定する必要がある場合は、いくつかの方法で実行できます。
- プロジェクト ファイルを手動で編集します。
- サブディレクトリ内の複数のプロジェクトに対して言語バージョンを設定する。
- LangVersion コンパイラ オプションを設定する。
ヒント
プロジェクト プロパティ ページで Visual Studio の言語バージョンを確認できます。 [ビルド] タブの下の [詳細設定] ページに選択されているバージョンが表示されます。
現在使用している言語バージョンを確認するには、コードに #error version
を入れます (大文字と小文字を区別します)。 このようにすると、コンパイラによって、コンパイラ エラー CS8304 と、使用されているコンパイラのバージョンと現在選択されている言語バージョンが含まれるメッセージが報告されます。 詳細については、「#error (C# リファレンス)」を参照してください。
プロジェクト ファイルを編集する
プロジェクト ファイルで言語のバージョンを設定できます。 たとえば、プレビュー機能に明示的にアクセスしたい場合は、次のように要素を追加します。
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
値 preview
では、コンパイラでサポートされている使用可能な最新のプレビュー C# 言語バージョンが使用されます。
複数のプロジェクトを構成する
複数のプロジェクトを構成するには、<LangVersion>
要素を含む Directory.build.props ファイルを (通常はソリューション ディレクトリに) 作成します。 以下の設定を Directory.Build.props ファイルに追加します。:
<Project>
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>
そのファイルが含まれるディレクトリのすべてのサブディレクトリ内のビルドで、プレビュー C# バージョンが使用されるようになります。 詳細については、「ビルドのカスタマイズ」を参照してください。
C# 言語バージョン リファレンス
次の表では、現在のすべての C# 言語バージョンを示します。 古いコンパイラでは、すべての値が解釈されない場合があります。 最新の .NET SDK をインストールすると、一覧表示されているすべてにアクセスできます。
値 | 説明 |
---|---|
preview |
コンパイラは、最新のプレビュー バージョンの有効な言語構文をすべて受け入れます。 |
latest |
コンパイラは、最新リリース バージョンのコンパイラ (マイナー バージョンを含む) の構文を受け入れます。 |
latestMajor または default |
コンパイラは、最新リリースのメジャー バージョンのコンパイラの構文を受け入れます。 |
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