Partager via


Configurer la version du langage C#

Avertissement

Il est déconseillé d'attribuer à l'élément LangVersion la valeur latest. Le paramètre latest signifie que le compilateur installé utilise sa dernière version. Cette version peut changer d'une machine à l'autre, ce qui rend les compilations peu fiables. En outre, il active des fonctionnalités du langage qui peuvent nécessiter des fonctionnalités d'exécution ou de bibliothèque qui ne sont pas incluses dans le SDK actuel.

Si vous devez spécifier votre version C# explicitement, vous pouvez le faire de plusieurs façons :

Conseil

Vous pouvez voir la version du langage dans Visual Studio dans la page des propriétés du projet. Sous l’onglet Build, le volet Avancé affiche la version sélectionnée.

Pour savoir quelle version de langage vous utilisez actuellement, placez #error version (en respectant la casse) dans votre code. En conséquence, le compilateur signale une erreur de compilateur CS8304 avec un message contenant la version du compilateur utilisée et la version de langage sélectionnée actuelle. Pour plus d’informations, consultez #error (référence C#).

Pourquoi vous ne pouvez pas sélectionner une autre version C# dans Visual Studio

Dans Visual Studio, l’option permettant de modifier la version de langue via l’interface utilisateur peut être désactivée, car la version par défaut est alignée sur l’infrastructure cible du projet (TFM). Cette configuration par défaut garantit la compatibilité entre les fonctionnalités de langage et la prise en charge du runtime.

Par exemple, la modification de la TFM cible (par exemple, de .NET 6 à .NET 9) met à jour la version du langage en conséquence, de C# 10 à C# 13. Cette approche empêche les problèmes de compatibilité du runtime et réduit les erreurs de build inattendues en raison de fonctionnalités de langage non prises en charge.

Si vous avez besoin d’une version de langue spécifique qui diffère de celle sélectionnée automatiquement, reportez-vous aux méthodes ci-dessous pour remplacer les paramètres par défaut directement dans le fichier projet.

Modifier le fichier projet

Vous pouvez définir la version du langage dans votre fichier projet. Par exemple, si vous souhaitez accéder explicitement aux fonctionnalités d’évaluation, ajoutez un élément comme suit :

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

La valeur preview utilise la dernière préversion disponible du langage C# que prend en charge votre compilateur.

Configurer plusieurs projets

Pour configurer plusieurs projets, vous pouvez créer un fichier Directory.Build.props, généralement dans le répertoire de votre solution, qui contient le <LangVersion> élément. Ajoutez le paramètre suivant au fichier Directory.Build.props :

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

Les builds de tous les sous-répertoires du répertoire contenant ce fichier vont utiliser désormais la préversion de C#. Pour plus d’informations, consultez Personnaliser votre build.

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

Important

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.

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)