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 :
- Via un fichier de suppression.
- Via l’
NoWarn
indicateur de compilateur.
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>