Dotnet Navigate Migration Guide
Dotnet Navigate Migration Guide
e VUE D’ENSEMBLE
i RÉFÉRENCE
Cet article fournit une vue d’ensemble de ce que vous devez prendre en compte lors du
portage de votre code de .NET Framework vers .NET (anciennement nommé .NET Core).
Le portage vers .NET à partir de .NET Framework pour de nombreux projets est
relativement simple. La complexité de vos projets détermine la quantité de travail que
vous allez effectuer après la migration initiale des fichiers projet.
Les projets où le modèle d’application est disponible dans .NET (comme les
bibliothèques, les applications console et les applications de bureau) nécessitent
généralement peu de modifications. Les projets qui nécessitent un nouveau modèle
d’application, comme le passage vers ASP.NET Core de ASP.NET, nécessitent davantage
de travail. De nombreux modèles de l’ancien modèle d’application ont des équivalents
qui peuvent être utilisés pendant la conversion.
Avant de migrer une application Windows Forms ou WPF, tenez compte des
dépendances suivantes :
1. Les fichiers projet pour .NET utilisent un format différent du .NET Framework.
2. Votre projet peut utiliser une API qui n’est pas disponible dans .NET.
3. Les bibliothèques et les contrôles tiers n’ont peut-être pas été portés vers .NET et
restent disponibles uniquement pour .NET Framework.
4. Votre projet utilise une technologie qui n’est plus disponible dans .NET.
.NET utilise les versions open source de Windows Forms et WPF et inclut des
améliorations par rapport à .NET Framework.
Pour obtenir des didacticiels sur la migration de votre application de bureau vers .NET 6,
consultez l’un des articles suivants :
Lors du portage d’une application de .NET Framework vers .NET, votre application a
probablement utilisé une bibliothèque fournie avec le .NET Framework. De nombreuses
API disponibles dans .NET Framework n’ont pas été transférées vers .NET, car elles
s’appuyaient sur des technologies spécifiques à Windows, telles que le Registre
Windows ou le modèle de dessin GDI+.
Domaines d'application
Communication à distance
CAS était une technique de bac à sable prise en charge par .NET Framework, mais
déconseillée dans .NET Framework 4.0. Elle a été remplacée par Transparence de la
sécurité et n’est pas prise en charge dans .NET. Utilisez plutôt les limites de
sécurité fournies par le système d’exploitation, telles que la virtualisation, les
conteneurs ou les comptes d’utilisateur.
Transparence de la sécurité
À l’instar du CAS, cette technique de bac à sable n’est plus recommandée pour les
applications .NET Framework et n’est pas prise en charge dans .NET. Utilisez plutôt
les limites de sécurité fournies par le système d’exploitation, telles que la
virtualisation, les conteneurs ou les comptes d’utilisateur.
System.EnterpriseServices
WF n’est pas pris en charge dans .NET 5+ (y compris .NET Core). Pour obtenir une
alternative, consultez CoreWF .
Pour plus d’informations sur ces technologies non prises en charge, consultez
Technologies .NET Framework indisponibles sur .NET Core et .NET 5+.
Multiplateforme
.NET (anciennement .NET Core) est conçu pour être multiplateforme. Si votre code ne
dépend pas de technologies spécifiques à Windows, il peut s’exécuter sur d’autres
plateformes telles que macOS, Linux et Android. Cela inclut les types de projets tels
que :
Bibliothèques
Outils basés sur la console
Automatisation
Sites ASP.NET
.NET Framework est un composant Windows uniquement. Lorsque votre code utilise des
technologies ou des API spécifiques à Windows, telles que Windows Forms et Windows
Presentation Foundation (WPF), le code peut toujours s’exécuter sur .NET, mais il ne
s’exécute pas sur d’autres systèmes d’exploitation.
Il est possible que votre bibliothèque ou votre application basée sur la console puisse
être utilisée sur plusieurs plateformes sans beaucoup changer. Lors du portage vers
.NET, vous pouvez prendre cela en compte et tester votre application sur d’autres
plateformes.
.NET Standard 2.0 a été la dernière version à prendre en charge .NET Framework.
Même si vous utilisez un outil pour faciliter le portage de votre application, vous devez
consulter la section Considérations relatives au portage de cet article.
Windows Forms
WPF
ASP.NET MVC
Console
bibliothèques de classes ;
Cet outil utilise les autres outils répertoriés dans cet article et guide le processus de
migration. Pour plus d’informations sur l’outil, consultez Vue d’ensemble de l’Assistant
Mise à niveau .NET.
try-convert
L’outil try-convert est un outil global .NET qui peut convertir un projet ou une solution
entière vers le SDK .NET, y compris le déplacement d’applications de bureau vers .NET 5.
Toutefois, cet outil n’est pas recommandé si le processus de génération de votre projet
est complexe, notamment s’il comporte des tâches personnalisées, des cibles ou des
importations.
Pour utiliser l’analyseur de portabilité .NET dans Visual Studio, installez lextension à
partir de la place de marché .
✔️ENVISAGEZ d’utiliser l’Assistant Mise à niveau .NET pour migrer vos projets. Bien que
cet outil soit en préversion, il automatise la plupart des étapes manuelles détaillées dans
cet article et vous offre un excellent point de départ pour poursuivre votre parcours de
migration.
✔️ENVISAGEZ une mise à niveau vers le dernier format de fichier projet, même si vous
ne pouvez pas encore porter votre application. Les projets .NET Framework utilisent un
format de projet obsolète. Même si le dernier format de projet, appelé projets de style
SDK, a été créé pour .NET Core et au-delà, ils fonctionnent avec .NET Framework. Le fait
d’avoir votre fichier projet dans le dernier format vous donne une bonne base pour le
portage de votre application à l’avenir.
✔️RECIBLEZ votre projet .NET Framework vers au moins .NET Framework 4.7.2. Cela
garantit la disponibilité des dernières solutions API pour les cas où .NET Standard ne
prend pas en charge les API existantes.
✔️ENVISAGEZ de cibler .NET 5 au lieu de .NET Core 3.1. Bien que .NET Core 3.1 soit pris
en charge à long terme (LTS), .NET 5 est le dernier et .NET 6 sera LTS lorsqu’il sera publié.
✔️DO ciblez .NET 5 pour les projets Windows Forms et WPF. .NET 5 contient de
nombreuses améliorations pour les applications de bureau.
✔️ENVISAGEZ de cibler .NET Standard 2.0 si vous migrez une bibliothèque qui peut
également être utilisée avec des projets .NET Framework. Vous pouvez également cibler
votre bibliothèque à plusieurs niveaux, en ciblant à la fois .NET Framework et
.NET Standard.
Voir aussi
Vue d’ensemble de l’Assistant Mise à niveau de .NET
migration de ASP.NET vers ASP.NET Core
Migrer des applications WPF .NET Framework vers .NET
Migrer des applications Windows Forms .NET Framework vers .NET
.NET 5 et .NET Framework pour les applications serveur
Commentaires
Cette page a-t-elle été utile ? Yes No
Gestion de version
La première partie de la version du SDK .NET correspond à la version .NET qu’il inclut,
sur laquelle il fonctionne et qu’il cible par défaut. La bande de fonctionnalités
commence à 1 et augmente pour chaque version mineure de Visual Studio tous les
trimestres. La version de patch incrémente avec les mises à jour de maintenance de
chaque mois.
Par exemple, la version 7.0.203, fournie avec .NET 7, est la deuxième version mineure de
Visual Studio depuis la version 7.0.100, et le troisième patch depuis la version 7.0.200.
Une installation de Visual Studio comprend une copie unique du SDK .NET. Si vous
mettez à jour votre instance de Visual Studio, le SDK .NET installé par Visual Studio est
également mis à jour, y compris les bandes de fonctionnalités et les bandes majeures du
SDK .NET. Si vous souhaitez utiliser un SDK .NET différent de celui installé par Visual
Studio, vous pouvez l'installer à partir de la page de téléchargement .NET , et la mise à
jour de Visual Studio ne touchera pas cette version. Vous êtes responsable de la mise à
jour de cette copie du SDK .NET à partir de ce moment-là.
7 Notes
Le SDK .NET permet de cibler les versions inférieures de .NET, c'est pourquoi nous vous
recommandons de toujours mettre à jour votre SDK .NET en même temps que votre
version de Visual Studio.
Cycle de vie
La période de prise en charge du SDK correspond généralement à celle de la version de
Visual Studio qui l’inclut.
Développer pour voir les versions .NET sans prise en charge
ノ Agrandir le tableau
ノ Agrandir le tableau
7 Notes
1
. Les bandes de fonctionnalités du SDK .1xx sont prises en charge tout au long du
cycle de vie des principales versions de .NET. Pendant la période de support
étendue, la prise en charge est limitée aux correctifs de sécurité et aux correctifs de
sécurité à priorité élevée minimum pour Linux uniquement. Pour découvrir plus
d’informations sur le raisonnement de ce support étendu, consultez Prise en
charge de la génération source .
2Les bandes de fonctionnalités du SDK .NET .4xx sont prises en charge pendant la
durée de vie du runtime correspondant en tant qu’installations autonomes.
7 Notes
Le ciblage de net8.0 est officiellement pris en charge dans Visual Studio 17.8+
uniquement.
Le ciblage net9.0 est officiellement pris en charge dans Visual Studio 17.12+
uniquement.
Afin de garantir la cohérence des outils, vous devez utiliser dotnet build plutôt que
msbuild pour générer votre application lorsque cela est possible.
Préversions
Les versions principales du SDK .NET sont généralement publiées quelques jours après
une préversion de Visual Studio. Bien qu’il existe d’autres combinaisons qui
fonctionnent, seule la dernière préversion publiée est testée et officiellement prise en
charge. Le tableau suivant montre avec quelle version de Visual Studio chaque
préversion de .NET a été testée avant d’être publiée.
ノ Agrandir le tableau
9.0.100 GA 17.12 GA
Référence
Vue d’ensemble de la façon dont .NET est versionné
Stratégie de support officielle .NET et .NET Core
Microsoft .NET et .NET Core
Téléchargements .NET (Windows, Linux et macOS)
Cycle de vie et maintenance des produits Visual Studio 2019
.NET et .NET Framework pour les
applications serveur
Article • 07/06/2024
ノ Agrandir le tableau
Choisir .NET
.NET présente les avantages suivants pour les applications serveur :
Vous pouvez héberger les conteneurs Docker dans votre propre infrastructure
Windows ou Linux, ou dans un service cloud comme Azure Kubernetes Service .
Azure Kubernetes Service permet de gérer, d’orchestrer et de mettre à l’échelle des
applications sur conteneur dans le cloud.
L’installation côte à côte n’est pas possible avec .NET Framework. Il s’agit d’un
composant Windows et une seule version peut exister sur un ordinateur à la fois :
chaque version de .NET Framework remplace la version précédente. Si vous
installez une nouvelle application qui cible une version ultérieure de
.NET Framework, vous risquez d’arrêter les applications existantes qui s’exécutent
sur l’ordinateur, car la version précédente a été remplacée.
Dans la plupart des cas, vous n’avez pas besoin de migrer vos applications
existantes vers .NET. Nous vous recommandons plutôt d’utiliser .NET quand vous
étendez une application existante, par exemple quand vous écrivez un nouveau
service web dans ASP.NET Core.
Votre application utilise des packages NuGet ou des bibliothèques tiers non
disponibles pour .NET.
.NET standard permet de partager du code sur toutes les implémentations de .NET,
y compris .NET 6+. Avec .NET Standard 2.0, un mode de compatibilité permet aux
projets .NET Standard et .NET de référencer des bibliothèques .NET Framework.
Pour plus d’informations, consultez Prise en charge des bibliothèques
.NET Framework.
Vous devez utiliser .NET Framework seulement quand les bibliothèques ou les
packages NuGet utilisent des technologies qui ne sont pas disponibles dans
.NET Standard ou .NET.
Votre application utilise des technologies .NET Framework non disponibles pour
.NET
Certaines technologies .NET Framework ne sont pas disponibles dans .NET. La liste
suivante présente les technologies les plus courantes non disponibles dans .NET :
Applications ASP.NET Web Forms : ASP.NET Web Forms est disponible
uniquement dans .NET Framework. ASP.NET Core ne peut pas être utilisé pour
ASP.NET Web Forms.
Applications pages Web ASP.NET : le framework pages Web ASP.NET n’est pas
inclus dans ASP.NET Core.
Services liés aux workflows : Windows Workflow Foundation (WF), les services
de workflow (WCF + WF dans un seul service) et WCF Data Services
(anciennement « ADO.NET Data Services ») sont disponibles uniquement dans
.NET Framework.
Prise en charge des langages : Visual Basic et F# sont pris en charge dans .NET,
mais pas pour tous les types de projet. Pour obtenir la liste des modèles de projet
pris en charge, consultez Options de modèle pour dotnet new.
Votre application utilise une plateforme qui ne prend pas en charge .NET
Voir aussi
Choisir entre ASP.NET et ASP.NET Core
ASP.NET Core ciblant .NET Framework
Frameworks cibles
Présentation de .NET
Portage de .NET Framework vers .NET 5
Introduction à .NET et à Docker
Implémentations de .NET
Microservices .NET. Architecture pour les applications .NET en conteneur
6 Collaborer avec nous sur Commentaires sur .NET
GitHub .NET est un projet open source.
La source de ce contenu se Sélectionnez un lien pour fournir des
trouve sur GitHub, où vous commentaires :
pouvez également créer et
examiner les problèmes et les Ouvrir un problème de
demandes de tirage. Pour plus documentation
d’informations, consultez notre
guide du contributeur. Indiquer des commentaires sur
le produit
Qu’est-ce que l’Assistant Mise à niveau
.NET ?
Article • 31/10/2024
L’Assistant Mise à niveau .NET permet de mettre à niveau des projets vers des versions
plus récentes de .NET et analyse votre code pour repérer et corriger les incompatibilités
potentielles. L’un des principaux éléments de l’outil est d’aider à migrer un projet de
.NET Framework, .NET Core ou .NET vers la dernière version de .NET. Vous utilisez
l’extension ou l’outil pour mettre à niveau des projets .NET entiers, ou un aspect du
projet, par exemple la migration d’un fichier de configuration d’un type plus ancien vers
un type plus récent.
L’Assistant Mise à niveau .NET est distribué en tant qu’extension Visual Studio ou outil
d’interface de ligne de commande (CLI).
ASP.NET
Azure Functions
Windows Presentation Foundation
Windows Forms
bibliothèques de classes ;
Applications de console
Xamarin Forms
.NET MAUI
UWP .NET Native
Certains produits fournissent des conseils sur l’utilisation de l’Assistant Mise à niveau
.NET.
ASP.NET
Windows Presentation Foundation
Windows Forms
Plateforme Windows universelle
Windows Communication Foundation
Copie votre projet et met à niveau la copie, en laissant votre projet d’origine seul.
Incrémentielle côte à côte
Il s’agit d’un bon choix pour les applications web complexes. La mise à niveau de
ASP.NET vers ASP.NET Core nécessite beaucoup de travail et parfois une
refactorisation manuelle. Ce mode place un projet .NET en regard du projet .NET
Framework existant. Les points de terminaison sont routés via le projet .NET, tandis
que tous les autres appels sont envoyés à l’application .NET Framework.
Coche verte non remplie : l’outil n’a rien trouvé concernant l’artefact à mettre à
niveau.
Coche verte remplie : l’artefact a été mis à niveau et s’est terminé avec succès.
Signe d’avertissement jaune : l’artefact a été mis à niveau, mais vous devez
prendre en compte des informations importantes.
Red X : échec de la mise à niveau de l’artefact.
En outre, les actions effectuées pendant la mise à niveau sont enregistrées dans la
fenêtre Sortie sous la source de l’Assistant Mise à niveau, comme illustré dans l’image
suivante :
Contenu connexe
Qu’est-ce que l’analyse du code avec l’Assistant Mise à niveau .NET ?
Installer l’Assistant Mise à niveau .NET
Analyser des projets avec l’Assistant Mise à niveau .NET
Mettre à niveau des projets avec l’Assistant Mise à niveau .NET
Installer l’Assistant Mise à niveau .NET
Article • 31/10/2024
Cet article explique comment installer l’Assistant Mise à niveau .NET à l’aide de
l’extension Visual Studio ou de l’outil CLI (interface de ligne de commande).
Prérequis
Système d'exploitation Windows
Visual Studio 2022 version 17.1 ou ultérieure .
Kit de développement logiciel (SDK) .NET 8 ou version ultérieure .
Méthodes
L’Assistant Mise à niveau .NET peut être installé en tant qu’extension Visual Studio ou en
tant qu’outil global .NET.
L’extension Visual Studio s’exécute dans Visual Studio, sur la solution ou le projet que
vous avez ouvert. L’outil global .NET est une application console interactive qui
s’exécute sur une solution ou un fichier projet situé ou sous le répertoire actif.
Si vous souhaitez que l’expérience simplifiée d’ouverture d’un projet dans Visual Studio
et sa mise à niveau, installez l’extension.
Conseil
CLI .NET
) Important
L’installation de cet outil peut échouer si vous avez configuré une autre
source de flux NuGet. Utilisez le --ignore-failed-sources paramètre pour
traiter ces échecs comme des avertissements au lieu d’erreurs, en contournant
ces autres sources de flux NuGet :
CLI .NET
Validation
Les informations suivantes vous aident à déterminer que l’Assistant Mise à niveau .NET
est installé.
Il existe deux façons de déterminer si l’Assistant Mise à niveau .NET est installé en
tant qu’extension Visual Studio. La méthode la plus rapide consiste à cliquer avec
le bouton droit sur n’importe quel projet .NET ou .NET Framework dans la fenêtre
Explorateur de solutions et à rechercher un élément de menu Mettre à niveau.
CLI .NET
L’objectif de cet article est de fournir les étapes de base pour mettre à niveau un projet
avec l’Assistant Mise à niveau .NET. Cela implique de lancer la mise à niveau et
d’examiner les résultats. En fonction de la complexité de votre projet, vous devrez peut-
être effectuer des mises à jour manuelles de votre code.
Certains types de projets ont des conseils spécifiques sur la mise à niveau. Pour plus
d’informations, consultez Types de projets pris en charge.
Prérequis
Pour Visual Studio, consultez Installer l’Assistant Mise à niveau .NET - Extension
Visual Studio
Pour l’outil global .NET, consultez l’Assistant Installation de l’Assistant Mise à
niveau .NET - Outil global .NET
Dans cet exemple, sélectionnez Mettre à niveau le projet vers une version plus
récente de .NET.
6. Sélectionnez la façon dont vous souhaitez effectuer la mise à niveau. Sélectionnez
Mise à niveau du projet sur place, puis sélectionnez Suivant.
Certains projets ne peuvent vous présenter qu’une seule option. Pour plus
d’informations sur ces options, consultez Comment effectuer la mise à niveau.
Chaque artefact traité par la mise à niveau est répertorié, ainsi que son état. Pour plus
d’informations, consultez Les résultats de la mise à niveau.
Vous êtes invité à savoir ce que vous souhaitez mettre à niveau. Selon ce qui est
détecté, certaines options peuvent être appliquées automatiquement ou
manquantes entièrement.
4. Si plusieurs projets sont trouvés, choisissez l’un des projets, puis appuyez sur
Entrée .
Mettez à niveau les projets dans l’ordre de leur dépendance. Par exemple, l’image
précédente a montré deux projets : MatchingGame et MatchingGame.Logic .
MatchingGame dépend MatchingGame.Logic de , il doit donc MatchingGame.Logic être
Pour plus d’informations sur ces options, consultez Comment effectuer la mise à
niveau.
Conseil
Si vous avez sauvegardé votre code, il est sûr de sélectionner La mise à
niveau du projet sur place.
6. Choisissez un framework cible, tel que .NET 8.0, puis appuyez sur Entrée .
7. L’invite finale est une confirmation, affichant toutes les options sélectionnées.
Appuyez sur Entrée pour démarrer la mise à niveau.
Contenu connexe
Qu’est-ce que l’Assistant Mise à niveau .NET ?
Qu’est-ce que l’analyse du code avec l’Assistant Mise à niveau .NET ?
Analyser des projets avec l’Assistant Mise à niveau .NET
Qu’est-ce que l’analyse du code avec
l’Assistant Mise à niveau .NET ?
Article • 31/10/2024
Cet article fournit une vue d’ensemble de la fonction d’analyse du code de l’Assistant
Mise à niveau .NET. L’analyse du code génère un rapport basé sur la configuration, les
dépendances et le code de votre projet. Le rapport contient des informations sur les
problèmes potentiels et les problèmes que vous pouvez rencontrer pendant la mise à
niveau, ainsi que les étapes à suivre pour corriger ces problèmes.
Types d’analyse
Il existe deux types d’analyse que vous pouvez effectuer sur votre code :
Dépendances binaires
Analyse les dépendances binaires externes (telles que les packages NuGet) pour
vos projets.
Rapports
Un rapport de tableau de bord est généré une fois l’analyse terminée. Ce rapport
décompose les résultats par projet, fichier, incident et points d’histoire. Une vue
d’agrégation est également disponible pour regrouper les problèmes similaires, quel
que soit le projet dans lequel ils ont été détectés.
Conseil
Les points d’histoire sont un concept Agile qui permet d’estimer la complexité et
l’effort requis pour résoudre un problème. Pour plus d’informations, consultez la
section Points de l’histoire des incidents.
Chaque problème dans le rapport est classé par gravité pour vous aider à hiérarchiser
les correctifs que vous devez effectuer. Les problèmes sont obligatoires ou facultatifs.
Les problèmes obligatoires bloquent la mise à niveau. Les problèmes facultatifs offrent
la possibilité de procéder à une mise à niveau vers une fonctionnalité, une bibliothèque
ou une amélioration du code plus récente.
Tableau de bord
La page Tableau de bord fournit une vue des incidents détectés par l’analyse,
regroupées dans des panneaux :
Résumé
Projets
Problèmes
Incidents
Story Points
Nombre total de points d’article requis pour terminer la mise à niveau. Pour plus
d’informations sur ce qu’est un point d’histoire, consultez la section Points de
l’histoire de l’incident.
Gravité et catégories
Ces deux panneaux affichent des graphiques qui regroupent les incidents par
gravité et par catégorie. Pour plus d’informations sur la gravité, consultez la section
Gravité de l’incident.
Projets
La page Projets décompose les problèmes, incidents et points d’histoire, par projet.
Chaque projet est un lien qui ouvre un rapport d’extraction filtré sur ce projet.
Problèmes d’agrégation
La page Problèmes d’agrégation détaille chaque problème déclenché. Chaque
problème peut être développé pour répertorier chaque incident de ce problème. La
colonne État vous aide à suivre les problèmes que vous avez résolus ou jugés non
applicables.
Gravité de l’incident
Chaque incident de problème a une gravité associée, ce qui peut bloquer la mise à
niveau. La gravité vous aide à comprendre ce qui doit être mis à jour pour que la mise à
niveau réussisse.
ノ Agrandir le tableau
Niveau de Description
gravité
Obligatoire Doit être traité. Le processus de mise à niveau peut gérer ces problèmes pour
vous, tels que la mise à jour du runtime du framework cible (TFM).
Facultatif Celles-ci ne doivent pas poser de problème avec la mise à niveau, mais vous
pouvez envisager de les traiter avant ou après la mise à niveau.
ノ Agrandir le tableau
Story points Taille
1 Simple
3 Complex
5 Refonte
7 Réarchitecture
13 Inconnu
Contenu connexe
Analyser des projets avec l’Assistant Mise à niveau .NET
Analyser des projets avec l’Assistant
Mise à niveau .NET
Article • 31/01/2025
Cet article explique comment effectuer une analyse du code sur vos projets avec
l’Assistant Mise à niveau .NET, à l’aide de Visual Studio ou du terminal. L’analyse génère
un rapport que vous pouvez rechercher pour obtenir plus d’informations sur la mise à
niveau.
Prérequis
Pour Visual Studio, consultez Installer l’Assistant Mise à niveau .NET - Extension
Visual Studio.
Pour l'outil global .NET, consultez Installer l'Assistant de Mise à niveau .NET - Outil
global .NET.
3. Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur la mise à
niveau de la solution>.
4. Sous l’onglet Assistant Mise à niveau : Accueil , sélectionnez Nouveau rapport.
9. Une fois l’analyse terminée, le tableau de bord du rapport s’affiche. Pour plus
d’informations sur le tableau de bord, consultez Rapports.
Créer un rapport à partir de l’interface CLI
Suivez ces étapes pour analyser un projet à l’aide du terminal. L’outil global .NET est un
outil interactif qui vous guide tout au long des options d’analyse. Utilisez les touches
Flèche haut et Bas pour modifier l’option mise en surbrillance, puis Entrez pour
exécuter l’option Sélectionner l’option. Chaque écran vous présente des options sur la
façon dont vous souhaitez configurer le rapport.
3. Vous êtes invité à savoir ce que vous voulez analyser. Pour cet exemple, choisissez
les sources d’application et appuyez sur Entrée .
4. Choisissez un framework cible, tel que .NET 8.0, puis appuyez sur Entrée .
5. Sélectionnez les types d’éléments que vous souhaitez analyser. Utilisez espace
6. Dans l’écran fichier de configuration, appuyez sur n , sauf si vous avez un fichier
de configuration d’ensemble de règles à appliquer.
10. L’invite finale est une confirmation, affichant toutes les options que vous avez
sélectionnées. Appuyez sur Entrée pour exécuter l’analyse et générer le rapport.
11. Une fois le rapport terminé, un résumé du rapport s’affiche. Les résultats du
rapport sont enregistrés dans le dossier du projet ou de la solution qui a été
analysé.
Contenu connexe
Qu’est-ce que l’analyse du code avec l’Assistant Mise à niveau .NET ?
Qu’est-ce que l’Assistant Mise à niveau .NET ?
Installer l’Assistant Mise à niveau .NET
Effectuer une mise à niveau d’ASP.NET
MVC et de l’API web vers ASP.NET
Core MVC
Article • 06/11/2024
Cet article explique comment mettre à niveau une application ASP.NET Framework MVC
ou API web vers ASP.NET Core MVC à l’aide de l’Assistant Mise à niveau de .NET de
Visual Studio et de l’approche de mise à jour incrémentielle.
Cet article explique comment mettre à niveau une application de bureau Windows
Presentation Foundation (WPF) vers .NET 8. Même si WPF s’exécute sur .NET, une
technologie multiplateforme, WPF est toujours un framework Windows uniquement. Les
types de projets wpF suivants peuvent être mis à niveau avec l’Assistant Mise à niveau
.NET :
Projet WPF
Bibliothèque de contrôles
Bibliothèque .NET
Si vous effectuez une mise à niveau de .NET Framework vers .NET, examinez l’article
Différences avec WPF .NET et le guide de portage de .NET Framework vers .NET .
Prérequis
Système d’exploitation Windows
Visual Studio 2022 version 17.7 ou ultérieure pour cibler .NET 8
Visual Studio 2022 version 17.1 ou ultérieure pour cibler .NET 7
Extension Assistant Mise à niveau .NET pour Visual Studio
Application de démonstration
Cet article a été écrit dans le contexte de la mise à niveau de l’exemple de projet Favoris
web, que vous pouvez télécharger à partir du dépôt GitHub d’exemples .NET.
Conseil
Veillez à disposer d’une sauvegarde de votre code, par exemple dans le contrôle de
code source ou une copie.
Procédez comme suit pour mettre à niveau un projet dans Visual Studio :
Un nouvel onglet est ouvert qui vous invite à choisir la façon dont vous souhaitez
que la mise à niveau soit effectuée.
4. Une arborescence s’affiche avec tous les artefacts liés au projet, tels que les fichiers
de code et les bibliothèques. Vous pouvez mettre à niveau des artefacts individuels
ou l’ensemble du projet, qui est la valeur par défaut. Sélectionnez Mettre à niveau
la sélection pour démarrer la mise à niveau.
Une fois la mise à niveau terminée, les résultats sont affichés. Si un élément a un
symbole d’avertissement, cela signifie qu’il existe une note à lire, que vous pouvez faire
en développant l’élément.
Si votre application a rencontré des erreurs, vous pouvez les trouver dans la fenêtre
Liste d’erreurs avec une recommandation pour les corriger.
L’Assistant Mise à niveau .NET a mis à niveau certains packages vers de nouvelles
versions. Avec l’exemple d’application fourni dans cet article, le
Microsoft.Data.Sqlite package NuGet a été mis à niveau de 1.0.0 à 8.0.x.
Toutefois, la version 1.0.0 dépend du SQLite package NuGet, mais la version 8.0.x
supprime cette dépendance. Le SQLite package NuGet est toujours référencé par
le projet, même s’il n’est plus nécessaire. Les SQLite packages NuGet et
SQLite.Native NuGet peuvent être supprimés du projet.
Les API et les bibliothèques ont changé un peu depuis la publication de .NET. Dans
la plupart des cas, .NET Framework n’a pas accès à ces améliorations. En effectuant
une mise à niveau vers .NET, vous avez désormais accès à des bibliothèques plus
modernes.
Les sections suivantes décrivent les zones que vous moderniserez l’exemple
d’application utilisé par cet article.
XAML
<mah:MetroWindow x:Class="WebSiteRatings.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-
compatibility/2006"
xmlns:mah="clr-
namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:local="clr-namespace:WebSiteRatings"
xmlns:vm="clr-namespace:WebSiteRatings.ViewModels"
xmlns:VoteControl="clr-
namespace:StarVoteControl;assembly=StarVoteControl"
xmlns:wpfControls="clr-
namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2
.Wpf"
Loaded="MetroWindow_Loaded"
mc:Ignorable="d"
Title="My Sites" Height="650" Width="1000">
XAML
un valide Uri. Ce code était précédemment passé dans l’URL du site Web sous la
forme d’une chaîne, mais le WebView2 contrôle nécessite un Uri .
C#
if (siteCollection.SelectedSite != null)
browser.Source = new Uri(siteCollection.SelectedSite.Url);
else
browser.NavigateToString("<body></body>");
}
Selon la version de Windows qu’un utilisateur de votre application exécute, il peut avoir
besoin d’installer le runtime WebView2. Pour plus d’informations, consultez Démarrage
de WebView2 dans les applications WPF.
Moderniser : appsettings.json
.NET Framework utilise le fichier App.config pour charger les paramètres de votre
application, tels que les chaînes de connexion et les fournisseurs de journalisation. .NET
utilise désormais le fichier appsettings.json pour les paramètres de l’application. Les
fichiers App.config sont pris en charge dans .NET via le
System.Configuration.ConfigurationManager package NuGet, et la prise en charge de
À mesure que d’autres bibliothèques sont mises à niveau vers .NET, elles se modernisent
en prenant en charge appsettings.json au lieu de App.config. Par exemple, les
fournisseurs de journalisation dans .NET Framework qui ont été mis à niveau pour
.NET 6+ n’utilisent plus App.config pour les paramètres. Il est bon de suivre leur direction
et de s’éloigner de l’utilisation d’App.config où vous pouvez.
XML
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
JSON
{
"ConnectionStrings": {
"database": "DataSource=sqlite.db;"
}
}
C#
using System.Windows;
using Microsoft.Extensions.Configuration;
namespace WebSiteRatings
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
public static IConfiguration Config { get; private set; }
public App()
{
Config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
}
}
}
C#
using Microsoft.Data.Sqlite;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;
namespace WebSiteRatings.Models
{
internal class Database
{
public static SqliteConnection OpenConnection() =>
new
SqliteConnection(App.Config.GetConnectionString("database"));
Cet article explique comment mettre à niveau une application de bureau Windows
Forms vers .NET à l’aide de l’Assistant Mise à niveau .NET. Windows Forms reste une
infrastructure Windows uniquement, même si .NET est une technologie multiplateforme.
Prérequis
Système d’exploitation Windows.
Téléchargez et extrayez l’application de démonstration utilisée avec cet article.
Visual Studio 2022 version 17.12 ou ultérieure pour cibler .NET 9.
Extension De l’Assistant Mise à niveau .NET pour Visual Studio.
Évaluation
Vous devez analyser vos projets avant d’effectuer une mise à niveau. L’exécution d’une
analyse du code sur vos projets avec l’Assistant Mise à niveau .NET génère un rapport
auquel vous pouvez vous référer pour identifier les bloqueurs de migration potentiels.
Pour analyser vos projets et générer un rapport, cliquez avec le bouton droit sur le
fichier solution dans Explorateur de solutions, puis sélectionnez Mettre à niveau. Pour
plus d’informations sur l’exécution d’une analyse, consultez Analyser des projets avec
l’Assistant Mise à niveau .NET.
Conseil
Veillez à disposer d’une sauvegarde de votre code, par exemple dans le contrôle de
code source ou une copie.
Procédez comme suit pour mettre à niveau un projet dans Visual Studio :
Un nouvel onglet est ouvert qui vous invite à choisir la mise à niveau que vous
souhaitez effectuer.
4. Une arborescence s’affiche avec tous les artefacts liés au projet, tels que les fichiers
de code et les bibliothèques. Vous pouvez mettre à niveau des artefacts individuels
ou l’ensemble du projet, qui est la valeur par défaut. Sélectionnez Mettre à niveau
la sélection pour démarrer la mise à niveau.
Il ne respecte pas également l’utilisation des extensions utilisées dans les My projets
.NET Framework, tels que My.Computer et My.User . Ces extensions ont été supprimées
dans .NET. En raison de ces deux problèmes, une bibliothèque Visual Basic ne sera pas
compilée après la migration avec l’Assistant Mise à niveau .NET.
Pour résoudre ce problème, le projet doit cibler Windows et référencer Windows Forms.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<OutputType>Library</OutputType>
<MyType>Windows</MyType>
Une fois la mise à niveau terminée, les résultats sont affichés. Notez comment le projet
Windows Forms a un symbole d’avertissement. Développez cet élément et plus
d’informations s’affichent à propos de cette étape :
Notez que le composant de mise à niveau du projet mentionne que la police par défaut
a changé. Étant donné que la police peut affecter la disposition du contrôle, vous devez
vérifier chaque formulaire et contrôle personnalisé dans votre projet pour vous assurer
que l’interface utilisateur est correctement organisée.
Si votre application a rencontré des erreurs, vous pouvez les trouver dans la fenêtre
Liste d’erreurs avec une recommandation pour les corriger.
L’exemple de projet de jeu correspondant Windows Forms est désormais mis à niveau
vers .NET 9.
Le guide de portage fournit une vue d’ensemble de ce que vous devez prendre en
compte lors du portage de votre code à partir de .NET Framework vers .NET. La
complexité de vos projets détermine la quantité de travail que vous allez effectuer
après la migration initiale des fichiers projet.
Le monde de .NET a beaucoup changé depuis .NET Framework. Ce lien fournit des
informations sur la modernisation de votre application après la mise à niveau.
Migrer d’UWP vers le SDK d’application
Windows avec l’Assistant Mise à niveau
.NET
Article • 09/10/2023
L’Assistant Mise à niveau .NET (consultez Vue d’ensemble de l’Assistant Mise à niveau
.NET) est une extension Visual Studio (recommandée), et un outil en ligne de
commande, qui peut vous aider à migrer une application de plateforme Windows
universelle (UWP) C# vers une application de la Bibliothèque d’interface utilisateur
Windows (WinUI) 3 utilisant le SDK d’application Windows.
Notre feuille de route pour la prise en charge d’UWP dans l’Assistant Mise à niveau .NET
comprend d’autres améliorations d’outils et la prise en charge de la migration pour les
nouvelles fonctionnalités. Si vous rencontrez des problèmes liés à l’Assistant Mise à
niveau .NET, vous pouvez les signaler dans Visual Studio en sélectionnant Aide>Envoyer
des commentaires>Signaler un problème.
Résumé
Quand vous utilisez l’Assistant Mise à niveau .NET pour migrer votre application UWP,
voici les étapes générales et les phases du processus de migration effectuées par l’outil.
Copie éventuellement votre projet et migre la copie : laisse votre projet d’origine
inchangé.
Migre éventuellement votre projet sur place (dans les mêmes dossiers et fichiers,
sans renommer les dossiers) : ne fait pas de copie.
Met à niveau votre projet du format .NET Framework vers le dernier format de
projet SDK .NET.
Nettoie les références de package NuGet. En plus des packages référencés par
votre application, le fichier packages.config contient des références aux
dépendances de ces packages. Par exemple, si vous avez ajouté une référence au
package A, qui dépend du package B, les deux packages sont référencés dans le
fichier packages.config . Dans le nouveau système de projet, seule la référence au
package A est nécessaire. Cette étape analyse les références de package et
supprime celles qui ne sont pas nécessaires. Votre application fait néanmoins
toujours référence aux assemblys .NET Framework. Certains de ces assemblys
peuvent être disponibles sous forme de packages NuGet. Cette étape analyse ces
assemblys et référence le package NuGet approprié.
Cible .NET 6 et le SDK d’application Windows.
Remplace le moniker de framework cible (TFM) (consultez Frameworks cibles dans
les projets de style SDK) .NET Framework par le SDK suggéré. Par exemple, net6.0-
windows
Migre votre code source UWP de WinUI 2 vers WinUI 3, en effectuant les
changements de code propres à la source.
Ajoute/met à jour tous les fichiers de modèle, de configuration et de code. Par
exemple, ajoute les profils de publication nécessaires, App.xaml.cs ,
MainWindow.xaml.cs , MainWindow.xaml et autres.
Pendant son exécution, l’outil donne également des conseils de migration sous la forme
de messages d’avertissement dans la sortie de l’outil, et des éléments TODO de la Liste
des tâches sous la forme de commentaires dans le code source de votre projet (par
exemple, quand une migration entièrement automatisée de votre code source UWP
n’est pas possible). Un élément TODO de la Liste des tâches classique comprend un lien
vers une rubrique dans cette documentation de migration. En tant que développeur,
vous contrôlez toujours le processus de migration.
Conseil
Pour voir tous les éléments TODO générés par l’outil, consultez la Liste des tâches
dans Visual Studio.
7 Notes
Une fois l’exécution de l’outil terminée, vous pouvez choisir d’effectuer certaines
étapes de suivi si nécessaire. Vous pouvez déplacer votre code de App.xaml.old.cs
vers App.xaml.cs , et vous pouvez restaurer AssemblyInfo.cs à partir de la
sauvegarde créée par l’outil.
L’outil migre votre projet ainsi que votre code pour qu’il soit compilé. Toutefois,
certaines fonctionnalités demandent une investigation et une correction (via les
éléments TODO de la Liste des tâches). Pour plus d’informations sur les éléments à
prendre en compte avant la migration, consultez Éléments pris en charge pendant la
migration d’UWP vers WinUI 3.
Les vues personnalisées ne sont pas prises en charge. Par exemple, vous ne recevez
pas d’avertissement ou de correctif pour une boîte de dialogue personnalisée qui
étend MessageDialog et appelle une API de manière incorrecte.
Les composants Windows Runtime ne sont pas pris en charge.
correctement.
7 Notes
Pour obtenir des conseils sur le processus de migration (et connaître les différences
entre les fonctionnalités et les API UWP/SDK d’application Windows), consultez
Migrer d’UWP vers le SDK d’application Windows.
Conseil
7 Notes
Vous pouvez voir une étude de cas de l’exemple PhotoLab migré entièrement
manuellement dans Migration vers le SDK d’application Windows de l’exemple
d’application UWP PhotoLab.
Conseil
N’oubliez pas qu’une fois que nous avons utilisé l’outil pour automatiser la
migration de l’application, des efforts manuels supplémentaires sont nécessaires
pour terminer la migration.
1. Ouvrez la solution PhotoLab dans Visual Studio.
2. Après avoir installé l’extension de l’Assistant Mise à niveau .NET (consultez Installer
l’Assistant Mise à niveau .NET plus haut dans cette rubrique), cliquez avec le
bouton droit sur le projet dans l’Explorateur de solutions, puis cliquez sur Mettre
à niveau.
3. Choisissez l’option Mettre à niveau le projet vers une version .NET plus récente.
7. L’Assistant Mise à niveau .NET s’exécute et utilise la fenêtre Sortie de Visual Studio
pour imprimer les informations et l’état de progression.
Les numéros de version de votre .csproj résultant sont légèrement différents, mais
ressemblent essentiellement à ceci (avec certains groupes de propriétés de
configuration de build supprimés par souci de concision) :
XML
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<OutputType>WinExe</OutputType>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
<UseWinUI>true</UseWinUI>
<ApplicationManifest>app.manifest</ApplicationManifest>
<EnableMsixTooling>true</EnableMsixTooling>
<Platforms>x86;x64;arm64</Platforms>
<PublishProfile>win10-$(Platform).pubxml</PublishProfile>
</PropertyGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.1.0" />
<PackageReference Include="Microsoft.Graphics.Win2D" Version="1.0.0.30"
/>
<PackageReference
Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers"
Version="0.4.346201">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Windows.Compatibility"
Version="6.0.0" />
<PackageReference Include="CommunityToolkit.WinUI.UI.Animations"
Version="7.1.2" />
</ItemGroup>
<ItemGroup>
<Compile Remove="App.xaml.old.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.xaml.old.cs" />
</ItemGroup>
</Project>
Par ailleurs, l’Assistant Mise à niveau .NET ajoute des analyseurs au projet pour aider à
poursuivre le processus de mise à niveau. Par exemple, le package NuGet
Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers.
Consultez la Liste des tâches dans Visual Studio (Afficher>Liste des tâches) afin de
connaître les éléments TODO que vous devez actionner pour terminer manuellement la
migration.
Il est possible que la version UWP (.NET Framework) de votre application contienne des
références de bibliothèque que votre projet n’utilise pas. Vous devez analyser chaque
référence et déterminer si elle est nécessaire ou non. L’outil a peut-être aussi ajouté ou
mis à niveau une référence de package NuGet vers la mauvaise version.
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows1
0/restrictedcapabilities"
XML
Dans votre fichier .csproj , vous devez peut-être modifier le fichier projet pour définir
<OutputType>WinExe</OutputType> et <UseMaui>False</UseMaui> .
Pour utiliser un grand nombre de contrôles XAML, vérifiez que votre fichier app.xaml
contient <XamlControlsResources> , comme dans cet exemple :
XML
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"
/>
<!-- Other merged dictionaries here -->
</ResourceDictionary.MergedDictionaries>
<!-- Other app resources here -->
</ResourceDictionary>
</Application.Resources>
Conseils de dépannage
Plusieurs problèmes connus peuvent se produire lors de l’utilisation de l’Assistant Mise à
niveau de .NET. Dans certains cas, il s’agit de problèmes avec l’outil try-convert que
l’Assistant Mise à niveau de .NET utilise en interne.
L’Assistant Mise à niveau .NET est un outil de ligne de commande qui aide à mettre à
niveau un projet WCF côté serveur existant sur .NET Framework afin d’utiliser les services
CoreWCF sur .NET 6. Cet article fournit :
) Important
La mise à niveau des projets WCF nécessite une version héritée de l’Assistant Mise
à niveau .NET et n’est pas compatible avec les dernières versions. Des instructions
sur l’installation de la version héritée sont fournies dans la section Installer la
version héritée.
Pour qu’un projet WCF soit applicable à cette mise à niveau, il doit répondre aux
exigences suivantes :
Si le projet WCF a plusieurs ServiceHost , tous les hôtes doivent être créés dans la
même méthode.
La version actuelle de l’outil ne prend pas en charge les projets WCF hébergés via des
fichiers .svc.
7 Notes
Si votre projet n’est pas applicable pour cet outil, nous vous recommandons de
consulter le Guide de procédure pas à pas CoreWCF et l’exemple de
démonstration BeanTrader et de mettre à jour manuellement le projet.
Prérequis
Système d'exploitation Windows
Visual Studio 2022 version 17.1 ou ultérieure .
Kit sdk .NET 6 ou version ultérieure .
Version 0.4.421302 de l’Assistant Mise à niveau .NET, appelée version « héritée ».
CLI .NET
) Important
CLI .NET
Application de démonstration
Vous pouvez utiliser l’exemple de projet Calculatrice de base pour tester la mise à
niveau avec l’Assistant Mise à niveau, qui est également la démonstration utilisée dans
cette documentation.
Si vous voulez essayer un exemple plus complexe, consultez l’exemple BeanTrader
créé par Mike Rousos.
Quand un projet est spécifié, le processus de mise à niveau démarre immédiatement sur
ce projet. Si une solution est fournie, vous sélectionnez le projet que vous exécutez
normalement, appelé « point d’entrée de mise à niveau ». Basé sur ce projet, un
graphique des dépendances est créé et une suggestion sur l’ordre dans lequel vous
devez mettre à niveau les projets est fournie.
Console
L’outil s’exécute et vous montre une liste des étapes qu’il va effectuer. À mesure que
chaque étape est effectuée, l’outil fournit un ensemble de commandes permettant à
l’utilisateur d’appliquer ou d’ignorer l’étape suivante ou une autre option, comme par
exemple :
Si vous appuyez sur Entrée sans choisir un numéro, c’est le premier élément de la liste
qui est sélectionné.
À mesure que chaque étape s’initialise, elle peut fournir des informations sur ce qui peut
se produire si vous appliquez l’étape.
Output
Upgrade Steps
Choose a command:
1. Apply next step (Select an entrypoint)
2. Skip next step (Select an entrypoint)
3. See more step details
4. Configure logging
5. Exit
Choisissez la commande 1 pour démarrer cette étape. Les résultats sont affichés :
Output
Deux projets sont listés. Comme notre outil met à niveau le projet côté serveur, nous
allons choisir la commande 2 pour sélectionner le projet de service comme point
d’entrée.
) Important
En fonction du projet que vous mettez à niveau, vous pouvez ou non voir toutes les
étapes listées dans cet exemple.
La sortie suivante décrit les étapes impliquées dans la mise à niveau du projet :
Output
Upgrade Steps
Entrypoint:
C:\Users\Desktop\CalculatorSample\CalculatorService\CalculatorService.csproj
Current Project:
C:\Users\Desktop\CalculatorSample\CalculatorService\CalculatorService.csproj
Choose a command:
1. Apply next step (Back up project)
2. Skip next step (Back up project)
3. See more step details
4. Select different project
5. Configure logging
6. Exit
7 Notes
Pour le reste de cet article, les étapes de mise à niveau ne sont pas montrées
explicitement, sauf s’il y a quelque chose d’important à signaler. Les résultats de
chaque étape sont néanmoins toujours affichés.
Output
L’outil choisit un chemin de sauvegarde par défaut nommé d’après le dossier actif, mais
y ajoute .backup . Vous pouvez choisir un chemin personnalisé comme alternative au
chemin par défaut. Pour chaque projet mis à niveau, le dossier du projet est copié dans
le dossier de sauvegarde. Dans cet exemple, le dossier CalculatorService est copié
depuis CalculatorSample\CalculatorService vers
CalculatorSample.backup\CalculatorService pendant l’étape de sauvegarde :
Output
Output
[10:25:56 INF] Applying upgrade step Convert project file to SDK style
[10:25:56 INF] Converting project file format with try-convert, version
0.4.0-dev
[10:25:56 INF] Recommending executable TFM net6.0 because the project builds
to an executable
C:\Users\Desktop\CalculatorSample\CalculatorService\CalculatorService.csproj
contains an App.config file. App.config is replaced by appsettings.json in
.NET Core. You will need to delete App.config and migrate to
appsettings.json if it's applicable to your project.
[10:25:58 INF] Converting project
C:\Users\CalculatorSample\CalculatorService\CalculatorService.csproj to SDK
style
[10:25:58 INF] Project file converted successfully! The project may require
additional changes to build successfully against the new .NET target.
[10:26:00 INF] Upgrade step Convert project file to SDK style applied
successfully
Faites attention à la sortie de chaque étape. Notez que l’exemple de sortie indique que
vous devrez effectuer une étape manuelle après la mise à niveau :
App.config est remplacé par appsettings.json dans .NET Core. Vous devrez
supprimer App.config et migrer vers appsettings.json si c’est applicable à votre
projet.
Dans cet exemple, l’étape de mise à jour WCF va créer un fichier wcf.config basé sur la
section system.serviceModel de App.config. Nous n’avons pas besoin de migrer vers
appsettings.json.
En plus des packages référencés par votre application, le fichier packages.config contient
des références aux dépendances de ces packages. Par exemple, si vous avez ajouté une
référence au package A qui dépend du package B, les deux packages sont référencés
dans le fichier packages.config. Dans le nouveau système de projet, seule la référence au
package A est nécessaire. Cette étape analyse les références de package et supprime
celles qui ne sont pas nécessaires.
Output
Votre application fait néanmoins toujours référence aux assemblys .NET Framework.
Certains de ces assemblys peuvent être disponibles en tant que packages NuGet. Cette
étape analyse ces assemblys et référence le package NuGet approprié.
configuration du mappage des packages, ces étapes n’ont pas été appliquées.
Gérer le TFM
L’outil change ensuite le TFM et le fait passer de .NET Framework au SDK suggéré. Dans
cet exemple, il s’agit de net6.0-windows .
Output
Ensuite, l’outil met à jour les packages NuGet du projet vers les versions qui prennent en
charge le TFM mis à jour, net6.0-windows .
Output
Une fois les packages mis à jour, l’étape suivante consiste à mettre à jour les fichiers
modèles. Dans cet exemple, aucun fichier modèle ne doit être mis à jour ou ajouté au
projet. Cette étape est ignorée et l’étape suivante démarre automatiquement.
Output
L’Assistant Mise à niveau initialise d’abord l’étape Programme de mise à jour WCF et
vérifie si le projet est applicable pour la mise à jour WCF.
Output
Choose a command:
1. Apply next step (Update WCF service to CoreWCF (Preview))
2. Skip next step (Update WCF service to CoreWCF (Preview))
3. See more step details
4. Select different project
5. Configure logging
6. Exit
Dans cet exemple, la mise à jour WCF est applicable pour CalculatorSample et nous
allons choisir la commande 1 pour appliquer l’étape.
Output
[10:26:23 INF] Applying upgrade step Update WCF service to CoreWCF (Preview)
[10:26:23 INF] Finish updating project file.
[10:26:23 WRN] The mex endpoint is removed from .config file, and service
metadata behavior is configured in the source code instead.
[10:26:23 INF] Finish updating configuration files.
[10:26:23 WRN] Changing void Main() to async Task Main() to enable awaiting
starting and stopping the ASP.NET Core host.
[10:26:23 INF] Finish updating source code.
[10:26:23 INF] Finish writing changes to project file.
[10:26:23 INF] Finish writing changes to configuration files.
[10:26:23 INF] Finish writing changes to the source code to replace the
ServiceHost instance(s).
[10:26:23 INF] Project was successfully updated to use CoreWCF services.
Please review changes.
[10:26:23 INF] Upgrade step Update WCF service to CoreWCF (Preview) applied
successfully
Cette étape crée les mises à jour et les écrit individuellement dans les fichiers d’origine.
Faites attention à la sortie, qui peut vous avertir de la suppression des fichiers d’origine
ou des mises à jour manuelles à effectuer après la mise à niveau.
Une fois la mise à jour WCF terminée, l’étape suivante consiste à mettre à jour les
fichiers de configuration de l’application. Dans cet exemple, il n’y a rien à mettre à
niveau dans les fichiers de configuration de l’application. L’étape WCF a déjà mis à jour
les fichiers de configuration : cette étape ne signale donc rien sur l’utilisation du
system.serviceModel non pris en charge. Cette étape est ignorée et l’étape suivante
démarre automatiquement.
Output
La dernière étape avant la fin de la mise à niveau de ce projet consiste à mettre à jour
toutes les références de code obsolètes. En fonction du type de projet que vous mettez
à niveau, une liste de correctifs de code connus est affichée pour cette étape. Certains
des correctifs peuvent ne pas s’appliquer à votre projet.
Output
Dans le cas présent, aucun des correctifs suggérés ne s’applique à l’exemple de projet,
et cette étape se termine automatiquement immédiatement après la fin de l’étape
précédente.
Output
Output
Choose a command:
1. Apply next step (Finalize upgrade)
2. Skip next step (Finalize upgrade)
3. See more step details
4. Configure logging
5. Exit
>
[10:27:15 INF] Applying upgrade step Finalize upgrade
[10:27:15 INF] Upgrade step Finalize upgrade applied successfully
C#
using System;
using System.Threading.Tasks;
using CoreWCF;
using CoreWCF.Configuration;
using CoreWCF.Description;
using CoreWCF.Security;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
C#
.AddServiceModelConfigurationManagerFile("wcf.config")
.AddServiceModelMetadata()
.AddTransient<CalculatorSample.CalculatorService>();
serviceBuilder.ConfigureServiceHostBase<CalculatorSample.CalculatorService>
(serviceHost =>
{
});
});
await app.StartAsync();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
await app.StopAsync();
}
App.config
XML
wcf.config
XML
Enfin, dans le fichier projet, CalculatorService.csproj , le SDK a été mis à jour vers
Microsoft.NET.Sdk.Web pour activer l’hôte ASP.NET Core et les références de package
XML
<ItemGroup>
<PackageReference Include="System.Configuration.ConfigurationManager"
Version="5.0.0" />
<PackageReference
Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers"
Version="0.4.336902">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="CoreWCF.NetTcp" Version="1.1.0" />
<PackageReference Include="CoreWCF.Primitives" Version="1.1.0" />
<PackageReference Include="CoreWCF.ConfigurationManager" Version="1.1.0"
/>
<PackageReference Include="CoreWCF.Http" Version="1.1.0" />
<PackageReference Include="CoreWCF.WebHttp" Version="1.1.0" />
</ItemGroup>
Conseils de dépannage
Plusieurs problèmes connus peuvent se produire lors de l’utilisation de l’Assistant Mise à
niveau de .NET. Dans certains cas, il s’agit de problèmes avec l’outil try-convert que
l’Assistant Mise à niveau de .NET utilise en interne.
Voir aussi
Blog : Mise à niveau d’un service WCF vers .NET 6 avec CoreWCF
Blog : CoreWCF 1.0 a été publié, WCF pour .NET Core et .NET 5+
Documentations : Vue d’ensemble de l’Assistant Mise à niveau de .NET
Télémétrie de l’Assistant Mise à niveau
Article • 22/05/2023
L’Assistant Mise à niveau inclut une fonctionnalité de télémétrie qui collecte des
données d’utilisation. Les données de télémétrie sont utilisées pour aider à comprendre
comment apporter des améliorations à l’outil.
Console
Console
Console
Divulgation d’informations
L’Assistant Mise à niveau affiche un texte similaire à ce qui suit lorsque vous exécutez
l’outil pour la première fois. Le texte peut varier légèrement selon la version de l’outil
que vous exécutez. Lors de cette première exécution, Microsoft vous informe sur la
collecte de données.
Console
Telemetry
Points de données
La fonctionnalité de télémétrie n’effectue pas les actions suivantes :
Les données sont envoyées en toute sécurité aux serveurs Microsoft et conservées sous
un accès restreint.
Versions de Données
l’Assistant Mise à
niveau
>=0.2.231802 Noms des commandes et des arguments appelés. Les valeurs d’argument
réelles ne sont pas collectées.
>=0.2.231802 ID de projet haché (ou chemin haché si aucun ID n’est disponible) pour
chaque projet.
>=0.2.231802 ID de projet haché (ou chemin haché si aucun ID n’est disponible) pour
chaque point d’entrée.
Ressources supplémentaires
Télémétrie du SDK .NET
Données de télémétrie de l’interface CLI .NET
Des changements cassants peuvent se
produire lors du portage du code
Article • 10/05/2023
Avant de mettre à niveau les versions majeures, consultez la documentation sur les
changements cassants susceptibles de vous affecter.
Types de compatibilité
La compatibilité fait référence à la possibilité de compiler ou d’exécuter du code sur une
implémentation .NET autre que celle avec laquelle le code a été développé à l’origine.
Changements de comportement
Compatibilité binaire
Compatibilité source
Compatibilité au moment du design
Compatibilité descendante
Compatibilité ascendante
Si vous migrez une application de .NET Framework vers .NET Core versions 1.0 à 3.1, les
changements cassants répertoriés dans cet article peuvent vous affecter. Les
modifications de rupture sont regroupées par catégorie, et au sein de ces catégories,
par la version de .NET Core dans laquelle elles ont été introduites.
7 Notes
Cet article n’est pas une liste complète des changements cassants entre le .NET
Framework et .NET Core. Les changements majeurs les plus importants sont ajoutés
ici au fur et à mesure que nous les identifions.
.NET 8
API IDispatchImplAttribute est supprimée
Process.Start vous permet de lancer une application directement, par exemple, avec du
code tel que Process.Start("mspaint.exe") qui lance Paint. Il vous permet également
de lancer indirectement une application associée si ProcessStartInfo.UseShellExecute est
défini sur true . Sur .NET Framework, la valeur par défaut de
ProcessStartInfo.UseShellExecute est true , ce qui signifie que ce code tel que
Process.Start("mytextfile.txt") lance le Bloc-notes, si vous avez associé des fichiers
.txt à cet éditeur. Pour empêcher indirectement le lancement d’une application sur .NET
Framework, vous devez définir explicitement ProcessStartInfo.UseShellExecute sur
false . Sur .NET Core, la valeur par défaut de ProcessStartInfo.UseShellExecute est
false . Cela signifie que, par défaut, les applications associées ne sont pas lancées
ProcessStartInfo.CreateNoWindow
ProcessStartInfo.ErrorDialog
ProcessStartInfo.Verb
ProcessStartInfo.WindowStyle.
Cette modification a été introduite dans .NET Core pour des raisons de performances.
En règle générale, Process.Start est utilisé pour lancer une application directement. Le
lancement d’une application directement n’a pas besoin d’impliquer l’interpréteur de
commandes Windows et d’entraîner le coût de performances associé. Pour accélérer ce
cas par défaut, .NET Core modifie la valeur par défaut de
ProcessStartInfo.UseShellExecute en false . Vous pouvez opter pour le chemin lent si
vous en avez besoin.
Version introduite
2.1
7 Notes
Dans les versions antérieures de .NET Core, UseShellExecute n’a pas été
implémenté pour Windows.
Action recommandée
Catégorie
API affectées
Process.Start
System.Diagnostics.ProcessStartInfo
Version introduite
1.0
Action recommandée
Modifiez toutes les instructions catch pour intercepter une exception
UnauthorizedAccessException au lieu de, ou en plus de ArgumentException, si
nécessaire.
Catégorie
API affectées
FileSystemInfo.Attributes
À compter de .NET Core 1.0, les exceptions d’état de processus endommagé ne peuvent
pas être gérées par du code managé. Le Common Language Runtime ne fournit pas
d’exceptions d’état de processus endommagés au code managé.
Version introduite
1.0
Action recommandée
Évitez d’avoir à gérer les exceptions d’état de processus altéré en traitant plutôt les
situations qui les entraînent. S’il est absolument nécessaire de gérer les exceptions d’état
de processus endommagés, écrivez le gestionnaire d’exceptions en code C ou C++.
Catégorie
Bibliothèques .NET Core
API affectées
System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribut
e
élément legacyCorruptedStateExceptionsPolicy
À compter de .NET Core 1.0, ces propriétés ne précèdent plus les caractères # ou ? à la
valeur stockée si une valeur est déjà présente au début de la chaîne.
Version introduite
1.0
Action recommandée
Vous n’avez plus besoin de supprimer explicitement l’un de ces caractères de début lors
de la définition des valeurs de propriété. Cela est particulièrement utile lorsque vous
ajoutez des valeurs, car vous n’avez plus besoin de supprimer la # de début ou ?
chaque fois que vous ajoutez.
Par exemple, l’extrait de code suivant montre la différence de comportement entre .NET
Framework et .NET Core.
C#
Console.WriteLine(builder.Query);
Catégorie
API affectées
System.UriBuilder.Fragment
System.UriBuilder.Query
À compter de .NET Core 1.0, si vous lisez la propriété Process.StartInfo d’un processus
que vous n’avez pas démarré (c’est-à-dire en appelant Process.Start), une exception
InvalidOperationException est levée.
Version introduite
1.0
Action recommandée
N’accédez pas à la propriété Process.StartInfo pour les processus que votre code n’a pas
démarrés. Par exemple, ne lisez pas cette propriété pour les processus retournés par
Process.GetProcesses.
Catégorie
Bibliothèques .NET Core
API affectées
System.Diagnostics.Process.StartInfo
Cryptographie
Le paramètre booléen de SignedCms.ComputeSignature est respecté
Version introduite
2.1
Action recommandée
Pour vérifier qu’une invite à entrer un PIN s’affiche si nécessaire, les applications de
bureau doivent appeler SignedCms.ComputeSignature(CmsSigner, Boolean) et définir le
paramètre booléen sur false . Le comportement résultant est le même que sur .NET
Framework, peu importe que le contexte silencieux y soit désactivé ou non.
Catégorie
Cryptographie
API affectées
SignedCms.ComputeSignature(CmsSigner, Boolean)
MSBuild
modification du nom du fichier manifeste de ressource
Version introduite
3.0
fichier projet, il est défini par défaut sur le nom du projet. Par exemple, le nom du
manifeste généré pour un fichier de ressources nommé Form1.resx dans le répertoire du
projet racine était MyProject.Form1.resources.
À compter de .NET Core 3.0, si un fichier de ressources est colocalisé avec un fichier
source du même nom (par exemple, Form1.resx et Form1.cs), MSBuild utilise les
informations de type du fichier source pour générer le nom du fichier manifeste dans le
modèle <Namespace>.<ClassName>.resources . L’espace de noms et le nom de classe sont
extraits du premier type dans le fichier source colocalisé. Par exemple, le nom du
manifeste généré pour un fichier de ressources nommé Form1.resx colocalisé avec un
fichier source nommé Form1.cs est MyNamespace.Form1.resources. La principale chose à
noter est que la première partie du nom de fichier est différente des versions antérieures
de .NET Core (MyNamespace au lieu de MyProject).
7 Notes
fichiers de ressources ne sont pas répertoriés explicitement dans un fichier projet .NET
Core. Ils n’ont donc aucune DependentUpon métadonnées pour spécifier comment
nommer le fichier .resources généré .resources. Lorsque
EmbeddedResourceUseDependentUponConvention est défini sur true , qui est la valeur par
Action recommandée
Dans la plupart des cas, aucune action n’est requise de la part du développeur, donc
votre application doit continuer à fonctionner. Toutefois, si cette modification
interrompt votre application, vous pouvez :
XML
<PropertyGroup>
<EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseD
ependentUponConvention>
</PropertyGroup>
Catégorie
MSBuild
API affectées
N/A
Réseautage
WebClient.CancelAsync n’annule pas toujours immédiatement
Cette modification a été implémentée car l’API WebClient est déconseillée en faveur de
HttpClient.
Version introduite
2.0
Action recommandée
Catégorie
Réseautage
API affectées
System.Net.WebClient.CancelAsync()
Windows Forms
La prise en charge de Windows Forms a été ajoutée à .NET Core dans la version 3.0. Si
vous migrez une application Windows Forms de .NET Framework vers .NET Core, les
changements cassants répertoriés ici peuvent affecter votre application.
Contrôles supprimés
Événement CellFormatting non déclenché si l’info-bulle est affichée
Control.DefaultFont a été changé en Segoe UI 9 pt
Modernisation de FolderBrowserDialog
Attribut Serializable supprimé de certains types de Windows Forms
Commutateur de compatibilité AllowUpdateChildControlIndexForTabControls non
pris en charge
Commutateur de compatibilité DomainUpDown.UseLegacyScrolling non pris en
charge
Commutateur de compatibilité DoNotLoadLatestRichEditControl non pris en
charge
Commutateur de compatibilité DoNotSupportSelectAllShortcutInMultilineTextBox
non pris en charge
Commutateur de compatibilité DontSupportReentrantFilterMessage non pris en
charge
Commutateur de compatibilité EnableVisualStyleValidation non pris en charge
Commutateur de compatibilité UseLegacyContextMenuStripSourceControlValue
non pris en charge
Commutateur de compatibilité UseLegacyImages non pris en charge
À propos et les modèles SplashScreen sont rompus pour Visual Basic
Types dans l’espace de noms Microsoft.VisualBasic.ApplicationServices non
disponibles
Types dans l’espace de noms Microsoft.VisualBasic.Devices non disponibles
Types dans l’espace de noms Microsoft.VisualBasic.MyServices non disponibles
Contrôles supprimés
À compter de .NET Core 3.1, certains contrôles Windows Forms ne sont plus disponibles.
À compter de .NET Core 3.1, les différents contrôles Windows Forms ne sont plus
disponibles. Les contrôles de remplacement qui ont une meilleure conception et prise
en charge ont été introduits dans .NET Framework 2.0. Les contrôles déconseillés ont été
précédemment supprimés des boîtes à outils du concepteur, mais ils étaient toujours
disponibles pour être utilisés.
ContextMenu
DataGrid
DataGrid.HitTestType
DataGrid.HitTestInfo
DataGridBoolColumn
DataGridCell
DataGridColumnStyle
DataGridColumnStyle.DataGridColumnHeaderAccessibleObject
DataGridColumnStyle.CompModSwitches
DataGridLineStyle
DataGridParentRowsLabelStyle
DataGridPreferredColumnWidthTypeConverter
DataGridTableStyle
DataGridTextBox
DataGridTextBoxColumn
GridColumnStylesCollection
GridTablesFactory
GridTableStylesCollection
IDataGridEditingService
IMenuEditorService
MainMenu
Menu
Menu.MenuItemCollection
MenuItem
ToolBar
ToolBarAppearance
ToolBarButton
ToolBar.ToolBarButtonCollection
ToolBarButtonClickEventArgs
ToolBarButtonStyle
ToolBarTextAlign
Version introduite
3.1
Action recommandée
Chaque contrôle supprimé a un contrôle de remplacement recommandé. Reportez-vous
au tableau suivant :
ノ Agrandir le tableau
ContextMenu ContextMenuStrip
DataGridParentRowsLabelStyle,
DataGridBoolColumn, DataGridTextBox,
GridColumnStylesCollection,
GridTableStylesCollection, HitTestType
Élément de ToolStripMenuItem
menu
Catégorie
Windows Forms
API affectées
System.Windows.Forms.ContextMenu
System.Windows.Forms.GridColumnStylesCollection
System.Windows.Forms.GridTablesFactory
System.Windows.Forms.GridTableStylesCollection
System.Windows.Forms.IDataGridEditingService
System.Windows.Forms.MainMenu
System.Windows.Forms.Menu
System.Windows.Forms.Menu.MenuItemCollection
System.Windows.Forms.MenuItem
System.Windows.Forms.ToolBar
System.Windows.Forms.ToolBar.ToolBarButtonCollection
System.Windows.Forms.ToolBarAppearance
System.Windows.Forms.ToolBarButton
System.Windows.Forms.ToolBarButtonClickEventArgs
System.Windows.Forms.ToolBarButtonStyle
System.Windows.Forms.ToolBarTextAlign
System.Windows.Forms.DataGrid
System.Windows.Forms.DataGrid.HitTestType
System.Windows.Forms.DataGridBoolColumn
System.Windows.Forms.DataGridCell
System.Windows.Forms.DataGridColumnStyle
System.Windows.Forms.DataGridLineStyle
System.Windows.Forms.DataGridParentRowsLabelStyle
System.Windows.Forms.DataGridPreferredColumnWidthTypeConverter
System.Windows.Forms.DataGridTableStyle
System.Windows.Forms.DataGridTextBox
System.Windows.Forms.DataGridTextBoxColumn
System.Windows.Forms.Design.IMenuEditorService
Avant .NET Core 3.1, une DataGridView dont la propriété ShowCellToolTips était définie
sur true affichait une info-bulle pour le texte et les erreurs d’une cellule lorsque la
cellule était pointée par une souris. Les info-bulles n’étaient pas été affichées lorsqu’une
cellule était été sélectionnée via le clavier (par exemple, à l’aide de la touche Tab, des
touches de raccourci ou de la navigation de direction). Si l’utilisateur a modifié une
cellule, puis, alors que le DataGridView était toujours en mode édition, pointé sur une
cellule qui n’avait pas la propriété ToolTipText définie, un événement de CellFormatting
a été déclenché pour mettre en forme le texte de la cellule à afficher dans la cellule.
Pour répondre aux normes d’accessibilité, à partir de .NET Core 3.1, une DataGridView
dont la propriété ShowCellToolTips était définie sur true affichait les info-bulles pour le
texte et les erreurs d’une cellule non seulement au moment du pointage, mais
également à la sélection via le clavier. En conséquence de cette modification,
l’événement CellFormatting n’est pas déclenché lorsque les cellules dont la propriété
ToolTipText n’est pas définie sont pointées pendant alors que DataGridView est en mode
d’édition. L’événement n’est pas déclenché, car le contenu de la cellule pointée est
affiché sous la forme d’une info-bulle au lieu d’être affiché dans la cellule.
Version introduite
3.1
Action recommandée
Catégorie
Windows Forms
API affectées
Aucun
Cette modification a été apportée pour s’aligner sur les instructions relatives à
l’expérience utilisateur (UX) Windows.
Version introduite
3.0
Action recommandée
En raison de la modification de la taille des formulaires et des contrôles, assurez-vous
que votre application s’affiche correctement.
Pour conserver la police d’origine d’un formulaire unique, définissez sa police par défaut
sur Microsoft Sans Serif 8.25 pt . Par exemple:
C#
public MyForm()
{
InitializeComponent();
Font = new Font(new FontFamily("Microsoft Sans Serif"), 8.25f);
}
Vous pouvez également modifier la police par défaut d’une application entière de l’une
des manières suivantes :
XML
<PropertyGroup>
<ApplicationDefaultFont>Microsoft Sans Serif,
8.25pt</ApplicationDefaultFont>
</PropertyGroup>
En appelant Application.SetDefaultFont(Font).
C#
class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.SetDefaultFont(new Font(new FontFamily("Microsoft
Sans Serif"), 8.25f));
Application.Run(new Form1());
}
}
Catégorie
Windows Forms
API affectées
Aucun.
Modernisation de FolderBrowserDialog
Le contrôle FolderBrowserDialog a changé dans les applications Windows Forms pour
.NET Core.
Dans le .NET Framework, Windows Forms utilise la boîte de dialogue suivante pour le
contrôle FolderBrowserDialog :
Dans .NET Core 3.0, Windows Forms utilise un contrôle COM plus récent introduit dans
Windows Vista :
Version introduite
3.0
Action recommandée
La boîte de dialogue est automatiquement mise à niveau.
C#
Catégorie
Windows Forms
API affectées
FolderBrowserDialog
System.InvariantComparer
System.ComponentModel.Design.ExceptionCollection
System.ComponentModel.Design.Serialization.CodeDomSerializerException
System.ComponentModel.Design.Serialization.CodeDomComponentSerializationServic
e.CodeDomSerializationStore
System.Drawing.Design.ToolboxItem
System.Resources.ResXNullRef
System.Resources.ResXDataNode
System.Resources.ResXFileRef
System.Windows.Forms.Cursor
System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT
System.Windows.Forms.NativeMethods.MSG
Version introduite
3.0
Action recommandée
Mettez à jour tout code qui peut dépendre de ces types marqués comme sérialisables.
Catégorie
Windows Forms
API affectées
Aucun
Commutateur de compatibilité
AllowUpdateChildControlIndexForTabControls non pris
en charge
Le commutateur de compatibilité
Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls est pris en
charge dans Windows Forms sur .NET Framework 4.6 et versions ultérieures, mais il n’est
pas pris en charge sur .NET Core ou .NET 5.0 et versions ultérieures.
Dans .NET Framework 4.6 et versions ultérieures, la sélection d’un onglet réorganise sa
collection de contrôles. Le commutateur de compatibilité
Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls permet à
pris en charge.
Version introduite
3.0
Action recommandée
Supprimez le commutateur. Le commutateur n’est pas pris en charge et aucune autre
fonctionnalité n’est disponible.
Catégorie
Windows Forms
API affectées
Aucun
Commutateur de compatibilité
DomainUpDown.UseLegacyScrolling non pris en charge
Le commutateur de compatibilité
Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling , introduit dans .NET
Framework 4.7.1, n’est pas pris en charge dans Windows Forms sur .NET Core ou .NET
5.0 et versions ultérieures.
Version introduite
3.0
Action recommandée
Supprimez le commutateur. Le commutateur n’est pas pris en charge et aucune autre
fonctionnalité n’est disponible.
Catégorie
Windows Forms
API affectées
DomainUpDown.DownButton()
DomainUpDown.UpButton()
Commutateur de compatibilité
DoNotLoadLatestRichEditControl non pris en charge
Le commutateur de compatibilité Switch.System.Windows.Forms.UseLegacyImages ,
introduit dans .NET Framework 4.7.1, n’est pas pris en charge dans Windows Forms sur
.NET Core ou .NET 5.0 et versions ultérieures.
Version introduite
3.0
Action recommandée
Supprimez le commutateur. Le commutateur n’est pas pris en charge et aucune autre
fonctionnalité n’est disponible.
Catégorie
Windows Forms
API affectées
System.Windows.Forms.RichTextBox
Commutateur de compatibilité
DoNotSupportSelectAllShortcutInMultilineTextBox non
pris en charge
Le commutateur de compatibilité
Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox ,
introduit dans .NET Framework 4.6.1, n’est pas pris en charge dans Windows Forms sur
.NET Core et .NET 5.0 et versions ultérieures.
introduit dans .NET Framework 4.6.1 pour conserver le comportement d’origine. Pour
plus d’informations, consultez TextBox.ProcessCmdKey.
Version introduite
3.0
Action recommandée
Supprimez le commutateur. Le commutateur n’est pas pris en charge et aucune autre
fonctionnalité n’est disponible.
Catégorie
Windows Forms
API affectées
Aucun
Commutateur de compatibilité
DontSupportReentrantFilterMessage non pris en charge
Le commutateur de compatibilité
Switch.System.Windows.Forms.DontSupportReentrantFilterMessage , introduit dans .NET
Framework 4.6.1, n’est pas pris en charge dans Windows Forms sur .NET Core et .NET 5.0
et versions ultérieures.
charge.
Version introduite
3.0
Action recommandée
Supprimez le commutateur. Le commutateur n’est pas pris en charge et aucune autre
fonctionnalité n’est disponible.
Catégorie
Windows Forms
API affectées
Application.FilterMessage
Commutateur de compatibilité
EnableVisualStyleValidation non pris en charge
Le commutateur de compatibilité
Switch.System.Windows.Forms.EnableVisualStyleValidation n’est pas supporté dans
Version introduite
3.0
Action recommandée
Catégorie
Windows Forms
API affectées
Aucun
Commutateur de compatibilité
UseLegacyContextMenuStripSourceControlValue non pris
en charge
Le commutateur de compatibilité
Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue , qui a été
introduit dans .NET Framework 4.7.2, n’est pas pris en charge dans Windows Forms sur
.NET Core ou .NET 5.0 et versions ultérieures.
pris en charge.
Version introduite
3.0
Action recommandée
Catégorie
Windows Forms
API affectées
ContextMenuStrip.SourceControl
d’images possibles dans les scénarios ClickOnce dans des environnements DPI élevés.
Lorsqu’il est défini sur true , le commutateur permet à l’utilisateur de restaurer la mise à
l’échelle d’images héritées sur des écrans haute résolution dont la mise à l’échelle est
définie sur plus de 100%. Pour plus d’informations, consultez les notes de publication de
.NET Framework 4.8 sur GitHub .
Version introduite
3.0
Action recommandée
Supprimez le commutateur. Le commutateur n’est pas pris en charge et aucune autre
fonctionnalité n’est disponible.
Catégorie
Windows Forms
API affectées
Aucun
Version introduite
3.0
.NET Core 3.0 et 3.1 ne contiennent pas de prise en charge complète de Visual Basic My .
Les modèles de formulaires About et SplashScreen dans les applications Visual Studio
pour Visual Basic Windows Forms font référence aux propriétés du type
My.Application.Info qui ne sont pas disponibles.
Action recommandée
La prise en charge de Visual Basic My a été améliorée dans .NET 5, mettez à niveau votre
projet vers .NET 5 ou version ultérieure.
ou
Corrigez les erreurs du compilateur dans les types About et SplashScreen dans votre
application. Utilisez la classe System.Reflection.Assembly pour obtenir les informations
fournies par le type de My.Application.Info . Un port normal des deux formulaires est
disponible ici.
Conseil
Il s’agit d’exemples de code et non optimisé. La liste des attributs doit être mise en
cache pour réduire le temps de chargement du formulaire.
À propos de
VB
Imports System.Reflection
If String.IsNullOrEmpty(applicationTitle) Then
applicationTitle =
System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().G
etName().Name)
End If
End Class
SplashScreen
VB
Imports System.Reflection
'Application title
Dim appTitle As String =
Assembly.GetExecutingAssembly().GetCustomAttribute(Of
AssemblyTitleAttribute)()?.Title
If String.IsNullOrEmpty(appTitle) Then
appTitle =
System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().G
etName().Name)
End If
ApplicationTitle.Text = appTitle
'Format the version information using the text set into the Version
control at design time as the
' formatting string. This allows for effective localization if
desired.
' Build and revision information could be included by using the
following code and changing the
' Version control's designtime text to "Version {0}.{1:00}.{2}.{3}"
or something similar. See
' String.Format() in Help for more information.
'
' Version.Text = System.String.Format(Version.Text,
versionValue.Major, versionValue.Minor, versionValue.Build,
versionValue.Revision)
Version.Text = System.String.Format(Version.Text,
versionValue.Major, versionValue.Minor)
'Copyright info
Copyright.Text =
If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of
AssemblyCopyrightAttribute)()?.Copyright, "")
End Sub
End Class
Catégorie
Visual Basic Windows Forms
API affectées
Aucun
Version introduite
.NET Core 3.0
Les types ont été supprimés pour éviter les dépendances d’assembly inutiles ou les
changements cassants dans les versions suivantes.
Action recommandée
Cet espace de noms a été ajouté dans .NET 5, mettez à niveau votre projet vers .NET 5
ou version ultérieure.
ou
Catégorie
Visual Basic
API affectées
Microsoft.VisualBasic.ApplicationServices
Version introduite
Les types ont été supprimés pour éviter les dépendances d’assembly inutiles ou les
changements cassants dans les versions suivantes.
Action recommandée
Cet espace de noms a été ajouté dans .NET 5, mettez à niveau votre projet vers .NET 5
ou version ultérieure.
ou
Catégorie
Visual Basic
API affectées
Microsoft.VisualBasic.Devices
Version introduite
Les types ont été supprimés pour éviter les dépendances d’assembly inutiles ou les
changements cassants dans les versions suivantes.
Action recommandée
Cet espace de noms a été ajouté dans .NET 5, mettez à niveau votre projet vers .NET 5
ou version ultérieure.
ou
ノ Agrandir le tableau
SpecialDirectoriesProxy Environment.GetFolderPath
Catégorie
Visual Basic
API affectées
Microsoft.VisualBasic.MyServices
Voir aussi
API qui lèvent toujours des exceptions sur .NET Core
Technologies .NET Framework non disponibles sur .NET Core
Analyser vos dépendances pour porter
le code de .NET Framework vers .NET
Article • 09/01/2024
Pour identifier les dépendances tierces non prises en charge dans votre projet, vous
devez d’abord comprendre vos dépendances. Les dépendances externes sont les
packages NuGet ou les fichiers .dll que vous référencez dans votre projet, mais que
vous ne générez pas.
Le portage de votre code vers .NET Standard 2.0 ou inférieur garantit qu’il peut être
utilisé avec .NET Framework et .NET. Toutefois, si vous n’avez pas besoin d’utiliser la
bibliothèque avec .NET Framework, envisagez de cibler la dernière version de .NET.
Tout d’abord, mettez à niveau vos packages vers la dernière version que vous pouvez.
Pour ce faire, utilisez l’interface utilisateur du Gestionnaire de package NuGet dans
Visual Studio. Il est probable que les versions plus récentes de vos dépendances de
package soient déjà compatibles avec .NET Core.
Utiliser nuget.org
Vous pouvez voir les monikers de framework cible pris en charge par chaque package
sur nuget.org , dans la section Dependencies de la page du package spécifique.
Bien qu’il soit plus facile d’utiliser le site pour vérifier la compatibilité, les informations
de dépendances ne sont pas disponibles sur le site de tous les packages.
La méthode la plus facile pour inspecter les dossiers NuGet consiste à utiliser l’outil
NuGet Package Explorer . Après l’avoir installé, effectuez les étapes suivantes pour
afficher les noms de dossiers :
Recherchez un dossier avec des noms à l’aide de l’un des modèles suivants :
netstandardX.Y , netX.Y ou netcoreappX.Y .
Ces valeurs sont les monikers du Framework cible qui correspondent aux versions de
.NET Standard, .NET et .NET Core, qui sont toutes compatibles avec .NET.
) Important
Lorsque vous examinez les monikers de framework cible qu’un package prend en
charge, notez qu’un module moniker de framework cible autre que netstandard*
cible une implémentation spécifique de .NET, telle que .NET 5, .NET Core ou .NET
Framework. À compter de .NET 5, le moniker de framework cible net* (sans
désignation de système d’exploitation) remplace efficacement netstandard*
comme cible portable. Par exemple, net5.0 cible la surface de l’API .NET 5 et est
conviviale multiplateforme, mais net5.0-windows cible la surface de l’API .NET 5
comme implémentée sur le système d’exploitation Windows.
Le mode de compatibilité du .NET Framework a été introduit dans .NET Standard 2.0. Ce
mode de compatibilité permet aux projets .NET Standard et .NET Core de référencer des
bibliothèques .NET Framework. Le référencement de bibliothèques .NET Framework ne
fonctionne pas pour tous les projets, par exemple si la bibliothèque utilise des API WPF
(Windows Presentation Foundation), mais cela débloque de nombreux scénarios de
portage.
Lorsque vous référencez des packages NuGet qui ciblent le .NET Framework dans votre
projet, comme Huitian.PowerCollections , vous obtenez un avertissement de package
de secours (NU1701) similaire à l’exemple suivant :
Cet avertissement s’affiche lorsque vous ajoutez le package et chaque fois que vous
générez une build, pour vous rappeler de tester ce package avec votre projet. Si votre
projet fonctionne comme prévu, vous pouvez supprimer cet avertissement en modifiant
les propriétés du package dans Visual Studio ou en modifiant manuellement le fichier
projet dans votre éditeur de code favori.
puis ajoutez l’attribut NoWarn . L’attribut NoWarn accepte une liste séparée par des
virgules de tous les ID d’avertissement. L’exemple suivant montre comment supprimer
l’avertissement NU1701 pour le package Huitian.PowerCollections en modifiant votre
fichier projet manuellement :
XML
<ItemGroup>
<PackageReference Include="Huitian.PowerCollections" Version="1.0.0"
NoWarn="NU1701" />
</ItemGroup>
Si le projet est open source et hébergé à un endroit comme GitHub, vous pouvez
demander aux développeurs de le modifier.
Vous pouvez contacter l’auteur directement sur nuget.org en recherchant le
package et en cliquant sur Contact Owners sur le côté gauche de la page du
package.
Vous pouvez rechercher un autre package qui s’exécute sur .NET Core et qui réalise
la même tâche que le package que vous utilisez.
Vous pouvez essayer d’écrire vous-même le code qui était exécuté par le package.
Vous pouvez éliminer la dépendance du package en modifiant les fonctionnalités
de votre application, au moins jusqu’à ce qu’une version compatible du package
soit disponible.
N’oubliez pas que les personnes chargées de la maintenance des projets open source et
les éditeurs de packages NuGet sont souvent des bénévoles. Ils offrent leur contribution
car ils s’intéressent à un domaine donné, ils le font gratuitement et ont souvent un autre
travail dans la journée. Pensez-y lorsque vous les contactez pour leur demander de
l’aide sur .NET Core.
Si vous ne parvenez pas à résoudre votre problème avec les options ci-dessus, vous
devrez peut-être porter votre code sur .NET Core à une date ultérieure.
L’équipe .NET aimerait savoir quelles bibliothèques doivent être prioritairement prises
en charge avec .NET Core. Vous pouvez nous envoyer un e-mail à l’adresse
[email protected] afin de nous indiquer les bibliothèques que vous voudriez
utiliser.
Étapes suivantes
Vue d’ensemble du portage de .NET Framework vers .NET
Certains des problèmes courants que l’on peut rencontrer en portant du code de .NET
Framework vers .NET Core sont des dépendances à des API et à des technologies
propres à .NET Framework. Le pack de compatibilité Windows comporte la plupart de ces
technologies, ce qui facilite la création d’applications .NET et de bibliothèques .NET
Standard.
Le pack de compatibilité est une extension logique de .NET Standard 2.0 qui augmente
considérablement l’ensemble d’API. Le code existant est compilé presque sans
modifications. Pour tenir sa promesse d’ensemble d’API que toutes les implémentations
.NET fournissent, .NET Standard n’inclut pas les technologies qui ne peuvent pas
fonctionner sur toutes les plateformes, telles que le Registre, Windows Management
Instrumentation (WMI) ou les API d’émission de réflexion. Le pack de compatibilité
Windows repose sur .NET Standard et permet d’accéder à ces technologies Windows
uniquement. Il est particulièrement utile pour les clients qui veulent passer à .NET, mais
envisagent de rester sur Windows, au moins pour commencer. Dans ce scénario, vous
pouvez utiliser les technologies Windows uniquement pour supprimer l’obstacle à la
migration.
Il fournit environ 20 000 API, dont des API Windows uniquement ainsi des API
multiplateformes des domaines technologiques suivants :
Pages de codes
CodeDom
Configuration
Services d'annuaire
Dessin
ODBC
Autorisations
Ports
Listes de contrôle d’accès Windows
Windows Communication Foundation (WCF)
Chiffrement Windows
Journal des événements Windows
Windows Management Instrumentation (WMI)
Compteurs de performances Windows
Registre Windows
Mise en cache Windows Runtime
services Windows
Bien démarrer
1. Avant le portage, veillez à examiner le processus de portage.
2. Lors du portage du code existant vers .NET ou .NET Standard, installez le package
NuGet Microsoft.Windows.Compatibility .
C#
Plusieurs technologies disponibles pour les bibliothèques .NET Framework ne sont pas
disponibles pour une utilisation avec .NET 6+, telles que les domaines d’application, la
communication à distance et la sécurité d’accès au code (CAS). Si vos bibliothèques
s’appuient sur une ou plusieurs des technologies répertoriées sur cette page, tenez
compte des autres approches mentionnées.
Pour plus d’informations sur la compatibilité des API, consultez Changements cassants
dans .NET.
Domaines d’application
Les domaines d’application (AppDomains) isolent les applications les unes des autres.
Les domaines d’application nécessitent la prise en charge du runtime et sont coûteux en
ressources. La création de domaines d’application supplémentaires n’est pas prise en
charge et il n’existe aucun plan pour ajouter cette fonctionnalité à l’avenir. Pour
l’isolation du code, utilisez des processus ou des conteneurs distincts comme
alternative. Pour charger dynamiquement des assemblys, utilisez la classe
AssemblyLoadContext.
Pour faciliter la migration du code à partir de .NET Framework, .NET 6+ expose une
partie de la surface d’API AppDomain. Certaines des API fonctionnent normalement (par
exemple, AppDomain.UnhandledException), certains membres ne font rien (par
exemple, SetCachePath), et certains d’entre eux lèvent PlatformNotSupportedException
(par exemple, CreateDomain). Vérifiez les types que vous utilisez par rapport à la source
de référence System.AppDomain dans le référentiel GitHub dotnet/runtime . Veillez
à sélectionner la branche qui correspond à votre version implémentée.
Communication à distance
La communication à distance .NET n’est pas prise en charge sur .NET 6+. Le remoting
.NET a été identifié comme architecture problématique. Il est utilisé pour communiquer
entre les domaines d’application, qui ne sont plus pris en charge. Par ailleurs, le
remoting requiert la prise en charge du runtime, dont la maintenance est coûteuse.
Pour simplifier la communication entre les processus, envisagez de mettre en place des
mécanismes de communication interprocessus (IPC) à la place du remoting (par
exemple, la classe System.IO.Pipes ou MemoryMappedFile). Pour les scénarios plus
complexes, le projet open source StreamJsonRpc fournit un framework de remoting
standard .NET multiplateforme qui fonctionne sur des connexions de flux ou de canal
existantes.
Sur plusieurs ordinateurs, utilisez une solution basée sur le réseau comme alternative.
De préférence, utilisez un protocole de texte brut à faible charge, tel que HTTP. Le
serveur web Kestrel, qui est le serveur web utilisé par ASP.NET Core, est une option ici.
Envisagez également d’utiliser System.Net.Sockets pour les scénarios inter-ordinateurs
basés sur le réseau. StreamJsonRpc, mentionné précédemment, peut être utilisé pour la
communication JSON ou binaire (via MessagePack) sur des sockets web.
Pour plus d'options de messagerie, consultez les projets de développement .NET open
source : Messagerie .
Étant donné que la liaison à distance n'est pas prise en charge, les appels à
BeginInvoke() et EndInvoke() sur les objets délégués généreront une
PlatformNotSupportedException . Pour plus d’informations, consultez Migration des
Utilisez les limites de sécurité fournies par le système d’exploitation, telles que la
virtualisation, les conteneurs ou les comptes d’utilisateur, pour exécuter des processus
avec l’ensemble minimal de privilèges.
Transparence de la sécurité
Tout comme la sécurité d’accès du code, la transparence de la sécurité sépare le code
sandbox du code critique de sécurité d’une manière déclarative, mais n’est plus prise en
charge en tant que limite de sécurité. Cette fonctionnalité est fortement utilisée par
Silverlight.
Pour exécuter des processus avec le moins de privilèges, utilisez les limites de sécurité
fournies par le système d’exploitation, telles que la virtualisation, les conteneurs ou les
comptes d’utilisateur.
System.EnterpriseServices
System.EnterpriseServices (COM+) n’est pas pris en charge par .NET 6+.
Workflow Foundation
Windows Workflow Foundation (WF) n’est pas pris en charge dans .NET 6+. Pour obtenir
une alternative, consultez CoreWF .
Conseil
Le serveur Windows Communication Foundation (WCF) peut être utilisé dans .NET
6+ à l’aide des packages NuGet CoreWCF . Pour plus d’informations, consultez
CoreWCF 1.0 a été publié .
ReflectionOnly
RunAndSave
Save
Voir aussi
Vue d’ensemble du portage de .NET Framework vers .NET
Rechercher les API non prises en charge
dans votre code
Article • 10/05/2023
Les API de votre code .NET Framework peuvent ne pas être prises en charge dans .NET
pour de nombreuses raisons. Ces raisons vont de la simple à la correction, telle qu’une
modification d’espace de noms, à la résolution plus difficile, par exemple quand
l’intégralité d’une technologie n’est pas prise en charge. La première étape consiste à
déterminer les API qui ne sont plus prises en charge, puis à identifier le correctif
approprié.
Pour utiliser l’analyseur de portabilité .NET dans Visual Studio, installez lextension à
partir de la place de marché .
Windows Forms
WPF
ASP.NET MVC
Console
bibliothèques de classes ;
Cet outil utilise l’analyseur de portabilité .NET entre autres outils et guide le processus
de migration. Pour plus d’informations sur l’outil, consultez Vue d’ensemble de
l’Assistant Mise à niveau .NET.
API qui lèvent toujours des exceptions
sur .NET Core et .NET 5+
Article • 22/08/2023
Les API suivantes lèveront toujours une exception sur .NET (Core) sur l’ensemble ou un
sous-ensemble des plateformes. Dans la plupart des cas, l’exception levée est
PlatformNotSupportedException.
7 Notes
Cet article n’est pas définitif. Il ne s’agit pas d’une liste complète des API qui
lèvent des exceptions sur .NET 5+.
Cet article n’inclut pas les implémentations d’interface explicites pour la
sérialisation binaire qui lèvent sur .NET 5+. Pour plus d’informations, consultez
Sérialisation binaire dans .NET Core.
Système
Membre Plateformes qui lèvent une
exception
AppDomain.CreateDomain Tous
AppDomain.Unload(AppDomain) Tous
Exception.SerializeObjectState Tous
MarshalByRefObject.GetLifetimeService() Tous
MarshalByRefObject.InitializeLifetimeService() Tous
Membre Plateformes qui lèvent une
exception
OperatingSystem.GetObjectData(SerializationInfo, Tous
StreamingContext)
System.CodeDom.Compiler
Membre Plateformes qui lèvent une exception
CodeDomProvider.CompileAssemblyFromDom Tous
CodeDomProvider.CompileAssemblyFromFile Tous
CodeDomProvider.CompileAssemblyFromSource Tous
System.Collections.Specialized
Membre Plateformes qui lèvent
une exception
NameObjectCollectionBase.GetObjectData(SerializationInfo, Tous
StreamingContext)
NameObjectCollectionBase.OnDeserialization(Object) Tous
System.Configuration
Membre Plateformes qui lèvent
une exception
System.Console
Membre Plateformes qui lèvent une exception
System.Data.Common
Membre Plateformes qui lèvent une
exception
System.Diagnostics.Process
Membre Plateformes qui lèvent une
exception
Process.ProcessorAffinity macOS
System.IO
Membre Plateformes qui lèvent une
exception
FileSystemInfo.GetObjectData(SerializationInfo, Tous
StreamingContext)
System.IO.Pipes
Membre Plateformes qui lèvent une exception
System.Net
Membre Plateformes qui lèvent une
exception
AuthenticationManager.PreAuthenticate(WebRequest, Tous
ICredentials)
FileWebRequest.GetObjectData(SerializationInfo, Tous
StreamingContext)
FileWebResponse.GetObjectData(SerializationInfo, Tous
StreamingContext)
HttpWebRequest.GetObjectData(SerializationInfo, Tous
StreamingContext)
HttpWebResponse.GetObjectData(SerializationInfo, Tous
StreamingContext)
WebProxy.GetDefaultProxy() Tous
WebProxy.GetObjectData Tous
WebResponse.GetObjectData(SerializationInfo, Tous
StreamingContext)
System.Net.NetworkInformation
Membre Plateformes qui lèvent une exception
System.Net.Sockets
Membre Plateformes qui lèvent une exception
Socket(SocketInformation) Tous
Socket.DuplicateAndClose(Int32) Tous
System.Net.WebSockets
Membre Plateformes qui lèvent une exception
WebSocket.RegisterPrefixes() Tous
System.Reflection
Membre Plateformes qui lèvent une
exception
Assembly.CodeBase Tous
Assembly.EscapedCodeBase Tous
Assembly.ReflectionOnlyLoad Tous
Assembly.ReflectionOnlyLoadFrom(String) Tous
AssemblyName.GetObjectData(SerializationInfo, Tous
StreamingContext)
AssemblyName.KeyPair Tous
Membre Plateformes qui lèvent une
exception
AssemblyName.OnDeserialization(Object) Tous
StrongNameKeyPair Tous
StrongNameKeyPair.PublicKey Tous
System.Runtime.CompilerServices
Membre Plateformes qui lèvent une exception
DebugInfoGenerator.CreatePdbGenerator() Tous
System.Runtime.InteropServices
Membre Plateformes qui lèvent une
exception
IDispatchImplAttribute Tous
Marshal.GetIDispatchForObject(Object) Tous
RuntimeEnvironment.SystemConfigurationFile Tous
RuntimeEnvironment.GetRuntimeInterfaceAsIntPtr(Guid, Tous
Guid)
RuntimeEnvironment.GetRuntimeInterfaceAsObject(Guid, Tous
Guid)
System.Runtime.Serialization
Membre Plateformes
qui lèvent
une
exception
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Tous
Object)*
BinaryFormatter.Deserialize(Stream)* Tous
XsdDataContractExporter.Schemas Toutes
* .NET 8 et versions ultérieures uniquement pour tous les types de projets, à l’exception
de Windows Forms et WPF.
System.Security
Membre Plateformes qui lèvent une
exception
CodeAccessPermission.Deny() Tous
CodeAccessPermission.PermitOnly() Tous
PermissionSet.Deny() Tous
PermissionSet.PermitOnly() Tous
SecurityContext.Capture() Tous
SecurityContext.CreateCopy() Tous
SecurityContext.Dispose() Tous
SecurityContext.IsFlowSuppressed() Tous
SecurityContext.IsWindowsIdentityFlowSuppressed() Tous
SecurityContext.RestoreFlow() Tous
SecurityContext.SuppressFlow() Tous
SecurityContext.SuppressFlowWindowsIdentity() Tous
System.Security.Claims
Membre Plateformes qui lèvent une
exception
ClaimsPrincipal.GetObjectData(SerializationInfo, Tous
StreamingContext)
ClaimsIdentity(SerializationInfo) Tous
ClaimsIdentity.GetObjectData(SerializationInfo, Tous
StreamingContext)
System.Security.Cryptography
Membre Plateformes qui
lèvent une
exception
AsymmetricAlgorithm.Create(String) Tous
CryptoConfig.EncodeOID(String) Tous
ECDiffieHellmanCng.ToXmlString(ECKeyXmlFormat) Tous
ECDiffieHellmanCngPublicKey.FromXmlString(String) Tous
ECDiffieHellmanCngPublicKey.ToXmlString() Tous
ECDiffieHellmanPublicKey.ToXmlString() Tous
ECDsaCng.ToXmlString(ECKeyXmlFormat) Tous
HashAlgorithm.Create() Tous
HMAC.Create() Tous
HMAC.Create(String) Tous
HMAC.HashCore Tous
HMAC.HashFinal Tous
HMAC.Initialize Tous
KeyedHashAlgorithm.Create() Tous
KeyedHashAlgorithm.Create(String) Tous
System.Security.Cryptography.RSACryptoServiceProvider.DecryptValue(Byte[]) Tous
System.Security.Cryptography.RSACryptoServiceProvider.EncryptValue(Byte[]) Tous
System.Security.Cryptography.RSA.DecryptValue(Byte[]) Tous
System.Security.Cryptography.RSA.EncryptValue(Byte[]) Tous
RSA.FromXmlString Tous
RSA.ToXmlString Tous
SymmetricAlgorithm.Create() Tous
SymmetricAlgorithm.Create(String) Tous
System.Security.Cryptography.Pkcs
Membre Plateformes qui lèvent une exception
CmsSigner(CspParameters) Tous
SignerInfo.ComputeCounterSignature() Tous
System.Security.Cryptography.X509Certificates
Membre Plateformes qui lèvent une exception
X509Certificate.Import Tous
System.Security.Authentication.ExtendedProtection
Membre Plateformes qui lèvent une
exception
ExtendedProtectionPolicy(SerializationInfo, Tous
StreamingContext)
System.Security.Policy
Membre Plateformes qui lèvent une
exception
Hash.GetObjectData(SerializationInfo, Tous
StreamingContext)
System.ServiceProcess.ServiceController
Membre Plateformes qui lèvent une exception
System.Text.RegularExpressions
Membre Plateformes qui lèvent une exception
Regex.CompileToAssembly Tous
System.Threading
Membre Plateformes qui lèvent une
exception
CompressedStack.GetObjectData(SerializationInfo, Tous
StreamingContext)
ExecutionContext.GetObjectData(SerializationInfo, Tous
StreamingContext)
Thread.Abort Tous
Thread.ResetAbort() Tous
Thread.Resume() Tous
Membre Plateformes qui lèvent une
exception
Thread.Suspend() Tous
System.Xml
Membre Plateformes qui
lèvent une
exception
Voir aussi
Changements cassants pour la migration de .NET Framework vers .NET Core
Sérialisation binaire dans .NET Core
Analyseur de portabilité .NET
Conditions préalables au portage du
code
Article • 10/05/2023
Apportez les modifications nécessaires pour générer et exécuter une application .NET
avant de commencer le travail de portage de votre code. Ces modifications peuvent être
effectuées tout en créant et exécutant une application .NET Framework.
Pour chacun de vos projets que vous voulez porter, procédez comme suit dans Visual
Studio :
Vos projets ciblent maintenant .NET Framework 4.7.2. Utilisez cette version de .NET
Framework comme base pour le portage du code.
Étapes suivantes
Créer un plan de portage
Créer un plan de portage
Article • 21/03/2023
Nous recommandons d’utiliser l’Assistant Mise à niveau de .NET de Visual Studio pour
mettre à jour le code .NET Framework vers les dernières versions de .NET. Pour plus
d’informations, consultez le blog Mise à niveau de vos projets .NET avec Visual Studio .
7 Notes
Avant de passer directement au code, prenez le temps d’effectuer les étapes de pré-
migration recommandées. Cet article vous donne un aperçu des types de problèmes
potentiels et vous aide à opter pour l’approche la plus logique.
1. Si vous le souhaitez, exécutez ApiPort sur votre projet. Si vous exécutez ApiPort,
prenez connaissance du rapport sur les problèmes que vous devrez résoudre.
2. Copiez tout votre code dans un nouveau projet .NET.
3. Pendant que vous vous référez au rapport de portabilité (s’il a été généré), résolvez
les erreurs du compilateur jusqu’à ce que le projet se compile intégralement.
Bien qu’elle ne soit pas structurée, cette approche axée sur le code résout souvent
rapidement les problèmes. Un projet contenant uniquement des modèles de données
pourrait constituer un candidat idéal à cette approche.
Rester sur .NET Framework jusqu’à la résolution des
problèmes de portabilité
Cette approche est peut-être la meilleure si vous préférez avoir du code compilable
pendant tout le processus. L’approche est la suivante :
Cette approche prudente est plus structurée que celle qui consiste à résoudre
simplement les erreurs de compilation, mais elle reste relativement centrée sur le code
et présente l’avantage de toujours conserver du code compilable. Les moyens de
résoudre les problèmes qui n’ont pas pu être traités en utilisant simplement une autre
API peuvent varier considérablement. Il peut être nécessaire de développer un plan plus
complet pour certains projets, ce qui est couvert par l’approche suivante.
2. Déterminez les endroits où chaque type non portable est utilisé et l’impact sur la
portabilité globale.
3. Si vous avez des assemblys difficiles à porter, est-il intéressant de les laisser sur le
.NET Framework pour l’instant ? Voici quelques possibilités d’opérations à prendre
en considération :
4. Est-il raisonnable d’écrire votre propre implémentation d’une API .NET Framework
non disponible ?
La phase d’analyse peut prendre un certain temps, selon la taille de votre code base.
Passer du temps sur cette phase pour déterminer précisément l’étendue des
modifications nécessaires et pour développer un plan fait en général gagner du temps
finalement, en particulier en cas de codebase complexe.
Votre plan peut impliquer des modifications importantes de votre codebase tout en
continuant à cibler .NET Framework 4.7.2. Cela en fait une version plus structurée de
l’approche précédente. La mise en œuvre du plan dépend du code base.
Approche mixte
Il est probable que vous allez combiner les approches ci-dessus de façon différente
selon les projets. Faites ce qui a le plus de sens pour vous et pour votre codebase.
Porter vos tests
La meilleure façon de vérifier que tout fonctionne quand vous avez porté votre code est
de tester votre code quand vous l’avez porté sur .NET. Pour cela, vous devez utiliser une
infrastructure de test qui génère et exécute des tests pour .NET. Vous avez actuellement
trois options :
xUnit
Prise en main
Outil pour convertir un projet MSTest en xUnit
NUnit
Prise en main
Billet de blog sur la migration de MSTest vers NUnit
MSTest
Approche recommandée
En définitive, le travail de portage dépend fortement de la structuration du code .NET
Framework. Il est recommandé de commencer par la base de la bibliothèque, qui
représente la composante essentielle du code. Il peut s’agir de modèles de données ou
d’autres classes et méthodes fondamentales utilisées directement ou indirectement par
tout le reste.
Si vous commencez par la base de votre bibliothèque et que vous vous déplacez vers
l’extérieur en testant chaque couche au fur et à mesure, le portage devient un processus
systématique où les problèmes sont isolés sur une seule couche de code à la fois.
Étapes suivantes
Vue d’ensemble de l’Assistant Mise à niveau de .NET
Organiser votre projet pour prendre en charge à la fois le .NET Framework et .NET
Core
Organiser votre projet pour prendre en
charge .NET Framework et .NET
Article • 10/05/2023
Vous pouvez créer une solution qui se compile parallèlement pour .NET Framework et
.NET. Cet article décrit plusieurs options d’organisation de projet pour vous aider à
atteindre cet objectif. Voici quelques scénarios classiques à prendre en compte quand
vous devez décider comment configurer la disposition de votre projet avec .NET. La liste
peut ne pas couvrir tout ce que vous voulez.
Avantages :
Simplifie votre processus de génération en compilant un seul projet au lieu de
plusieurs, chacun ciblant une version de .NET Framework ou une plateforme
différente.
Simplifie la gestion des fichiers sources pour les projets multiciblés, car vous
devez gérer un seul fichier projet. Lors de l’ajout ou de la suppression de fichiers
sources, les alternatives vous obligent à synchroniser manuellement ces fichiers
avec vos autres projets.
Générez facilement un package NuGet à consommer.
Vous permet d’écrire du code pour une version spécifique de .NET Framework à
l’aide de directives du compilateur.
Inconvénient :
nécessite que les développeurs utilisent Visual Studio 2019 ou une version
ultérieure pour ouvrir des projets existants. Pour prendre en charge les versions
antérieures de Visual Studio, conserver vos fichiers projet dans des dossiers
différents est une meilleure option.
Avantages :
Prend en charge le développement sur des projets existants pour les
développeurs et les contributeurs qui n’ont peut-être pas Visual Studio 2019 ou
une version ultérieure.
Réduit le risque de création de bogues dans des projets existants car aucune
évolution du code n’est nécessaire dans ces projets.
Le projet .NET et les projets existants sont conservés dans des dossiers distincts.
Conserver les projets dans des dossiers distincts vous évite de devoir disposer de Visual
Studio 2019 ou d’une version ultérieure. Vous pouvez créer une solution distincte qui
ouvre seulement les anciens projets.
Voir aussi
Documentation sur le portage .NET
Migrer du .NET Framework Windows
Forms vers .NET
Article • 03/12/2024
Cet article explique comment mettre à niveau une application de bureau Windows
Forms vers .NET à l’aide de l’Assistant Mise à niveau .NET. Windows Forms reste une
infrastructure Windows uniquement, même si .NET est une technologie multiplateforme.
Prérequis
Système d’exploitation Windows.
Téléchargez et extrayez l’application de démonstration utilisée avec cet article.
Visual Studio 2022 version 17.12 ou ultérieure pour cibler .NET 9.
Extension De l’Assistant Mise à niveau .NET pour Visual Studio.
Évaluation
Vous devez analyser vos projets avant d’effectuer une mise à niveau. L’exécution d’une
analyse du code sur vos projets avec l’Assistant Mise à niveau .NET génère un rapport
auquel vous pouvez vous référer pour identifier les bloqueurs de migration potentiels.
Pour analyser vos projets et générer un rapport, cliquez avec le bouton droit sur le
fichier solution dans Explorateur de solutions, puis sélectionnez Mettre à niveau. Pour
plus d’informations sur l’exécution d’une analyse, consultez Analyser des projets avec
l’Assistant Mise à niveau .NET.
Conseil
Veillez à disposer d’une sauvegarde de votre code, par exemple dans le contrôle de
code source ou une copie.
Procédez comme suit pour mettre à niveau un projet dans Visual Studio :
Un nouvel onglet est ouvert qui vous invite à choisir la mise à niveau que vous
souhaitez effectuer.
4. Une arborescence s’affiche avec tous les artefacts liés au projet, tels que les fichiers
de code et les bibliothèques. Vous pouvez mettre à niveau des artefacts individuels
ou l’ensemble du projet, qui est la valeur par défaut. Sélectionnez Mettre à niveau
la sélection pour démarrer la mise à niveau.
Il ne respecte pas également l’utilisation des extensions utilisées dans les My projets
.NET Framework, tels que My.Computer et My.User . Ces extensions ont été supprimées
dans .NET. En raison de ces deux problèmes, une bibliothèque Visual Basic ne sera pas
compilée après la migration avec l’Assistant Mise à niveau .NET.
Pour résoudre ce problème, le projet doit cibler Windows et référencer Windows Forms.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<OutputType>Library</OutputType>
<MyType>Windows</MyType>
Une fois la mise à niveau terminée, les résultats sont affichés. Notez comment le projet
Windows Forms a un symbole d’avertissement. Développez cet élément et plus
d’informations s’affichent à propos de cette étape :
Notez que le composant de mise à niveau du projet mentionne que la police par défaut
a changé. Étant donné que la police peut affecter la disposition du contrôle, vous devez
vérifier chaque formulaire et contrôle personnalisé dans votre projet pour vous assurer
que l’interface utilisateur est correctement organisée.
Si votre application a rencontré des erreurs, vous pouvez les trouver dans la fenêtre
Liste d’erreurs avec une recommandation pour les corriger.
L’exemple de projet de jeu correspondant Windows Forms est désormais mis à niveau
vers .NET 9.
Le guide de portage fournit une vue d’ensemble de ce que vous devez prendre en
compte lors du portage de votre code à partir de .NET Framework vers .NET. La
complexité de vos projets détermine la quantité de travail que vous allez effectuer
après la migration initiale des fichiers projet.
Le monde de .NET a beaucoup changé depuis .NET Framework. Ce lien fournit des
informations sur la modernisation de votre application après la mise à niveau.
Mise à niveau d’une application de
bureau WPF vers .NET 8
Article • 05/11/2024
Cet article explique comment mettre à niveau une application de bureau Windows
Presentation Foundation (WPF) vers .NET 8. Même si WPF s’exécute sur .NET, une
technologie multiplateforme, WPF est toujours un framework Windows uniquement. Les
types de projets wpF suivants peuvent être mis à niveau avec l’Assistant Mise à niveau
.NET :
Projet WPF
Bibliothèque de contrôles
Bibliothèque .NET
Si vous effectuez une mise à niveau de .NET Framework vers .NET, examinez l’article
Différences avec WPF .NET et le guide de portage de .NET Framework vers .NET .
Prérequis
Système d’exploitation Windows
Visual Studio 2022 version 17.7 ou ultérieure pour cibler .NET 8
Visual Studio 2022 version 17.1 ou ultérieure pour cibler .NET 7
Extension Assistant Mise à niveau .NET pour Visual Studio
Application de démonstration
Cet article a été écrit dans le contexte de la mise à niveau de l’exemple de projet Favoris
web, que vous pouvez télécharger à partir du dépôt GitHub d’exemples .NET.
Conseil
Veillez à disposer d’une sauvegarde de votre code, par exemple dans le contrôle de
code source ou une copie.
Procédez comme suit pour mettre à niveau un projet dans Visual Studio :
Un nouvel onglet est ouvert qui vous invite à choisir la façon dont vous souhaitez
que la mise à niveau soit effectuée.
4. Une arborescence s’affiche avec tous les artefacts liés au projet, tels que les fichiers
de code et les bibliothèques. Vous pouvez mettre à niveau des artefacts individuels
ou l’ensemble du projet, qui est la valeur par défaut. Sélectionnez Mettre à niveau
la sélection pour démarrer la mise à niveau.
Une fois la mise à niveau terminée, les résultats sont affichés. Si un élément a un
symbole d’avertissement, cela signifie qu’il existe une note à lire, que vous pouvez faire
en développant l’élément.
Si votre application a rencontré des erreurs, vous pouvez les trouver dans la fenêtre
Liste d’erreurs avec une recommandation pour les corriger.
L’Assistant Mise à niveau .NET a mis à niveau certains packages vers de nouvelles
versions. Avec l’exemple d’application fourni dans cet article, le
Microsoft.Data.Sqlite package NuGet a été mis à niveau de 1.0.0 à 8.0.x.
Toutefois, la version 1.0.0 dépend du SQLite package NuGet, mais la version 8.0.x
supprime cette dépendance. Le SQLite package NuGet est toujours référencé par
le projet, même s’il n’est plus nécessaire. Les SQLite packages NuGet et
SQLite.Native NuGet peuvent être supprimés du projet.
Les API et les bibliothèques ont changé un peu depuis la publication de .NET. Dans
la plupart des cas, .NET Framework n’a pas accès à ces améliorations. En effectuant
une mise à niveau vers .NET, vous avez désormais accès à des bibliothèques plus
modernes.
Les sections suivantes décrivent les zones que vous moderniserez l’exemple
d’application utilisé par cet article.
XAML
<mah:MetroWindow x:Class="WebSiteRatings.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-
compatibility/2006"
xmlns:mah="clr-
namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:local="clr-namespace:WebSiteRatings"
xmlns:vm="clr-namespace:WebSiteRatings.ViewModels"
xmlns:VoteControl="clr-
namespace:StarVoteControl;assembly=StarVoteControl"
xmlns:wpfControls="clr-
namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2
.Wpf"
Loaded="MetroWindow_Loaded"
mc:Ignorable="d"
Title="My Sites" Height="650" Width="1000">
XAML
un valide Uri. Ce code était précédemment passé dans l’URL du site Web sous la
forme d’une chaîne, mais le WebView2 contrôle nécessite un Uri .
C#
if (siteCollection.SelectedSite != null)
browser.Source = new Uri(siteCollection.SelectedSite.Url);
else
browser.NavigateToString("<body></body>");
}
Selon la version de Windows qu’un utilisateur de votre application exécute, il peut avoir
besoin d’installer le runtime WebView2. Pour plus d’informations, consultez Démarrage
de WebView2 dans les applications WPF.
Moderniser : appsettings.json
.NET Framework utilise le fichier App.config pour charger les paramètres de votre
application, tels que les chaînes de connexion et les fournisseurs de journalisation. .NET
utilise désormais le fichier appsettings.json pour les paramètres de l’application. Les
fichiers App.config sont pris en charge dans .NET via le
System.Configuration.ConfigurationManager package NuGet, et la prise en charge de
À mesure que d’autres bibliothèques sont mises à niveau vers .NET, elles se modernisent
en prenant en charge appsettings.json au lieu de App.config. Par exemple, les
fournisseurs de journalisation dans .NET Framework qui ont été mis à niveau pour
.NET 6+ n’utilisent plus App.config pour les paramètres. Il est bon de suivre leur direction
et de s’éloigner de l’utilisation d’App.config où vous pouvez.
XML
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
JSON
{
"ConnectionStrings": {
"database": "DataSource=sqlite.db;"
}
}
C#
using System.Windows;
using Microsoft.Extensions.Configuration;
namespace WebSiteRatings
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
public static IConfiguration Config { get; private set; }
public App()
{
Config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
}
}
}
C#
using Microsoft.Data.Sqlite;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;
namespace WebSiteRatings.Models
{
internal class Database
{
public static SqliteConnection OpenConnection() =>
new
SqliteConnection(App.Config.GetConnectionString("database"));
À compter de Visual Studio 2019, les projets C++/CLI peuvent cibler .NET. Cette prise en
charge permet de déplacer des applications de bureau Windows avec des couches
d’interopérabilité C++/CLI à partir de .NET Framework vers .NET. Cet article explique
comment déplacer des projets C++/CLI de .NET Framework vers .NET.
La compilation d’un projet C++/CLI sur un exécutable n’est pas prise en charge.
Vous devez compiler une DLL.
La prise en charge de C++/CLI pour .NET est réservée à Windows uniquement.
Les projets C++/CLI ne peuvent pas cibler .NET Standard.
Les projets C++/CLI ne prennent pas en charge le format de fichier projet plus
récent de style kit de développement logiciel (SDK). Au lieu de cela, les projets
C++/CLI utilisent le même format de fichier .vcxproj que les autres projets C++
Visual Studio.
Les projets C++/CLI ne peuvent pas cibler plusieurs plateformes .NET. Si vous
devez générer un projet C++/CLI pour .NET Framework et .NET, utilisez des fichiers
projet distincts.
.NET ne prend pas en charge la compilation de -clr:pure ou -clr:safe , seule
l’option -clr:netcore la plus récente (qui équivaut à -clr pour .NET Framework).
la valeur.
3. Supprimez les références .NET Framework à System , System.Data ,
System.Windows.Forms et System.Xml , telles que <Reference Include="System" /> .
Pour utiliser les API Windows Forms, ajoutez cette référence au fichier .vcxproj :
XML
Pour utiliser les API WPF, ajoutez cette référence au fichier .vcxproj :
XML
Pour utiliser les API Windows Forms et WPF, ajoutez cette référence au fichier .vcxproj :
XML
JSON
{
"runtimeOptions": {
"tfm": "net8.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
}
}
}
7 Notes
Les assemblys C++/CLI qui ciblent .NET 7 ou une version ultérieure sont toujours
chargés dans le AssemblyLoadContext par défaut. Toutefois, dans .NET 6 et
versions antérieures, les assemblies C++/CLI peuvent être chargés plusieurs fois,
chaque fois dans un nouveau AssemblyLoadContext . Si le code managé d’un
assembly C++/CLI est exécuté la première fois :
Dans cet article, vous allez découvrir différentes façons de moderniser votre application
après sa mise à niveau de .NET Framework vers .NET. Utilisez l’outil assistant de mise à
niveau .NET pour mettre à niveau votre application vers .NET.
API manquantes
Lors de la mise à niveau d’une application .NET Framework, vous aurez probablement
des incompatibilités. Cela est dû au fait que .NET Framework est une technologie
Windows uniquement et .NET est une technologie multiplateforme. Certaines
bibliothèques ne le sont pas ainsi. Par exemple, .NET ne fournit pas d’API prêtes à
l’emploi pour accéder au Registre Windows comme .NET Framework. La prise en charge
du Registre Windows est fournie par le package NuGet Microsoft.Win32.Registry . De
nombreuses bibliothèques spécifiques au .NET Framework ont été transférées vers .NET
ou .NET Standard et sont hébergées sur NuGet. Si vous trouvez une référence
manquante dans votre projet, recherchez NuGet.
App.config
.NET Framework utilise le fichier App.config pour charger les paramètres de votre
application, tels que les chaînes de connexion et la configuration du fournisseur de
journalisation. Le fichier .NET moderne utilise le fichier appsettings.json pour les
paramètres de l’application. La version CLI de l’Assistant Mise à niveau gère la
conversion de fichiers App.config en appsettings.json, mais l’extension Visual Studio ne le
fait pas.
Conseil
À mesure que les bibliothèques sont mises à niveau vers .NET, elles se modernisent en
prenant en charge appsettings.json au lieu de App.config. Par exemple, les fournisseurs
de journalisation dans .NET Framework qui ont été mis à niveau pour .NET 6+ n’utilisent
plus App.config pour les paramètres. C’est bon pour vous de suivre leur direction et de
s’éloigner de l’utilisation de App.config.
Procédez comme suit pour utiliser le fichier appsettings.json en tant que fournisseur de
configuration :
C#
using Microsoft.Extensions.Configuration;
6. Mettez à jour le reste de votre code pour utiliser les nouvelles API de
configuration.
U Attention