LangVersion に対するオプション 'option' は無効です。 サポートされる値を表示するには、? を使用してください。
このエラーは、LangVersion コマンド ライン スイッチまたはプロジェクト設定を使用し、有効な言語オプションを指定しなかった場合に発生します。 このエラーを解決するには、コマンド ライン構文またはプロジェクト設定を確認し、表示されたオプションのいずれかに変更します。
たとえば、 csc -langversion:ISO でコンパイルすると、エラー CS1617 が生成されます。
サポートされている言語バージョンを一覧表示する方法
サポートされている言語バージョンの一覧を表示するには、この記事の表を参照するか、 -langversion:?でコンパイルするか、ビルドする前にプロジェクト ファイルに <LangVersion>?</LangVersion> を一時的に設定します。
参照テーブルを使用する (推奨)
サポートされている言語バージョンを確認する最も信頼性の高い方法は、この記事の最後にある参照テーブルを参照することです。この表には、現在サポートされているすべての言語バージョンが記載されています。
C# コンパイラを直接使用する
C# コンパイラで -langversion:? オプションを使用します。 .NET SDK のインストールで csc.dll するパスを見つける必要があります。
dotnet exec "/path/to/dotnet/sdk/version/Roslyn/bincore/csc.dll" -langversion:?
たとえば、.NET 8 SDK を使用する Linux では、次のようになります。
dotnet exec "/usr/lib/dotnet/sdk/8.0.117/Roslyn/bincore/csc.dll" -langversion:?
正確なパスは、オペレーティング システムと .NET SDK のバージョンによって異なります。
診断出力でプロジェクト ファイルを使用する (推奨されません)
プロジェクト ファイルに <LangVersion>?</LangVersion> を一時的に設定して、詳細診断ログを使用してビルドできます。
dotnet build -v diagnostic
出力で "サポートされている言語バージョン:" 行を探します。
Warnung
プロジェクト ファイルで <LangVersion>?</LangVersion> を設定すると、サポートされているバージョンを表示した後にビルドが失敗します。 これは、コードのコンパイルを続行するのではなく、バージョンを一覧表示した後にコンパイラが終了するためです。 一覧を表示した後、この設定を削除します。
-langversion の有効な値
言語バージョンの有効な値は、使用している .NET のバージョンによって異なります。 どの言語バージョンがどのバージョンの .NET で使用できるかについての詳細については、言語バージョンの規則を参照してください。 新しい言語バージョンを使用しようとしてこのエラーが発生する場合は、低い言語バージョンにダウングレードするか、.NET SDK をその言語バージョンをサポートするバージョンに更新します。
次の表は、-langversion の現在の有効な値を示しています。
| 値 | 説明 |
|---|---|
preview |
コンパイラは、最新のプレビュー バージョンの有効な言語構文をすべて受け入れます。 |
latest |
コンパイラは、最新リリース バージョンのコンパイラ (マイナー バージョンを含む) の構文を受け入れます。 |
latestMajorまたは default |
コンパイラは、最新リリースのメジャー バージョンのコンパイラの構文を受け入れます。 |
15.0 |
コンパイラは、C# 15 以下に含まれる構文のみを受け入れます。 |
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