Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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>