Nouveautés de .NET 5
.NET 5 est la prochaine version majeure de .NET Core après la version 3.1. Nous avons nommé cette nouvelle version .NET 5 au lieu de .NET Core 4 pour deux raisons :
- Nous avons ignoré les numéros de version 4.x pour éviter toute confusion avec .NET Framework 4.x.
- Nous avons supprimé « Core » du nom pour souligner le fait qu’il s’agit de l’implémentation principale de .NET à l’avenir. .NET 5 prend en charge plus de types d’applications et plus de plateformes que .NET Core ou .NET Framework.
ASP.NET Core 5.0 est basé sur .NET 5, mais conserve le nom « Core » pour éviter de le confondre avec ASP.NET MVC 5. De même, Entity Framework Core 5.0 conserve le nom « Core » pour éviter de le confondre avec Entity Framework 5 et 6.
.NET 5 inclut les améliorations et nouvelles fonctionnalités suivantes par rapport à .NET Core 3.1 :
- Mises à jour C#
- Mises à jour F#
- Mises à jour Visual Basic
- Nouvelles fonctionnalités de System.Text.Json
- Applications à fichier unique
- Découpage d’application
- Intrinsèques Windows Arm64 et Arm64
- Prise en charge des outils pour le débogage d’image mémoire
- Les bibliothèques de runtime sont annotées à 80 % pour les types référence Nullable
- Amélioration des performances :
.NET 5 ne remplace pas .NET Framework
.NET 5 et les versions ultérieures sont la principale implémentation de .NET désormais, mais .NET Framework 4.x est toujours pris en charge. Il n’existe aucun plan de portage des technologies suivantes de .NET Framework vers .NET 5, mais il existe des alternatives dans .NET :
Technology | Alternative recommandée |
---|---|
Web Forms | ASP.NET Core Blazor ou Razor Pages |
Windows Workflow (WF) | Elsa-Workflows |
Windows Communication Foundation
L’implémentation d’origine de Windows Communication Foundation (WCF) n’a été prise en charge que sur Windows. Il existe toutefois un port client disponible à partir de .NET Foundation. C’est entièrement open source, multiplateforme et pris en charge par Microsoft. Les packages NuGet de base sont répertoriés ci-dessous :
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
Les composants serveur qui complètent les bibliothèques clientes mentionnées précédemment sont disponibles via CoreWCF. Depuis avril 2022, CoreWCF est officiellement pris en charge par Microsoft. Toutefois, vous pouvez envisager gRPC comme alternative à WCF.
.NET 5 ne remplace pas .NET Standard
Le développement de nouvelles applications peut spécifier le moniker de framework cible net5.0
pour tous les types de projets, y compris les bibliothèques de classes. Le partage de code entre les charges de travail .NET 5 est simplifié : tout ce dont vous avez besoin est le moniker de framework cible net5.0
.
Pour les applications et les bibliothèques .NET 5, le moniker de framework cible net5.0
combine et remplace les monikers de framework cible netcoreapp
et netstandard
. Toutefois, si vous envisagez de partager du code entre les charges de travail .NET Framework, .NET Core et .NET 5, vous pouvez le faire en spécifiant votre moniker de framework cible netstandard2.0
. Pour plus d'informations, consultez .NET Standard.
Mises à jour C#
Les développeurs écrivant des applications .NET 5 auront accès aux dernières version et fonctionnalités C#. .NET 5 est associé à C# 9, ce qui apporte de nombreuses fonctionnalités inédites au langage. Voici quelques points forts :
Enregistrements : types référence avec la sémantique d’égalité basée sur la valeur et mutation non destructrice prise en charge par une nouvelle expression
with
.Critères spéciaux relationnels : étend les fonctionnalités de critères spéciaux aux opérateurs relationnels pour les évaluations et expressions comparatives, y compris les modèles logiques, les nouveaux mots clés
and
,or
etnot
.Instructions de niveau supérieur : comme moyen d’accélérer l’adoption et l’apprentissage de C#, la méthode
Main
peut être omise et une application aussi simple que l’exemple suivant est valide :System.Console.Write("Hello world!");
Pointeurs de fonction : constructions de langage qui exposent les opcodes de langage intermédiaire (IL) suivants :
ldftn
etcalli
.
Pour plus d’informations sur les fonctionnalités C# 9 disponibles, consultez Nouveautés de C# 9.
Générateurs de sources
En plus de certaines des nouvelles fonctionnalités C# mises en surbrillance, les générateurs de source s’imposent dans les projets de développement. Les générateurs de source permettent au code exécuté pendant la compilation d’inspecter votre programme et de produire des fichiers supplémentaires compilés avec le reste de votre code.
Pour plus d’informations sur les générateurs de source, consultez Présentation des générateurs de source C# et Exemples de générateur de source C#.
Mises à jour F#
F# est le langage de programmation fonctionnelle .NET et avec .NET 5, les développeurs ont accès à F# 5. Les chaînes interpolées sont une des nouvelles fonctionnalités. Elles sont semblables aux chaînes interpolées en C#, et même JavaScript.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Outre l’interpolation de chaîne de base, il existe une interpolation typée. Avec l’interpolation typée, un type donné doit correspondre au spécificateur de format.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Ce format est semblable à la fonction sprintf
qui met en forme une chaîne basée sur des entrées de type sécurisé.
Pour plus d’informations, consultez Nouveautés de F# 5.
Mises à jour Visual Basic
Il n’existe aucune nouvelle fonctionnalité de langage pour Visual Basic dans .NET 5. Toutefois, avec .NET 5, la prise en charge de Visual Basic est étendue à :
Description | Paramètre dotnet new |
---|---|
Application console | console |
Bibliothèque de classes | classlib |
Application WPF | wpf |
Bibliothèque de classes WPF | wpflib |
Bibliothèque de contrôles personnalisés WPF | wpfcustomcontrollib |
Bibliothèque de contrôles utilisateur WPF | wpfusercontrollib |
Application Windows Forms (WinForms) | winforms |
Bibliothèque de classes Windows Forms (WinForms) | winformslib |
Projet de test unitaire | mstest |
Projet de test NUnit 3 | nunit |
Élément de test NUnit 3 | nunit-test |
Projet de test xUnit | xunit |
Pour plus d’informations sur les modèles de projet à partir de l’interface CLI .NET, consultez dotnet new
.
Nouvelles fonctionnalités de System.Text.Json
Il existe de nouvelles fonctionnalités dans et pour System.Text.Json :
- Conserver les références et gérer les références circulaires
- Méthodes d’extension HttpClient et HttpContent
- Autoriser ou écrire des nombres entre guillemets
- Prise en charge des types immuables et des enregistrements C# 9
- Prise en charge des accesseurs de propriété non publics
- Champs de support
- Ignorer conditionnellement les propriétés
- Prise en charge des dictionnaires sans clé de chaîne
- Autoriser les convertisseurs personnalisés à gérer la valeur Null
- Copier JsonSerializerOptions
- Créer JsonSerializerOptions avec des valeurs par défaut web