Fehlercodes für die Paket-/Assemblyüberprüfungen
In diesem Referenzartikel werden alle Fehlercodes aufgelistet, die bei der Paket- und Assemblyüberprüfung generiert werden.
Liste der Fehlercodes
Diagnose-ID | BESCHREIBUNG | Empfohlene Maßnahme |
---|---|---|
PKV001 | Eine Kompilierzeitkomponente für ein kompatibles Framework fehlt. | Fügen Sie dem Projekt das entsprechende Zielframework hinzu. |
PKV002 | Eine Runtimekomponente für ein kompatibles Framework und eine Runtime fehlt. | Fügen Sie dem Paket die entsprechende Komponente für die entsprechende Runtime hinzu. |
PKV003 | Eine von der Runtime unabhängige Komponente für ein kompatibles Framework fehlt. | Fügen Sie dem Projekt das entsprechende von der Runtime unabhängige Zielframework hinzu. |
PKV004 | Eine kompatible Runtimekomponente für eine Kompilierzeitkomponente fehlt. | Fügen Sie dem Paket die entsprechende Runtimekomponente hinzu. |
PKV005 | Eine kompatible Runtimekomponente für eine Kompilierzeitkomponente sowie ein unterstützter Runtimebezeichner fehlen. | Fügen Sie dem Paket die entsprechende Runtimekomponente hinzu. |
PKV006 | Das Zielframework wird in der neuesten Version gelöscht. | Fügen Sie dem Projekt das entsprechende Zielframework hinzu. |
PKV007 | Das Zielframework und das Runtimebezeichnerpaar werden in der neuesten Version gelöscht. | Fügen Sie dem Projekt das entsprechende Zielframework und den entsprechenden RID hinzu. |
CP0001 | Ein Typ, eine Enumeration, ein Datensatz oder eine Struktur, die außerhalb der Assembly vorhanden ist, fehlt in der verglichenen Assembly, wenn dies erforderlich ist. | Fügen Sie der Assembly den Typ hinzu, der darin fehlt. |
CP0002 | Ein Member, der außerhalb der Assembly vorhanden ist, fehlt in der verglichenen Assembly, wenn dies erforderlich ist. | Fügen Sie der Assembly den Member hinzu, der darin fehlt. |
CP0003 | Ein Teil der Assemblyidentität (Name, öffentliches Schlüsseltoken, Kultur, Attribut mit erneuter Zielzuweisung oder Version) stimmt auf beiden Seiten des Vergleichs nicht überein. | Aktualisieren Sie die Assemblyidentität, sodass beide Seiten übereinstimmen. |
CP0004 | Beim Erstellen der Assemblyzuordnung wurde auf einer Seite des Vergleichs keine übereinstimmende Assembly gefunden. | Stellen Sie sicher, dass die fehlende Assembly dem Paket hinzugefügt wird. |
CP0005 | Ein abstract -Member wurde auf rechten Seite des Vergleichs zu einem nicht versiegelten Typ hinzugefügt. |
Entfernen Sie den Member, oder annotieren Sie ihn nicht als abstract . |
CP0006 | Ein Member wurde einer Schnittstelle ohne Standardimplementierungen hinzugefügt. | Wenn das Zielframework und die Sprachversion Standardimplementierungen unterstützen, fügen Sie eine hinzu, oder entfernen Sie einfach den Member aus der Schnittstelle. |
CP0007 | Ein Basistyp in der Klassenhierarchie wurde auf einer der verglichenen Seiten entfernt. | Fügen Sie den Basistyp wieder hinzu. (Ein neuer Basistyp kann in der Hierarchie eingeführt werden, wenn dies beabsichtigt ist.) |
CP0008 | Eine Basisschnittstelle wurde auf einer der verglichenen Seiten aus der Schnittstellenhierarchie entfernt. | Fügen Sie die Schnittstelle wieder zur Hierarchie hinzu. |
CP0009 | Ein Typ, der auf der einen Seite nicht versiegelt war, wurde auf der anderen verglichenen Seite als sealed (versiegelt) annotiert. |
Entfernen Sie die sealed -Anmerkung aus dem Typ. |
CP0010 | Der zugrunde liegende Typ einer Enumeration ist auf der einen Seite anders als auf der anderen. | Ändern Sie den zugrunde liegenden Typ wieder zurück in den vorherigen Typ. |
CP0011 | Der Wert eines Members in einer Enumeration ist auf der einen Seite anders als auf der anderen. | Ändern Sie den Wert des Members wieder in den vorherigen Wert. |
CP0012 | Das virtual -Schlüsselwort wurde aus einem Member entfernt, das zuvor virtuell war. |
Fügen Sie das virtual -Schlüsselwort wieder dem Member hinzu. |
CP0013 | Das Schlüsselwort virtual wurde einem Member hinzugefügt, der zuvor nicht virtuell war. |
Entfernen Sie das virtual -Schlüsselwort aus dem Member. |
CP0014 | Ein Attribut wurde aus einem Member entfernt, in dem es zuvor vorhanden war. | Fügen Sie das Attribut wieder dem Member hinzu. |
CP0015 | Die an ein Attribut übergebenen Argumente ist auf der einen Seite anders als auf der anderen. | Ändern Sie die Argumente für das Attribut in den vorherigen Zustand zurück. |
CP0016 | Ein Attribut wurde einem Member hinzugefügt, der vorher noch keines hatte. | Entfernen Sie das von dem Member. |
CP0017 | Der Name des Parameters einer Methode ist auf der einen Seite anders als auf der anderen. | Ändern Sie den Namen des Parameters wieder in den früheren Namen. |
CP0018 | Das Schlüsselwort sealed wurde einem Schnittstellenmember hinzugefügt, der zuvor nicht versiegelt war. |
Entfernen Sie das sealed -Schlüsselwort aus dem Schnittstellenmember. |
CP0019 | Die Sichtbarkeit eines Members wurde von der einen Seite zur anderen reduziert. | Ändern Sie die Sichtbarkeit des Members wieder zurück in den vorherigen Zustand. |
CP0020 | Die Sichtbarkeit eines Members wurde von einer Seite auf die andere erweitert. | Ändern Sie die Sichtbarkeit des Members wieder zurück in den vorherigen Zustand. |
CP1001 | Eine übereinstimmende Assembly wurde in den Suchverzeichnissen nicht gefunden. (Gilt nicht für die Paketüberprüfung, nur bei direkter Verwendung der API-Kompatibilität.) | Geben Sie mithilfe von AssemblySymbolLoader das Suchverzeichnis beim Laden übereinstimmender Assemblys an. |
CP1002 | Beim Laden der Assemblys, die in den aufgelösten Verzeichnissen für das aktuelle Zielframework verglichen werden sollen, wurde keine Verweisassembly gefunden. | Schließen Sie den Verzeichnispfad ein, unter dem diese Assembly mithilfe des folgenden MSBuild-Elements gefunden werden kann: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
CP1003 | Es wurde kein Suchverzeichnis für den Zielframeworkmoniker bereitgestellt, für den die Paketüberprüfung die API-Kompatibilitätsüberprüfung ausführt. | Geben Sie das Suchverzeichnis an, um mithilfe des folgenden MSBuild-Elements Verweise für dieses Zielframework zu suchen: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
Vorgehensweise: Unterdrücken
Sie können einzelne Diagnose-IDs auf eine der folgenden Arten unterdrücken:
- Über eine Unterdrückungsdatei.
- Über das
NoWarn
-Compilerflag.
Unterdrückungsdatei
Um Kompatibilitätsfehler bei beabsichtigten Änderungen zu unterdrücken, fügen Sie Ihrem Projekt die Datei CompatibilitySuppressions.xml hinzu. Die Paket- und Assemblyüberprüfung verwenden das gleiche Unterdrückungsdateiformat.
Sie können diese Datei auf eine von zwei Arten automatisch generieren:
- Durch Übergeben von
/p:GenerateCompatibilitySuppressionFile=true
, wenn Sie das Projekt über die Befehlszeile packen. - Fügen Sie der Projektdatei die folgende Eigenschaft hinzu:
<GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>
.
Die Unterdrückungsdatei sieht wie folgt aus.
<?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
gibt die ID des zu unterdrückenden Fehlers an.Target
gibt an, wo im Code die Diagnose-IDs unterdrückt werden sollen.Left
gibt den linken Operanden eines APICompat-Vergleichs an.Right
gibt den rechten Operanden eines APICompat-Vergleichs an.IsBaselineSuppression
gibt an, ob die Unterdrückung auf eine Basisüberprüfung angewendet werden soll (true
) oder nicht (false
).
NoWarn-Compileroption
Sie können auch einzelne Diagnose-IDs über das NoWarn
-Compilerflag unterdrücken, entweder pro Paket oder global.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<!-- The following NoWarn suppresses PKV001 project-wide -->
<NoWarn>$(NoWarn);PKV001</NoWarn>
</PropertyGroup>
</Project>