C#-taalversiebeheer

De nieuwste C#-compiler bepaalt een standaardtaalversie op basis van het doelframework of frameworks van uw project. Visual Studio biedt geen gebruikersinterface om de waarde te wijzigen, maar u kunt deze wijzigen door het csproj-bestand te bewerken. De standaardkeuze zorgt ervoor dat u de nieuwste taalversie gebruikt die compatibel is met uw doelframework. U profiteert van toegang tot de nieuwste taalfuncties die compatibel zijn met het doel van uw project. Deze standaardkeuze zorgt er ook voor dat u geen taal gebruikt waarvoor typen of runtimegedrag niet beschikbaar zijn in uw doelframework. Als u een nieuwere taalversie kiest dan de standaardversie, kan het moeilijk zijn om compileer- en runtimefouten vast te stellen.

C# 12 wordt alleen ondersteund op .NET 8 en nieuwere versies. C# 11 wordt alleen ondersteund in .NET 7 en nieuwere versies. C# 10 wordt alleen ondersteund op .NET 6 en nieuwere versies.

Controleer de compatibiliteitspagina van het Visual Studio-platform voor meer informatie over welke .NET-versies worden ondersteund door versies van Visual Studio. Controleer de Visual Studio voor Mac-platformcompatibiliteitspagina voor meer informatie over welke .NET-versies worden ondersteund door versies van Visual Studio voor Mac. Controleer de monopagina voor C# voor monocompatibiliteit met C#-versies.

Defaults

De compiler bepaalt een standaardwaarde op basis van deze regels:

Doel Versie Standaardtaalversie van C#
.NET 8.x C# 12
.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 Alles C# 7.3

Als uw project is gericht op een preview framework met een bijbehorende preview-taalversie, is de gebruikte taalversie de preview-taalversie. U gebruikt de nieuwste functies met die preview in elke omgeving, zonder dat dit van invloed is op projecten die gericht zijn op een uitgebrachte .NET Core-versie.

Belangrijk

De nieuwe projectsjabloon voor Visual Studio 2017 heeft een <LangVersion>latest</LangVersion> vermelding toegevoegd aan nieuwe projectbestanden. Als u het doelframework voor deze projecten bijwerkt, kan de <LangVersion> instelling de standaardwaarde voor het nieuwe doelframework overschrijven. Zorg ervoor dat u het <LangVersion>latest</LangVersion> uit uw projectbestand verwijdert om ervoor te zorgen dat uw project gebruikmaakt van de aanbevolen compilerversie voor uw doelframework. U kunt het doelframework bijwerken voor toegang tot nieuwere taalfuncties.

De standaardinstelling overschrijven

Als u uw C#-versie expliciet moet opgeven, kunt u dit op verschillende manieren doen:

Tip

U kunt de taalversie in Visual Studio zien op de pagina met projecteigenschappen. Op het tabblad Opbouwen wordt in het deelvenster Geavanceerd de geselecteerde versie weergegeven.

Als u wilt weten welke taalversie u momenteel gebruikt, plaatst #error version u (hoofdlettergevoelig) in uw code. Hierdoor meldt de compiler een compilerfout, CS8304, met een bericht met de gebruikte compilerversie en de huidige geselecteerde taalversie. Zie #error (C#-verwijzing) voor meer informatie.

Het projectbestand bewerken

U kunt de taalversie instellen in uw projectbestand. Als u bijvoorbeeld expliciet toegang wilt tot preview-functies, voegt u een element als volgt toe:

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

De waarde preview maakt gebruik van de meest recente preview-taalversie van C# die door uw compiler wordt ondersteund.

Meerdere projecten configureren

Als u meerdere projecten wilt configureren, kunt u een bestand Directory.Build.props maken, meestal in uw oplossingsmap , dat het <LangVersion> element bevat. Voeg de volgende instelling toe aan het bestand Directory.Build.props :

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

Builds in alle submappen van de map die dat bestand bevat, gebruiken nu de preview C#-versie. Zie Uw build aanpassen voor meer informatie.

Naslaginformatie over de C#-taalversie

In de volgende tabel ziet u alle huidige C#-taalversies. Oudere compilers begrijpen mogelijk niet elke waarde. Als u de nieuwste .NET SDK installeert, hebt u toegang tot alles wat wordt vermeld.

Weergegeven als Betekenis
preview De compiler accepteert alle geldige taalsyntaxis uit de nieuwste preview-versie.
latest De compiler accepteert syntaxis van de meest recente uitgebrachte versie van de compiler (inclusief secundaire versie).
latestMajor
of default
De compiler accepteert syntaxis van de meest recente primaire versie van de compiler.
12.0 De compiler accepteert alleen syntaxis die is opgenomen in C# 12 of lager.
11.0 De compiler accepteert alleen syntaxis die is opgenomen in C# 11 of lager.
10.0 De compiler accepteert alleen syntaxis die is opgenomen in C# 10 of lager.
9.0 De compiler accepteert alleen syntaxis die is opgenomen in C# 9 of lager.
8.0 De compiler accepteert alleen syntaxis die is opgenomen in C# 8.0 of lager.
7.3 De compiler accepteert alleen syntaxis die is opgenomen in C# 7.3 of lager.
7.2 De compiler accepteert alleen syntaxis die is opgenomen in C# 7.2 of lager.
7.1 De compiler accepteert alleen syntaxis die is opgenomen in C# 7.1 of lager.
7 De compiler accepteert alleen syntaxis die is opgenomen in C# 7.0 of lager.
6 De compiler accepteert alleen syntaxis die is opgenomen in C# 6.0 of lager.
5 De compiler accepteert alleen syntaxis die is opgenomen in C# 5.0 of lager.
4 De compiler accepteert alleen syntaxis die is opgenomen in C# 4.0 of lager.
3 De compiler accepteert alleen syntaxis die is opgenomen in C# 3.0 of lager.
ISO-2
of 2
De compiler accepteert alleen syntaxis die is opgenomen in ISO/IEC 23270:2006 C# (2.0).
ISO-1
of 1
De compiler accepteert alleen syntaxis die is opgenomen in ISO/IEC 23270:2003 C# (1.0/1.2).

Notitie

Het opgeven van LangVersion met de default waarde verschilt van het weglaten van de optie LangVersion . default Opgeven maakt gebruik van de nieuwste versie van de taal die de compiler ondersteunt, zonder rekening te houden met het doelframework. Als u bijvoorbeeld een project bouwt dat is gericht op .NET 6 van de huidige versie van Visual Studio 2022, wordt C# 10 gebruikt als LangVersion niet is opgegeven, maar C# 12 gebruikt als LangVersion is ingesteld op default.