Partager via


Gestion des versions du langage C#

Le compilateur C# le plus récent détermine une version du langage par défaut en fonction du ou des frameworks cibles de votre projet. Visual Studio ne fournit pas d’interface utilisateur pour modifier la valeur, mais vous pouvez la changer en modifiant le fichier csproj. Le choix par défaut garantit que vous utilisez la dernière version de langage compatible avec votre framework cible. Vous bénéficiez d’un accès aux dernières fonctionnalités de langage compatibles avec la cible de votre projet. Ce choix par défaut garantit également que vous n’utilisez pas de langage qui nécessite des types ou un comportement d’exécution non disponibles dans votre framework cible. Le choix d’une version de langage plus récente que la version par défaut peut entraîner des erreurs de compilation et d’exécution difficiles à diagnostiquer.

C# 13 est pris en charge uniquement sur .NET 9 et les versions plus récentes. C# 12 est pris en charge uniquement sur .NET 8 et les versions plus récentes. C# 11 est pris en charge uniquement sur .NET 7 et les versions plus récentes. L’utilisation d’une version de langage C# plus récente que la version associée à votre module TFM cible n’est pas prise en charge.

Consultez la page de compatibilité de la plateforme Visual Studio pour plus d’informations sur les versions de .NET prises en charge par les versions de Visual Studio. Consultez la page Mono dédiée à C# pour connaître la compatibilité de Mono avec les versions de C#.

Valeurs par défaut

Le compilateur détermine une valeur par défaut en fonction de ces règles :

Cible Version Version du langage C# par défaut
.NET 9.x C# 13
.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 all C# 7.3

Si votre projet cible un framework preview qui a une version linguistique de prévisualisation correspondante, la version linguistique utilisée est la version linguistique de prévisualisation. Vous utilisez les fonctionnalités les plus récentes avec cette préversion dans n’importe quel environnement, sans que cela affecte les projets qui ciblent une version .NET Core publiée.

Informations de référence sur la version du langage C#

Le tableau suivant montre toutes les versions actuelles du langage C#. Les compilateurs plus anciens peuvent ne pas comprendre chaque valeur. Si vous installez le dernier SDK .NET, vous avez accès à tous les éléments répertoriés.

Valeur Signification
preview Le compilateur accepte toute la syntaxe de langage valide de la dernière préversion.
latest Le compilateur accepte la syntaxe de la dernière version publiée du compilateur (versions mineures incluses).
latestMajor
ou default
Le compilateur accepte la syntaxe de la dernière version principale publiée du compilateur.
13.0 Le compilateur accepte uniquement la syntaxe incluse dans C# 13 ou une version antérieure.
12.0 Le compilateur accepte uniquement la syntaxe incluse dans C# 12 ou inférieur.
11.0 Le compilateur accepte uniquement la syntaxe incluse dans C# 11 ou une version antérieure.
10.0 Le compilateur accepte uniquement la syntaxe incluse dans C# 10 ou une version antérieure.
9.0 Le compilateur accepte uniquement la syntaxe incluse dans C# 9 ou une version antérieure.
8.0 Le compilateur accepte uniquement la syntaxe incluse dans C# 8.0 ou une version antérieure.
7.3 Le compilateur accepte uniquement la syntaxe incluse dans C# 7.3 ou une version antérieure.
7.2 Le compilateur accepte uniquement la syntaxe incluse dans C# 7.2 ou une version antérieure.
7.1 Le compilateur accepte uniquement la syntaxe incluse dans C# 7.1 ou une version antérieure.
7 Le compilateur accepte uniquement la syntaxe incluse dans C# 7.0 ou une version antérieure.
6 Le compilateur accepte uniquement la syntaxe incluse dans C# 6.0 ou une version antérieure.
5 Le compilateur accepte uniquement la syntaxe incluse dans C# 5.0 ou une version antérieure.
4 Le compilateur accepte uniquement la syntaxe incluse dans C# 4.0 ou une version antérieure.
3 Le compilateur accepte uniquement la syntaxe incluse dans C# 3.0 ou une version antérieure.
ISO-2
ou 2
Le compilateur accepte uniquement la syntaxe incluse dans ISO/IEC 23270:2006 C# (2.0)
ISO-1
ou 1
Le compilateur accepte uniquement la syntaxe incluse dans ISO/IEC 23270:2003 C# (1.0/1.2)

Remarque

Spécifier LangVersionavec la valeur default est différent d’omettre l’option LangVersion. Spécifier default utilise la version du langage pris en charge par le compilateur la plus récente, sans tenir compte de la version cible de .Net Framework. Par exemple, le processus de génération d’un projet qui cible .NET 6 depuis la version actuelle de Visual Studio 2022 utilise C# 10, si LangVersion n’est pas spécifié, mais utilise C# 12 si LangVersion est défini sur default.