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:

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>