Gestion des versions du langage C#C# language versioning

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.The latest C# compiler determines a default language version based on your project's target framework or frameworks. La raison est que le langage C# peut avoir des fonctionnalités qui reposent sur des types ou des composants d’exécution qui ne sont pas disponibles dans chaque implémentation .NET.This is because the C# language may have features that rely on types or runtime components that are not available in every .NET implementation. Cela garantit aussi que quelle que soit la cible sur laquelle votre projet est créé, vous obtenez la version de langage compatible la plus récente par défaut.This also ensures that for whatever target your project is built against, you get the highest compatible language version by default.

Les règles mentionnées dans cet article s’appliquent au compilateur fourni avec Visual Studio 2019 ou le kit SDK .NET Core 3.0.The rules in this article apply to the compiler delivered with Visual Studio 2019, or the .NET Core 3.0 SDK. Les compilateurs C# qui sont installés en même temps que Visual Studio 2017 ou les versions antérieures du kit SDK .NET Core ciblent C# 7.0 par défaut.The C# compilers that are part of the Visual Studio 2017 installation or earlier .NET Core SDK versions target C# 7.0 by default.

Valeurs par défautDefaults

Le compilateur détermine une valeur par défaut en fonction de ces règles :The compiler determines a default based on these rules:

Version cible de .NET FrameworkTarget framework versionversion Version du langage C# par défautC# language version default
.NET Core.NET Core 33.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 allall C# 7.3C# 7.3

Valeur par défaut pour les préversionsDefault for previews

Lorsqu’il s’agit d’une préversion cible pour laquelle il existe une préversion du langage correspondante, c’est cette dernière qui est utilisée.When your project targets a preview framework that has a corresponding preview language version, the language version used is the preview language version. Vous avez ainsi l’assurance de pouvoir utiliser les fonctionnalités les plus récentes dont le fonctionnement est garanti avec cette préversion dans n’importe quel environnement sans affecter vos projets qui ciblent une version finale de .NET Core.This ensures that you can use the latest features that are guaranteed to work with that preview in any environment without affecting your projects that target a released .NET Core version.

Remplacer les valeurs par défautOverride a default

Si vous devez spécifier votre version C# explicitement, vous pouvez le faire de plusieurs façons :If you must specify your C# version explicitly, you can do so in several ways:

Modifier le fichier projetEdit the project file

Vous pouvez définir la version du langage dans votre fichier projet.You can set the language version in your project file. Par exemple, si vous souhaitez accéder explicitement aux fonctionnalités d’évaluation, ajoutez un élément comme suit :For example, if you explicitly want access to preview features, add an element like this:

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

La valeur preview utilise la dernière préversion disponible du langage C# que prend en charge votre compilateur.The value preview uses the latest available preview C# language version that your compiler supports.

Configurer plusieurs projetsConfigure multiple projects

Vous pouvez créer un fichier Directory.Build.props contenant l’élément <LangVersion> pour configurer plusieurs répertoires.You can create a Directory.Build.props file that contains the <LangVersion> element to configure multiple directories. En règle générale, vous faites cela dans votre répertoire de solution.You typically do that in your solution directory. Ajoutez le code suivant à un fichier Directory.build.props dans votre répertoire de solution :Add the following to a Directory.Build.props file in your solution directory:

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

Maintenant, les builds de chaque sous-répertoire du répertoire contenant ce fichier vont utiliser la préversion de C#.Now, builds in every subdirectory of the directory containing that file will use the preview C# version. Pour plus d’informations, consultez l’article sur Personnaliser votre build.For more information, see the article on Customize your build.

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

Le tableau suivant montre toutes les versions actuelles du langage C#.The following table shows all current C# language versions. Votre compilateur peut ne pas nécessairement comprendre chaque valeur si celle-ci est plus ancienne.Your compiler may not necessarily understand every value if it is older. Si vous installez .NET Core 3.0, vous avez accès à toutes les versions listées.If you install .NET Core 3.0, then you will have access to everything listed.

ValueValue SignificationMeaning
previewpreview Le compilateur accepte toute la syntaxe de langage valide de la dernière préversion.The compiler accepts all valid language syntax from the latest preview version.
latestlatest Le compilateur accepte la syntaxe de la dernière version publiée du compilateur (versions mineures incluses).The compiler accepts syntax from the latest released version of the compiler (including minor version).
latestMajorlatestMajor Le compilateur accepte la syntaxe de la dernière version principale publiée du compilateur.The compiler accepts syntax from the latest released major version of the compiler.
8.08.0 Le compilateur accepte uniquement la syntaxe incluse dans C# 8.0 ou une version antérieure.The compiler accepts only syntax that is included in C# 8.0 or lower.
7.37.3 Le compilateur accepte uniquement la syntaxe incluse dans C# 7.3 ou une version antérieure.The compiler accepts only syntax that is included in C# 7.3 or lower.
7.27.2 Le compilateur accepte uniquement la syntaxe incluse dans C# 7.2 ou une version antérieure.The compiler accepts only syntax that is included in C# 7.2 or lower.
7.17.1 Le compilateur accepte uniquement la syntaxe incluse dans C# 7.1 ou une version antérieure.The compiler accepts only syntax that is included in C# 7.1 or lower.
77 Le compilateur accepte uniquement la syntaxe incluse dans C# 7.0 ou une version antérieure.The compiler accepts only syntax that is included in C# 7.0 or lower.
6.6 Le compilateur accepte uniquement la syntaxe incluse dans C# 6.0 ou une version antérieure.The compiler accepts only syntax that is included in C# 6.0 or lower.
55 Le compilateur accepte uniquement la syntaxe incluse dans C# 5.0 ou une version antérieure.The compiler accepts only syntax that is included in C# 5.0 or lower.
44 Le compilateur accepte uniquement la syntaxe incluse dans C# 4.0 ou une version antérieure.The compiler accepts only syntax that is included in C# 4.0 or lower.
33 Le compilateur accepte uniquement la syntaxe incluse dans C# 3.0 ou une version antérieure.The compiler accepts only syntax that is included in C# 3.0 or lower.
ISO-2ISO-2 Le compilateur accepte uniquement la syntaxe incluse dans ISO/IEC 23270:2006 C# (2.0)The compiler accepts only syntax that is included in ISO/IEC 23270:2006 C# (2.0)
ISO-1ISO-1 Le compilateur accepte uniquement la syntaxe incluse dans ISO/IEC 23270:2003 C# (1.0/1.2)The compiler accepts only syntax that is included in ISO/IEC 23270:2003 C# (1.0/1.2)