次の方法で共有


コンパイラ エラー CS1617

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) に含まれている構文のみを受け入れます。