Partage via


Codes d’erreur de validation de package/d’assembly

Cet article de référence répertorie tous les codes d’erreur générés par la validation de package et d’assembly.

Liste des codes d’erreur

ID de diagnostic Description Action recommandée
PKV001 Il manque une ressource de compilation pour un framework compatible. Ajoutez le framework cible approprié au projet.
PKV002 Il manque une ressource d’exécution pour un framework et un runtime compatibles. Ajoutez au package la ressource appropriée pour le runtime correspondant.
PKV003 Il manque une ressource indépendante de l’exécution pour un framework compatible. Ajoutez au projet le framework cible indépendant de l’exécution approprié.
PKV004 Il manque une ressource d’exécution compatible pour une ressource de compilation. Ajoutez la ressource d’exécution appropriée au package.
PKV005 Il manque une ressource d’exécution compatible pour une ressource de compilation et un identificateur de runtime pris en charge. Ajoutez la ressource d’exécution appropriée au package.
PKV006 Le framework cible est supprimé dans la dernière version. Ajoutez le framework cible approprié au projet.
PKV007 La paire d’identificateurs de framework cible et d’exécution est supprimée dans la dernière version. Ajoutez le framework cible et le RID appropriés au projet.
CP0001 Un type, une énumération, un enregistrement ou un struct visible en dehors de l’assembly est manquant dans l’assembly comparé alors qu’il doit obligatoirement être présent. Ajoutez le type manquant à l’assembly où il est manquant.
CP0002 Un membre visible en dehors de l’assembly est manquant dans l’assembly comparé alors qu’il doit obligatoirement être présent. Ajoutez le membre manquant à l’assembly où il est manquant.
CP0003 Une partie de l’identité d’assembly (nom, jeton de clé publique, culture, attribut reciblable ou version) ne correspond pas des deux côtés de la comparaison. Mettez à jour l’identité d’assembly afin que les deux côtés correspondent.
CP0004 Aucun assembly correspondant n’a été trouvé sur un côté de la comparaison lors de la création du mappage d’assembly. Assurez-vous que l’assembly manquant est ajouté au package.
CP0005 Un membre abstract a été ajouté à droite de la comparaison à un type unsealed. Supprimez le membre ou ne l’annotez pas comme abstract.
CP0006 Un membre a été ajouté à une interface sans implémentation par défaut. Si le framework cible et la version du langage prennent en charge les implémentations par défaut, ajoutez-en une ou supprimez simplement le membre de l’interface.
CP0007 Un type de base sur la hiérarchie de classes a été supprimé de l’un des côtés comparés. Ajoutez à nouveau le type de base. (Un nouveau type de base peut être introduit dans la hiérarchie si c’est prévu.)
CP0008 Une interface de base a été supprimée de la hiérarchie d’interfaces de l’un des côtés comparés. Ajoutez de nouveau l’interface à la hiérarchie.
CP0009 Un type qui a été unsealed d’un côté a été annoté comme sealed de l’autre côté comparé. Supprimez l’annotation sealed du type.
CP0010 Le type sous-jacent d’une énumération a changé d’un côté par rapport à l’autre. Rétablissez le type sous-jacent tel qu’il était auparavant.
CP0011 La valeur d’un membre dans une énumération a changé d’un côté par rapport à l’autre. Rétablissez la valeur du membre telle qu’elle était auparavant.
CP0012 Le mot clé virtual a été supprimé d’un membre qui était auparavant virtuel. Ajoutez le mot clé virtual au membre.
CP0013 Le mot clé virtual a été ajouté à un membre qui n’était pas virtuel auparavant. Supprimez le mot clé virtual du membre.
CP0014 Un attribut a été supprimé d’un membre qui l’avait auparavant. Ajoutez de nouveau l’attribut au membre.
CP0015 Les arguments passés à un attribut ont changé d’un côté par rapport à l’autre. Rétablissez les arguments de l’attribut tels qu’ils étaient auparavant.
CP0016 Un attribut a été ajouté à un membre qui ne l’avait pas auparavant. Supprimez l’attribut du membre.
CP0017 Le nom du paramètre d’une méthode a changé d’un côté par rapport à l’autre. Rétablissez le nom du paramètre tel qu’il était auparavant.
CP0018 Le mot clé sealed a été ajouté à un membre d’interface qui n’était pas sealed auparavant. Supprimez le mot clé sealed du membre d’interface.
CP0019 La visibilité d’un membre a été réduite d’un côté par rapport à l’autre. Rétablissez la visibilité du membre telle qu’elle était auparavant.
CP0020 La visibilité d’un membre a été étendue d’un côté par rapport à l’autre. Rétablissez la visibilité du membre telle qu’elle était auparavant.
CP1001 Impossible de trouver un assembly correspondant dans les répertoires de recherche. (Non applicable à la validation de package ; uniquement lors de l’utilisation directe de la compatibilité des API.) Fournissez le répertoire de recherche lors du chargement d’assemblys correspondants à l’aide de AssemblySymbolLoader.
CP1002 Aucun assembly de référence n’a été trouvé lors du chargement des assemblys à comparer dans les répertoires résolus pour le framework cible actuel. Incluez le chemin du répertoire où cet assembly se trouve à l’aide de l’élément MSBuild suivant : <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.
CP1003 Aucun répertoire de recherche n’a été fourni pour le moniker de framework cible pour lequel la validation de package exécute la compatibilité des API. Fournissez le répertoire de recherche pour trouver des références pour ce framework cible à l’aide de l’élément MSBuild suivant : <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.

Procédure de suppression

Vous pouvez supprimer des ID de diagnostic individuels de l’une des manières suivantes :

Fichier de suppression

Pour supprimer les erreurs de compatibilité pour les modifications intentionnelles, ajoutez un fichier CompatibilitySuppressions.xml à votre projet. La validation de package et d’assembly utilisent le même format de fichier de suppression.

Vous pouvez générer ce fichier automatiquement de l’une des deux façons :

  • En passant /p:GenerateCompatibilitySuppressionFile=true si vous créez un package du projet à partir de la ligne de commande.
  • En ajoutant la propriété suivante à votre Fichier projet : <GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>.

Le fichier de suppression ressemble à ceci.

<?xml version="1.0" encoding="utf-8"?>
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Suppression>
    <DiagnosticId>CP0002</DiagnosticId>
    <Target>M:A.B.DoStringManipulation(System.String)</Target>
    <Left>lib/netstandard2.0/A.dll</Left>
    <Right>lib/net6.0/A.dll</Right>
    <IsBaselineSuppression>false</IsBaselineSuppression>
  </Suppression>
</Suppressions>
  • DiagnosticId spécifie l’ID de l’erreur à supprimer.
  • Target spécifie où supprimer les ID de diagnostic dans le code.
  • Left spécifie l’opérande gauche d’une comparaison APICompat.
  • Right spécifie l’opérande droite d’une comparaison APICompat.
  • IsBaselineSuppression spécifie s’il faut appliquer la suppression à une validation de référence (true) ou non (false).

Option du compilateur NoWarn

Vous pouvez également supprimer des ID de diagnostic individuels via l’indicateur du compilateur NoWarn, par package ou globalement.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    ...
    <!-- The following NoWarn suppresses PKV001 project-wide -->
    <NoWarn>$(NoWarn);PKV001</NoWarn>
  </PropertyGroup>
</Project>