Partage via


Analyseur de portabilité .NET

Important

Le port d’API a été déconseillé en faveur de l’analyse binaire avec l’outil Assistant Mise à niveau .NET. Le service backend du port API a été fermé. Pour utiliser l’outil, vous devrez l’utiliser hors connexion. Pour plus d’informations, consultez README du port API .NET.

Vous voulez que vos bibliothèques prennent en charge plusieurs plateformes ? Vous souhaitez voir combien de travail est nécessaire pour que votre application .NET Framework s’exécute sur .NET Core ? L’analyseur de portabilité .NET est un outil qui analyse les assemblys et fournit un rapport détaillé sur les API .NET manquantes pour que les applications ou bibliothèques soient portables sur vos plateformes .NET ciblées spécifiées. L’Analyseur de portabilité est une application console qui analyse les assemblys par fichiers ou répertoires spécifiés.

Une fois que vous avez converti votre projet pour cibler la nouvelle plateforme, comme .NET Core, vous pouvez utiliser l’analyseur de compatibilité de plateforme basé sur Roslyn pour identifier les API qui lèvent des exceptions PlatformNotSupportedException et d’autres problèmes de compatibilité.

Cibles courantes

  • .NET: a une conception modulaire, prend en charge l’installation côte à côte et cible des scénarios multiplateformes. L’installation côte à côte vous permet d’adopter de nouvelles versions de .NET sans interrompre d’autres applications. Si votre objectif est de porter votre application vers .NET et de prendre en charge plusieurs plateformes, il s’agit de la cible recommandée.
  • ;NET Standard : Inclut les API .NET Standard disponibles sur toutes les implémentations de .NET.
  • ASP.NET Core: infrastructure web moderne basée sur .NET. Si votre objectif est de porter votre application web vers .NET (Core) pour prendre en charge plusieurs plateformes, il s’agit de la cible recommandée.
  • .NET + Extensions de plateforme: inclut les API .NET en plus du pack de compatibilité Windows, qui fournit de nombreuses technologies .NET Framework spécifiques à Windows.
  • .NET Standard + Extensions de plateforme: inclut les API .NET Standard en plus du pack de compatibilité Windows, qui fournit de nombreuses technologies .NET Framework spécifiques à Windows.

Comment utiliser l’Analyseur de portabilité .NET

Pour commencer à utiliser l’analyseur de portabilité .NET dans Visual Studio, vous devez d’abord cloner et générer le projet dotnet-apiport. Il fonctionne sur les versions Visual Studio 2017 et Visual Studio 2019.

Important

L’analyseur de portabilité .NET n’est pas pris en charge dans Visual Studio 2022.

Vue à l’échelle de la solution

Une étape utile de l’analyse d’une solution avec de nombreux projets consiste à visualiser les dépendances pour comprendre quel sous-ensemble d’assemblys dépend de ce qui. La recommandation générale est d’appliquer les résultats de l’analyse dans une approche ascendante en commençant par les nœuds terminaux dans un graphique des dépendances.

Pour le récupérer, exécutez la commande suivante :

ApiPort.exe analyze -r DGML -f [directory or file]

Le résultat ressemble à ce qui suit lors de l’ouverture dans Visual Studio :

Capture d’écran de l’analyse DGML.

Analyser la portabilité

Entrez la commande suivante pour analyser le répertoire actif :

ApiPort.exe analyze -f .

Pour analyser une liste spécifique de fichiers .dll, entrez la commande suivante :

ApiPort.exe analyze -f first.dll -f second.dll -f third.dll

Pour cibler une version spécifique, utilisez le paramètre -t :

ApiPort.exe analyze -t ".NET, Version=5.0" -f .

Exécuter ApiPort.exe -? pour obtenir plus d’aide.

Il est recommandé d’inclure tous les fichiers .exe et .dll associés dont vous êtes propriétaire et que vous souhaitez porter, et d’exclure les fichiers dont dépend votre application, mais dont vous n’êtes pas propriétaire et que vous ne pouvez pas porter. Vous obtiendrez ainsi le rapport de portabilité le plus pertinent possible.

Consulter et interpréter les résultats de portabilité

Seules les API qui ne sont pas prises en charge par une plateforme cible apparaissent dans le rapport. Votre rapport de portabilité .NET est enregistré sous la forme d’un fichier au format que vous avez spécifié. Le format par défaut est un fichier Excel (.xlsx) dans votre répertoire actuel.

Synthèse de la portabilité

Capture d’écran du résumé de la portabilité.

La section sur la synthèse de la portabilité du rapport montre le pourcentage de portabilité de chaque assembly inclus lors de l’exécution. Dans l’exemple précédent, 71,24 % des API .NET Framework utilisées dans l’application svcutil sont disponibles dans .NET Core + Extensions de plateforme. Si vous exécutez l’outil Analyseur de portabilité .NET sur plusieurs assemblys, chaque assembly doit avoir une ligne dans le rapport de synthèse de la portabilité.

Détails

Capture d’écran des détails de la portabilité.

La section des détails du rapport liste les API manquantes de l’une des plateformes cibles sélectionnées.

  • Type de cible : le type a une API absente sur une plateforme cible.
  • Membre cible : la méthode est manquante dans une plateforme cible.
  • Nom de l’assembly : assembly .NET Framework dans lequel réside l’API manquante.
  • Chacune des plateformes cibles sélectionnées correspond à une colonne, telle que « .NET Core » : la valeur « Non pris en charge » signifie que l’API n’est pas prise en charge sur cette plateforme cible.
  • Changements recommandés : API ou technologie de remplacement recommandée. Actuellement, ce champ est vide ou obsolète pour un grand nombre d’API. En raison du grand nombre d’API, il s’agit d’un défi important pour le maintenir à jour.

Assemblys manquants

Capture d’écran des assemblys manquants.

Il est possible que vous trouviez une section sur les assemblys manquants dans votre rapport. Cette section contient une liste d’assemblys qui sont référencés par vos assemblys analysés et qui n’ont pas été analysés. Si c’est un assembly qui vous appartient, incluez-le dans l’exécution de l’Analyseur de portabilité d’API afin d’obtenir un rapport de portabilité détaillé au niveau de l’API. S’il s’agit d’une bibliothèque tierce, vérifiez si une version plus récente prend en charge votre plateforme cible et envisagez de passer à la version la plus récente. Au final, vous devriez obtenir une liste qui inclut tous les assemblys tiers dont dépend votre application et qui confirme qu’ils ont une version prenant en charge votre plateforme cible.

Voir aussi

Pour plus d’informations sur l’analyseur de portabilité .NET, consultez la documentation GitHub.