Freigeben über


Compilerfehler CS1617

Ungültige Option „option“ für LangVersion. Verwenden Sie ?, um unterstützte Werte aufzulisten.

Dieser Fehler tritt auf, wenn Sie den Befehlszeilenschalter oder die Projekteinstellung LangVersion verwendet, aber keine gültige Sprachoption angegeben haben. Überprüfen Sie die Syntax der Befehlszeile oder die Projekteinstellung, und ändern Sie sie in eine der aufgeführten Optionen, um diesen Fehler zu beheben.

Beim Kompilieren mit csc -langversion:ISO wird z. B. der Fehler CS1617 generiert.

Auflisten unterstützter Sprachversionen

Um eine Liste der unterstützten Sprachversionen anzuzeigen, verweisen Sie auf die Tabelle in diesem Artikel, kompilieren Sie mit -langversion:? oder legen Sie <LangVersion>?</LangVersion> vorübergehend in Ihrer Projektdatei fest, bevor Sie bauen.

Die zuverlässigste Möglichkeit, unterstützte Sprachversionen anzuzeigen, besteht darin, die Referenztabelle am Ende dieses Artikels zu konsultieren, in der alle derzeit unterstützten Sprachversionen aufgeführt sind.

Verwenden des C#-Compilers direkt

Verwenden Sie die -langversion:? Option mit dem C#-Compiler. Sie müssen den Pfad zu csc.dll Ihrer .NET SDK-Installation ermitteln:

dotnet exec "/path/to/dotnet/sdk/version/Roslyn/bincore/csc.dll" -langversion:?

Beispiel: unter Linux mit .NET 8 SDK:

dotnet exec "/usr/lib/dotnet/sdk/8.0.117/Roslyn/bincore/csc.dll" -langversion:?

Der genaue Pfad variiert je nach Betriebssystem- und .NET SDK-Version.

Sie können vorübergehend <LangVersion>?</LangVersion> in Ihrer Projektdatei festlegen und für die Erstellung ausführliche Diagnostik nutzen:

dotnet build -v diagnostic

Suchen Sie in der Ausgabe nach der Zeile "Unterstützte Sprachversionen:".

Warnung

Die Einstellung <LangVersion>?</LangVersion> in einer Projektdatei führt dazu, dass der Build fehlschlägt, nachdem die unterstützten Versionen angezeigt wurden. Dies liegt daran, dass der Compiler nach dem Auflisten der Versionen beendet wird, anstatt den Code weiter zu kompilieren. Entfernen Sie diese Einstellung nach dem Anzeigen der Liste.

Gültige Werte für -LangVersion

Die gültigen Werte für die Sprachversionen hängen von der verwendeten .NET-Version ab. Weitere Informationen dazu, welche Sprachversion für die jeweilige .NET-Version verfügbar ist, finden Sie in den Sprachversionsregeln. Falls Sie diesen Fehler erhalten, während Sie versuchen, eine neuere Sprachversion zu verwenden, nehmen Sie entweder ein Downgrade auf eine niedrigere Sprachversion vor, oder aktualisieren Sie Ihr .NET SDK auf eine Version, die diese Sprachversion unterstützt.

Die folgende Tabelle enthält die aktuell gültigen Werte für -langversion:

value Bedeutung
preview Der Compiler akzeptiert jede gültige Sprachsyntax der letzten Vorschauversion.
latest Der Compiler akzeptiert die Syntax der neuesten veröffentlichte Version des Compilers (einschließlich Nebenversionen).
latestMajor
oder default
Der Compiler akzeptiert die Syntax der neuesten veröffentlichte Hauptversion des Compilers.
15.0 Der Compiler akzeptiert nur syntax, die in C# 15 oder niedriger enthalten ist.
14.0 Der Compiler akzeptiert nur syntax, die in C# 14 oder niedriger enthalten ist.
13.0 Der Compiler akzeptiert nur Syntax von C# 13 oder niedriger.
12.0 Der Compiler akzeptiert nur Syntax von C# 12 oder niedriger.
11.0 Der Compiler akzeptiert nur Syntax von C# 11 oder niedriger.
10.0 Der Compiler akzeptiert nur Syntax, die in C# 10 oder niedriger enthalten ist.
9.0 Der Compiler akzeptiert nur Syntax, die in C# 9 oder niedriger enthalten ist.
8.0 Der Compiler akzeptiert nur Syntax, die in C# 8.0 oder niedriger enthalten ist.
7.3 Der Compiler akzeptiert nur Syntax, die in C# 7.3 oder früher enthalten ist.
7.2 Der Compiler akzeptiert nur Syntax, die in C# 7.2 oder früher enthalten ist.
7.1 Der Compiler akzeptiert nur Syntax, die in C# 7.1 oder früher enthalten ist.
7 Der Compiler akzeptiert nur Syntax, die in C# 7.0 oder früher enthalten ist.
6 Der Compiler akzeptiert nur Syntax, die in C# 6.0 oder früher enthalten ist.
5 Der Compiler akzeptiert nur Syntax, die in C# 5.0 oder früher enthalten ist.
4 Der Compiler akzeptiert nur Syntax, die in C# 4.0 oder früher enthalten ist.
3 Der Compiler akzeptiert nur Syntax, die in C# 3.0 oder früher enthalten ist.
ISO-2
oder 2
Der Compiler akzeptiert nur Syntax, die in ISO/IEC 23270:2006 C# (2.0) enthalten ist.
ISO-1
oder 1
Der Compiler akzeptiert nur Syntax, die in ISO/IEC 23270:2003 C# (1.0/1.2) enthalten ist.