Aller au contenu

.NET 11 apporte les unions de C# 15 ; fin du support de .NET 8 et 9

.NET 11 et C# 15 sont sortis le 10 novembre, jour de la fin du support de .NET 8 et 9. Lors d'un test pratique, un cas d'union oublié n'a donné qu'un avertissement, puis un plantage.

Par

5 min de lecture

XLinkedIn

Traduit automatiquement de l'original anglais, vérifié et édité par Claire Whitmore. La version anglaise fait foi. Notre méthode

Screenshot of Microsoft's .NET and .NET Core Support Policy page, with a supported versions table listing .NET 11 (STS) and .NET 10 (LTS), both supported until November 14, 2028.

En chiffres

fin du support de .NET 8 et de .NET 9
10 nov. 2026
fin du support de .NET 10 et de .NET 11
14 nov. 2028
de support pour .NET 11, une version Standard Term Support
2 ans

Microsoft a publié .NET 11 le 10 novembre 2026, avec C# 15 et ses nouveaux types union. Le même jour, .NET 8 et .NET 9 sont arrivés en fin de support, selon la page de politique de support de Microsoft. Le .NET de Microsoft est une plateforme gratuite et open source pour créer des applications, et C# en est le langage principal. Les applications qui tournent encore sous .NET 8 ou 9 ne reçoivent plus de correctifs de sécurité de Microsoft.

L'annonce sur le .NET Blog est parue le premier jour de la .NET Conf 2026, qui se tient du 10 au 13 novembre. Thurrott.com note que .NET 11 est une version Standard Term Support (STS), prise en charge pendant deux ans. Les versions Long Term Support (LTS) comme .NET 10 ont droit à trois ans.

Ce que contiennent .NET 11 et C# 15

L'essentiel, c'est le langage. C# 15 est le langage par défaut de tout projet qui cible .NET 11, aucun réglage n'est donc nécessaire. La page « Nouveautés de C# 15 » de Microsoft liste ces fonctionnalités :

FonctionnalitéCe qu'elle faitExige un indicateur de préversion
Types unionUn type qui contient exactement un type parmi une liste fixeNon
Hiérarchies ferméesUne classe de base dont le compilateur connaît toutes les sous-classesNon
Arguments d'expressions de collectionPasser des réglages de constructeur, comme une capacité, dans [...]Non
Indexeurs d'extensionAjouter un accès [index] à un type qui ne vous appartient pasNon
break et continue étiquetésSortir d'une boucle extérieure depuis une boucle intérieureNon
Membres d'interface statiques sur d'anciens runtimesDes méthodes statiques simples dans les interfaces, sans le soutien d'un runtime récentNon
Règles de sûreté mémoireDe nouvelles règles pour le code à pointeurs non sécuriséOui

Une union est utile quand une valeur peut prendre plusieurs formes, par exemple un paiement par carte, par virement ou par bon d'achat. Le compilateur vérifie alors que le code traite chaque forme.

Le reste de la version concerne les outils et les bibliothèques. Le .NET Blog cite un hôte natif en ligne de commande et un serveur MSBuild maintenu actif pour accélérer les builds. Il cite aussi la prise en charge d'OpenAPI 3.2 dans ASP.NET Core et des briques d'IA avec MCP, le Model Context Protocol qui relie les modèles d'IA à des outils. Le framework d'applications pour mobiles et ordinateurs, .NET MAUI, tourne désormais sur CoreCLR par défaut. Microsoft évoque « des centaines d'optimisations du runtime », sans donner de chiffres dans l'annonce.

Quelles versions de .NET sont encore prises en charge

Le tableau ci-dessous provient de la page de politique de support de Microsoft, mise à jour le 10 novembre 2026. Selon cette page, les versions paires sont LTS et les impaires STS.

VersionTypeSortieDernier correctifFin du support
.NET 11STS10 novembre 202611.0.014 novembre 2028
.NET 10LTS11 novembre 202510.0.1514 novembre 2028
.NET 9STS12 novembre 20249.0.2310 novembre 2026
.NET 8LTS14 novembre 20238.0.3410 novembre 2026

Un détail ressort. .NET 11 comme .NET 10 perdent leur support le même jour, le 14 novembre 2028. Choisir la version STS ne signifie donc plus une durée de vie plus courte que la version LTS. La politique de Microsoft précise aussi que seul le dernier correctif d'une version est pris en charge. Les six derniers mois de chaque version ne reçoivent plus que des correctifs de sécurité.

Test Tech AI Wire : les unions de C# 15 dans le SDK .NET 11

Lors d'un test Tech AI Wire sous macOS 26, l'image de conteneur officielle mcr.microsoft.com/dotnet/sdk:11.0 (Ubuntu 26.04.1, arm64) a indiqué le SDK 11.0.100. Un nouveau projet console ciblait net11.0, sans réglage de langage. Les exemples C# 15 de Microsoft ont ensuite été compilés et exécutés tels quels, avec une petite grille ajoutée pour le break étiqueté :

Pet pet = new Dog("Rex");
string name = pet switch
{
    Dog d => d.Name,
    Cat c => c.Name,
    Bird b => b.Name,
};

public union Pet(Cat, Dog, Bird);

Le premier dotnet run, build compris, a pris 2,6 secondes. Les autres fonctionnalités ont aussi marché. Un HashSet créé avec un comparateur insensible à la casse n'a gardé qu'une valeur parmi "Hello", "HELLO" et "hello". Un break étiqueté a quitté les deux boucles d'un coup.

Le test a ensuite supprimé la ligne Bird du switch. Le build a quand même réussi. Il a affiché l'avertissement CS8509 : "The switch expression does not handle all possible values of its input type (it is not exhaustive). For example, the pattern 'Bird' is not covered." Autrement dit, l'expression switch ne couvre pas toutes les valeurs de son type d'entrée, par exemple 'Bird'. Quand le programme a ensuite reçu un Bird, il a planté avec une SwitchExpressionException et le code de sortie 134.

La correction a tenu en un réglage. Avec -p:WarningsAsErrors=CS8509, le même build a échoué avec l'erreur CS8509 et le code de sortie 1. Le contrôle de sécurité existe donc, mais par défaut ce n'est qu'un avertissement.

Ce que cela signifie pour les développeurs

Deux sujets demandent de l'attention cette semaine : les anciennes versions et les nouvelles habitudes.

  • Quittez .NET 8 et .NET 9. Les deux ne reçoivent plus de correctifs depuis le 10 novembre. Les dernières versions listées par Microsoft sont 8.0.34 et 9.0.23. Toute faille trouvée à partir de maintenant y restera ouverte.
  • Choisissez entre 10 et 11 selon les fonctionnalités, pas la durée du support. Les deux sont pris en charge jusqu'au 14 novembre 2028. .NET 11 vous donne C# 15 ; pour une équipe sous .NET 8, .NET 10 est le saut le plus court.
  • Faites de CS8509 une erreur avant d'utiliser les unions. Ajoutez <WarningsAsErrors>CS8509</WarningsAsErrors> au fichier projet, le même réglage qui a fait échouer le build du test. Sans lui, un nouveau cas ajouté à une union peut compiler sans bruit et n'échouer qu'en production.
  • Laissez de côté les règles de sûreté mémoire pour l'instant. Elles exigent encore un indicateur de préversion et peuvent changer d'ici une prochaine version.
  • Mettez à jour vos builds de conteneurs. Dans le test, le tag sdk:11.0 a téléchargé le SDK 11.0.100. Épinglez l'image par son digest dans vos Dockerfiles, pour que chaque build utilise le SDK testé.

Les équipes sous .NET 10 n'ont pas d'échéance. Elles peuvent essayer C# 15 dans une branche et migrer quand les bibliothèques dont elles dépendent prendront en charge .NET 11.

Sources

  1. Announcing .NET 11 - .NET Blog
  2. .NET and .NET Core Support Policy - Microsoft
  3. What's new in C# 15 - Microsoft Learn
  4. Microsoft Releases .NET 11 - Thurrott.com

Articles liés