Verwaltung der C#-Sprachversion

Der C#-Compiler bestimmt eine Standardsprachversion, die auf den Zielframeworks Ihres Projekts basiert. In Visual Studio gibt es keine Benutzeroberfläche zum Ändern dieses Werts, aber Sie können ihn ändern, indem Sie die CSPROJ-Datei bearbeiten. Mit der Auswahl des Standardwerts wird sichergestellt, dass Sie die neueste Sprachversion nutzen, die mit Ihrem Zielframework kompatibel ist. So profitieren Sie vom Zugriff auf die neuesten Sprachfeatures, die mit dem Zielframework Ihres Projekts kompatibel sind. Mit dem Standardwert wird außerdem sichergestellt, dass Sie keine Sprache verwenden, die Typen oder Runtimeverhalten erfordert, die nicht im Zielframework verfügbar sind. Wenn Sie eine Sprachversion auswählen, die neuer als die Standardeinstellung ist, können Kompilierzeit- und Runtimefehler auftreten, die schwer zu diagnostizieren sind.

C# 11 wird nur in .NET 7 und höher unterstützt. C# 10 wird nur in .NET 6 und höher unterstützt. C# 9 wird nur in .NET 5 und höher unterstützt.

Auf der Seite Visual Studio-Plattformkompatibilität finden Sie Details dazu, welche .NET-Versionen von Versionen von Visual Studio unterstützt werden. Weitere Informationen dazu, welche .NET-Versionen von Versionen von Visual Studio für Mac unterstützt werden, finden Sie auf der Seite Visual Studio für Mac-Plattformkompatibiliät. Überprüfen Sie die Mono-Seite für C#, um mehr über die Mono-Kompatibilität mit C#-Versionen zu erfahren.

der Arbeitszeittabelle

Der Compiler bestimmt basierend auf den folgenden Regeln eine Standardversion:

Ziel Version C#-Sprachversionsstandard
.NET 7.x C# 11
.NET 6.x C# 10
.NET 5.x C# 9.0
.NET Core 3.x C# 8.0
.NET Core 2.x C# 7.3
.NET-Standard 2.1 C# 8.0
.NET-Standard 2.0 C# 7.3
.NET-Standard 1.x C# 7.3
.NET Framework alle C# 7.3

Wenn Ihr Projekt auf eine Vorschauframework abzielt, das eine entsprechende Vorschausprachversion besitzt, wird die Vorschausprachversion als Sprachversion verwendet. In dieser Vorschau können Sie die neuesten Features in beliebigen Umgebungen verwenden, ohne Auswirkungen auf Projekte für eine veröffentlichte .NET Core-Version zu haben.

Wichtig

Die neue Projektvorlage für Visual Studio 2017 hat einen <LangVersion>latest</LangVersion>-Eintrag zu neuen Projektdateien hinzugefügt. Wenn Sie das Zielframework für diese Projekte upgraden, wird das Standardverhalten außer Kraft gesetzt. Sie sollten die <LangVersion>latest</LangVersion> aus der Projektdatei entfernen, wenn Sie das .NET SDK aktualisieren. Anschließend verwendet das Projekt die für das Zielframework empfohlene Compilerversion. Sie können das Zielframework aktualisieren, um auf neuere Sprachfeatures zuzugreifen.

Überschreiben eines Standardwerts

Wenn Sie Ihre C#-Version explizit angeben müssen, haben Sie verschiedene Möglichkeiten:

Tipp

Die Sprachversion in Visual Studio wird auf der Projekteigenschaftenseite angezeigt. Auf der Registerkarte Build wird im Bereich Erweitert die ausgewählte Version angezeigt.

Wenn Sie wissen möchten, welche Sprachversion Sie derzeit verwenden, fügen Sie #error version (Groß-/Kleinschreibung beachten) in Ihren Code ein. Dadurch meldet der Compiler einen Compilerfehler (CS8304) mit einer Meldung, die die verwendete Compilerversion und die zurzeit ausgewählte Sprachversion enthält. Weitere Informationen finden Sie unter #error (C#-Referenz).

Bearbeiten der Projektdatei

Sie können die Sprachversion in der Projektdatei festlegen. Wenn Sie beispielsweise expliziten Zugriff auf Previewfunktionen wünschen, fügen Sie ein Element wie folgt hinzu:

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

Der Wert preview verwendet die neueste verfügbare Vorschauversion der Sprache C#, die Ihr Compiler unterstützt.

Konfigurieren mehrerer Projekte

Sie können eine Directory.Build.props-Datei erstellen, die das Element <LangVersion> enthält, um mehrere Projekte zu konfigurieren. In der Regel führen Sie dies im Projektmappenverzeichnis durch. Fügen Sie Folgendes in eine Directory.Build.props-Datei in Ihrem Projektmappenverzeichnis ein:

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

Builds in allen Unterverzeichnissen des Verzeichnisses, das diese Datei enthält, verwenden die C#-Vorschauversion. Weitere Informationen finden Sie unter Anpassen des Builds.

Referenz zur C#-Sprachversion

In der folgenden Tabelle sind alle aktuellen C#-Sprachversionen enthalten. Wenn Ihr Compiler älter ist, versteht er möglicherweise nicht alle Werte. Wenn Sie das neueste .NET SDK installieren, erhalten Sie Zugriff auf alle aufgelisteten Syntaxversionen.

Wert 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.
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.