Partager via


Configurer la version du langage C#

Les informations contenues dans cet article s’appliquent à .NET 5 et versions ultérieures. Pour les projets UWP, consultez ces informations dans l’article sur Choix d’une version UWP.

Dans Visual Studio, l’option permettant de modifier la version de langue via l’interface utilisateur est 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. Pour modifier la version du langage dans Visual Studio, modifiez l’infrastructure cible du projet.

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 de cet article pour remplacer les paramètres par défaut directement dans le fichier projet.

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. La valeur de latest peut passer de l’ordinateur à l’ordinateur, ce qui rend les builds non fiables. En outre, il active les fonctionnalités de langage qui peuvent nécessiter des fonctionnalités d’exécution ou de bibliothèque non incluses dans le Kit de développement logiciel (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. Ce pragma fait que le compilateur signale une erreur de compilation, CS8304, avec un message contenant la version du compilateur et la version actuelle de la langue sélectionnée. Pour plus d’informations sur ce pragma, consultez #error (référence C#).

Modifier le fichier projet

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

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

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

Configurer plusieurs projets

Pour configurer plusieurs projets C#, vous pouvez créer un fichier Directory.Build.props, généralement dans votre répertoire de solution, qui contient l’élément <LangVersion>. 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.

Remarque

Les versions pour C# et VB sont différentes. N’utilisez pas le fichier Directory.Build.Props pour un dossier dans lequel les sous-répertoires contiennent des projets pour les deux langages. Les versions ne correspondent pas.

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

Importante

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.
14.0 Le compilateur accepte uniquement la syntaxe incluse dans C# 14 ou inférieur.
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)