Sdílet prostřednictvím


Kódy chyb ověření balíčku/sestavení

Tento referenční článek obsahuje seznam všech kódů chyb vygenerovaných ověřením balíčku a ověřením sestavení.

Seznam kódů chyb

ID diagnostiky Popis Doporučená akce
PKV001 Chybí prostředek doby kompilace pro kompatibilní architekturu. Přidejte do projektu odpovídající cílovou architekturu.
PKV002 Chybí prostředek za běhu pro kompatibilní architekturu a modul runtime. Přidejte příslušný prostředek pro odpovídající modul runtime do balíčku.
PKV003 Chybí nezávislý prostředek za běhu pro kompatibilní architekturu. Přidejte do projektu příslušnou cílovou architekturu nezávislou na čase za běhu.
PKV004 Chybí kompatibilní prostředek za běhu pro prostředek v době kompilace. Přidejte do balíčku odpovídající prostředek za běhu.
PKV005 Chybí kompatibilní prostředek za běhu pro prostředek v době kompilace a chybí podporovaný identifikátor modulu runtime. Přidejte do balíčku odpovídající prostředek za běhu.
PKV006 Cílová architektura se zahodí v nejnovější verzi. Přidejte do projektu odpovídající cílovou architekturu.
PKV007 Dvojice identifikátorů cílové architektury a modulu runtime se zahodí v nejnovější verzi. Přidejte do projektu příslušnou cílovou architekturu a identifikátor RID.
CP0001 V porovnání sestavení chybí typ, výčet, záznam nebo struktura viditelné mimo sestavení, pokud je to nutné. Přidejte chybějící typ do sestavení, kde chybí.
CP0002 Člen, který je viditelný mimo sestavení, chybí ve porovnávané sestavení, pokud je to nutné. Přidejte chybějící člen do sestavení, kde chybí.
CP0003 Některá část identity sestavení (název, token veřejného klíče, jazyková verze, retargetable atribut nebo verze) se neshoduje na obou stranách porovnání. Aktualizujte identitu sestavení tak, aby se obě strany shodovaly.
CP0004 Při vytváření mapování sestavení nebyla na jedné straně porovnání nalezena odpovídající sestavení. Ujistěte se, že je do balíčku přidáno chybějící sestavení.
CP0005 Člen abstract byl přidán na pravou stranu porovnání na nezapečetěný typ. Odeberte člena nebo ho neonotujte jako abstract.
CP0006 Člen byl přidán do rozhraní bez výchozí implementace. Pokud cílová architektura a verze jazyka podporují výchozí implementace, přidejte jeden nebo odeberte člena z rozhraní.
CP0007 Základní typ v hierarchii tříd byl odebrán z jedné z porovnávaných stran. Přidejte základní typ zpět. (Nový základní typ lze zavést v hierarchii, pokud je to zamýšleno.)
CP0008 Základní rozhraní bylo odebráno z hierarchie rozhraní z jedné z porovnávaných stran. Přidejte rozhraní zpět do hierarchie.
CP0009 Typ, který byl nezapečetěn na jedné straně, byl opatřen poznámkami jako sealed na druhé porovnávané straně. Odeberte poznámku sealed z typu.
CP0010 Základní typ výčtu se změnil z jedné strany na druhý. Změňte základní typ zpět na předchozí typ.
CP0011 Hodnota člena v výčtu se změnila z jedné strany na druhou. Změňte hodnotu člena zpět na to, co bylo dříve.
CP0012 Klíčové virtual slovo bylo odebráno z člena, který byl dříve virtuální. virtual Přidejte klíčové slovo zpět ke členu.
CP0013 Klíčové virtual slovo bylo přidáno do člena, který nebyl dříve virtuální. virtual Odeberte klíčové slovo od člena.
CP0014 Atribut byl odebrán z člena, který ho měl dříve. Přidejte atribut zpět ke členu.
CP0015 Argumenty předané atributu se změnily z jedné strany na druhou. Změňte argumenty na atribut zpět na to, co byly dříve.
CP0016 Atribut byl přidán k členu, který ho předtím neměl. Odeberte atribut ze člena.
CP0017 Název parametru metody se změnil z jedné strany na druhou. Změňte název parametru zpět na dříve.
CP0018 Klíčové sealed slovo bylo přidáno do člena rozhraní, který nebyl dříve zapečetěn. sealed Odeberte klíčové slovo ze člena rozhraní.
CP0019 Viditelnost člena byla snížena z jedné strany na druhou. Změňte viditelnost člena zpět na to, co bylo dříve.
CP0020 Viditelnost člena byla rozšířena z jedné strany na druhou. Změňte viditelnost člena zpět na to, co bylo dříve.
CP1001 V adresářích vyhledávání nelze najít odpovídající sestavení. (Nejde použít pro ověření balíčku, pouze při použití rozhraní API Compat přímo.) Zadejte vyhledávací adresář při načítání odpovídajících sestavení pomocí AssemblySymbolLoader.
CP1002 Při načítání sestavení nebyla nalezena referenční sestavení pro porovnání v vyřešených adresářích pro aktuální cílovou architekturu. Zahrňte cestu k adresáři, kde lze nalézt sestavení pomocí následující položky NÁSTROJE MSBuild: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.
CP1003 Pro moniker cílové architektury nebyl k dispozici žádný vyhledávací adresář, pro který ověřování balíčku spouští compat rozhraní API. Zadejte vyhledávací adresář k vyhledání odkazů pro danou cílovou architekturu pomocí následující položky NÁSTROJE MSBuild: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.

Jak potlačit

Jednotlivá diagnostická ID můžete potlačit některým z následujících způsobů:

Soubor potlačení

Pokud chcete potlačit chyby kompatibility pro záměrné změny, přidejte do projektu soubor CompatibilitySuppressions.xml . Ověření balíčku a ověření sestavení používají stejný formát souboru potlačení.

Tento soubor můžete vygenerovat automaticky jedním ze dvou způsobů:

  • /p:GenerateCompatibilitySuppressionFile=true Předáním, pokud projekt zabalíte z příkazového řádku.
  • Přidáním následující vlastnosti do souboru projektu: <GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>.

Soubor potlačení vypadá takto.

<?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 určuje ID chyby, která se má potlačit.
  • Target určuje, kde má kód potlačit ID diagnostiky.
  • Left určuje levý operand porovnání APICompat.
  • Right určuje správný operand porovnání APICompat.
  • IsBaselineSuppression určuje, zda má být potlačení aplikováno na ověřování podle směrného plánu () nebotrue ne (false).

Možnost kompilátoru NoWarn

Jednotlivá diagnostická ID můžete také potlačit pomocí příznaku kompilátoru NoWarn , a to buď pro jednotlivé balíčky, nebo globálně.

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