Verwaltung der C#-SprachversionC# language versioning

Der C#-Compiler bestimmt eine Standardsprachversion, die auf den Zielframeworks Ihres Projekts basiert.The latest C# compiler determines a default language version based on your project's target framework or frameworks. In Visual Studio gibt es keine Benutzeroberfläche zum Ändern dieses Werts, aber Sie können ihn ändern, indem Sie die CSPROJ-Datei bearbeiten.Visual Studio doesn't provide a UI to change the value, but you can change it by editing the csproj file. Mit der Auswahl des Standardwerts wird sichergestellt, dass Sie die neueste Sprachversion nutzen, die mit Ihrem Zielframework kompatibel ist.The choice of default ensures that you use the latest language version compatible with your target framework. So profitieren Sie vom Zugriff auf die neuesten Sprachfeatures, die mit dem Zielframework Ihres Projekts kompatibel sind.You benefit from access to the latest language features compatible with your project's target. Mit dem Standardwert wird außerdem sichergestellt, dass Sie keine Sprache verwenden, die Typen oder Runtimeverhalten erfordert, die nicht im Zielframework verfügbar sind.This default choice also ensures you don't use a language that requires types or runtime behavior not available in your target framework. Wenn Sie eine Sprachversion auswählen, die neuer als die Standardeinstellung ist, können Kompilierzeit- und Runtimefehler auftreten, die schwer zu diagnostizieren sind.Choosing a language version newer than the default can cause hard to diagnose compile-time and runtime errors.

Die in diesem Artikel aufgeführten Regeln gelten für den Compiler, der im Lieferumfang von Visual Studio 2019 oder dem .NET Core 3.0 SDK enthalten ist.The rules in this article apply to the compiler delivered with Visual Studio 2019 or the .NET Core 3.0 SDK. Die C#-Compiler, die Teil der Visual Studio 2017-Installation oder von früheren .NET Core SDK-Versionen sind, sind standardmäßig auf C# 7.0 ausgerichtet.The C# compilers that are part of the Visual Studio 2017 installation or earlier .NET Core SDK versions target C# 7.0 by default.

C# 8.0 (und höher) wird nur in .NET Core 3.x und neueren Versionen unterstützt.C# 8.0 (and higher) is supported only on .NET Core 3.x and newer versions. Viele der neuesten Features erfordern Bibliotheks- und Runtimefeatures, die mit .NET Core 3.x eingeführt wurden:Many of the newest features require library and runtime features introduced in .NET Core 3.x:

der ArbeitszeittabelleDefaults

Der Compiler bestimmt basierend auf den folgenden Regeln eine Standardversion:The compiler determines a default based on these rules:

ZielframeworkTarget framework Versionversion C#-SprachversionsstandardC# language version default
.NET Core.NET Core 3.x3.x C# 8.0C# 8.0
.NET Core.NET Core 2.x2.x C# 7.3C# 7.3
.NET-Standard.NET Standard 2.12.1 C# 8.0C# 8.0
.NET-Standard.NET Standard 2.02.0 C# 7.3C# 7.3
.NET-Standard.NET Standard 1.x1.x C# 7.3C# 7.3
.NET Framework.NET Framework alleall C# 7.3C# 7.3

Wenn Ihr Projekt auf eine Vorschauframework abzielt, das eine entsprechende Vorschausprachversion besitzt, wird die Vorschausprachversion als Sprachversion verwendet.When your project targets a preview framework that has a corresponding preview language version, the language version used is the preview language version. 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.You use the latest features with that preview in any environment, without affecting projects that target a released .NET Core version.

Überschreiben eines StandardwertsOverride a default

Wenn Sie Ihre C#-Version explizit angeben müssen, haben Sie verschiedene Möglichkeiten:If you must specify your C# version explicitly, you can do so in several ways:

Bearbeiten der ProjektdateiEdit the project file

Sie können die Sprachversion in der Projektdatei festlegen.You can set the language version in your project file. Wenn Sie beispielsweise expliziten Zugriff auf Previewfunktionen wünschen, fügen Sie ein Element wie folgt hinzu:For example, if you explicitly want access to preview features, add an element like this:

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

Der Wert preview verwendet die neueste verfügbare Vorschauversion der Sprache C#, die Ihr Compiler unterstützt.The value preview uses the latest available preview C# language version that your compiler supports.

Konfigurieren mehrerer ProjekteConfigure multiple projects

Sie können eine Directory.Build.props-Datei erstellen, die das Element <LangVersion> enthält, um mehrere Projekte zu konfigurieren.To configure multiple projects, you can create a Directory.Build.props file that contains the <LangVersion> element. In der Regel führen Sie dies im Projektmappenverzeichnis durch.You typically do that in your solution directory. Fügen Sie Folgendes in eine Directory.Build.props-Datei in Ihrem Projektmappenverzeichnis ein:Add the following to a Directory.Build.props file in your solution directory:

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

Builds in allen Unterverzeichnissen des Verzeichnisses, das diese Datei enthält, verwenden die C#-Vorschauversion.Builds in all subdirectories of the directory containing that file will use the preview C# version. Weitere Informationen finden Sie im Artikel zum Anpassen Ihres Builds.For more information, see the article on Customize your build.

Referenz zur C#-SprachversionC# language version reference

In der folgenden Tabelle sind alle aktuellen C#-Sprachversionen enthalten.The following table shows all current C# language versions. Wenn Ihr Compiler älter ist, versteht er möglicherweise nicht alle Werte.Your compiler may not necessarily understand every value if it's older. Wenn Sie .NET Core 3.0 oder höher installieren, verfügen Sie über Zugriff auf alle aufgeführten Elemente.If you install .NET Core 3.0 or later, then you have access to everything listed.

WertValue BedeutungMeaning
preview Der Compiler akzeptiert jede gültige Sprachsyntax der letzten Vorschauversion.The compiler accepts all valid language syntax from the latest preview version.
latest Der Compiler akzeptiert die Syntax der neuesten veröffentlichte Version des Compilers (einschließlich Nebenversionen).The compiler accepts syntax from the latest released version of the compiler (including minor version).
latestMajor (default)latestMajor (default) Der Compiler akzeptiert die Syntax der neuesten veröffentlichte Hauptversion des Compilers.The compiler accepts syntax from the latest released major version of the compiler.
8.0 Der Compiler akzeptiert nur Syntax, die in C# 8.0 oder niedriger enthalten ist.The compiler accepts only syntax that is included in C# 8.0 or lower.
7.3 Der Compiler akzeptiert nur Syntax, die in C# 7.3 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 7.3 or lower.
7.2 Der Compiler akzeptiert nur Syntax, die in C# 7.2 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 7.2 or lower.
7.1 Der Compiler akzeptiert nur Syntax, die in C# 7.1 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 7.1 or lower.
7 Der Compiler akzeptiert nur Syntax, die in C# 7.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 7.0 or lower.
6 Der Compiler akzeptiert nur Syntax, die in C# 6.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 6.0 or lower.
5 Der Compiler akzeptiert nur Syntax, die in C# 5.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 5.0 or lower.
4 Der Compiler akzeptiert nur Syntax, die in C# 4.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 4.0 or lower.
3 Der Compiler akzeptiert nur Syntax, die in C# 3.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 3.0 or lower.
ISO-2 (oder 2)ISO-2 (or 2) Der Compiler akzeptiert nur Syntax, die in ISO/IEC 23270:2006 C# (2.0) enthalten ist.The compiler accepts only syntax that is included in ISO/IEC 23270:2006 C# (2.0).
ISO-1 (oder 1)ISO-1 (or 1) Der Compiler akzeptiert nur Syntax, die in ISO/IEC 23270:2003 C# (1.0/1.2) enthalten ist.The compiler accepts only syntax that is included in ISO/IEC 23270:2003 C# (1.0/1.2).

Tipp

Öffnen Sie die Developer-Eingabeaufforderung für Visual Studio, und führen Sie den folgenden Befehl aus, um die Liste der auf Ihrem Computer verfügbaren Sprachversionen anzuzeigen.Open the Developer Command Prompt for Visual Studio, and run the following command to see the listing of language versions available on your machine.

csc -langversion:?

Wenn Sie die Kompilierungsoption -langversion wie folgt abfragen, wird etwa Folgendes ausgegeben:Questioning the -langversion compile option like this, will print something similar to the following:

Supported language versions:
default
1
2
3
4
5
6
7.0
7.1
7.2
7.3
8.0 (default)
latestmajor
preview
latest