Dela via


Felkoder för paket-/sammansättningsverifiering

I den här referensartikeln visas alla felkoder som genereras av paketverifiering och sammansättningsvalidering.

Lista över felkoder

Diagnostik-ID beskrivning Rekommenderad åtgärd
PKV001 En kompileringstidstillgång för ett kompatibelt ramverk saknas. Lägg till lämpligt målramverk i projektet.
PKV002 En körningstillgång för ett kompatibelt ramverk och körning saknas. Lägg till lämplig tillgång för motsvarande körning i paketet.
PKV003 En oberoende körningstillgång för ett kompatibelt ramverk saknas. Lägg till lämpligt oberoende målramverk för körning i projektet.
PKV004 En kompatibel körningstillgång för en kompileringstillgång saknas. Lägg till lämplig körningstillgång i paketet.
PKV005 En kompatibel körningstillgång för en kompileringstillgång och en körningsidentifierare som stöds saknas. Lägg till lämplig körningstillgång i paketet.
PKV006 Målramverket tas bort i den senaste versionen. Lägg till lämpligt målramverk i projektet.
PKV007 Målramverket och körningsidentifierarparet tas bort i den senaste versionen. Lägg till lämpligt målramverk och RID i projektet.
CP0001 En typ, uppräkning, post eller struct som visas utanför sammansättningen saknas i den jämförda sammansättningen när det krävs för att finnas. Lägg till den saknade typen i sammansättningen där den saknas.
CP0002 En medlem som är synlig utanför sammansättningen saknas i den jämförde sammansättningen när det krävs för att vara närvarande. Lägg till den saknade medlemmen i sammansättningen där den saknas.
CP0003 En del av sammansättningsidentiteten (namn, token för offentlig nyckel, kultur, ommålbart attribut eller version) matchar inte på båda sidor av jämförelsen. Uppdatera sammansättningsidentiteten så att båda sidor matchar.
CP0004 Det gick inte att hitta en matchande sammansättning på ena sidan av jämförelsen när sammansättningsmappningen skapades. Kontrollera att den saknade sammansättningen har lagts till i paketet.
CP0005 En abstract medlem lades till på höger sida av jämförelsen med en oförseglade typ. Ta bort medlemmen eller kommentera den inte som abstract.
CP0006 En medlem har lagts till i ett gränssnitt utan en standardimplementering. Om målramverket och språkversionen stöder standardimplementeringar lägger du till en eller bara tar bort medlemmen från gränssnittet.
CP0007 En bastyp i klasshierarkin togs bort från en av de jämförd sidorna. Lägg till bastypen igen. (En ny bastyp kan introduceras i hierarkin om det är avsett.)
CP0008 Ett basgränssnitt har tagits bort från gränssnittshierarkin från en av de jämförde sidorna. Lägg till gränssnittet i hierarkin igen.
CP0009 En typ som inte öppnades på ena sidan kommenterades som sealed på den andra jämförda sidan. Ta bort kommentaren sealed från typen .
CP0010 Den underliggande typen av ett uppräkning har ändrats från ena sidan till den andra. Ändra tillbaka den underliggande typen till vad den var tidigare.
CP0011 Värdet för en medlem i ett uppräkning har ändrats från ena sidan till den andra. Ändra tillbaka värdet för medlemmen till vad den var tidigare.
CP0012 Nyckelordet virtual togs bort från en medlem som tidigare var virtuell. Lägg tillbaka nyckelordet virtual till medlemmen.
CP0013 Nyckelordet virtual lades till i en medlem som tidigare inte var virtuell. Ta bort nyckelordet virtual från medlemmen.
CP0014 Ett attribut har tagits bort från en medlem som tidigare hade det. Lägg till attributet tillbaka till medlemmen.
CP0015 Argumenten som skickades till ett attribut ändrades från ena sidan till den andra. Ändra argumenten till attributet tillbaka till det de var tidigare.
CP0016 Ett attribut lades till i en medlem som tidigare inte hade det. Ta bort attributet från medlemmen.
CP0017 Namnet på en metodparameter har ändrats från ena sidan till den andra. Ändra tillbaka parameterns namn till vad det var tidigare.
CP0018 Nyckelordet sealed lades till i en gränssnittsmedlem som tidigare inte var förseglad. Ta bort nyckelordet sealed från gränssnittsmedlemmen.
CP0019 En medlems synlighet minskades från ena sidan till den andra. Ändra tillbaka medlemmens synlighet till vad den var tidigare.
CP0020 Synligheten för en medlem utökades från ena sidan till den andra. Ändra tillbaka medlemmens synlighet till vad den var tidigare.
CP1001 Det gick inte att hitta en matchande sammansättning i sökkatalogerna. (Gäller inte för paketverifiering, endast när du använder API Compat direkt.) Ange sökkatalogen när matchande sammansättningar läses in med hjälp av AssemblySymbolLoader.
CP1002 Det gick inte att hitta en referenssammansättning när sammansättningarna lästes in för jämförelse i de lösta katalogerna för det aktuella målramverket. Inkludera katalogsökvägen där sammansättningen kan hittas med hjälp av följande MSBuild-objekt: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.
CP1003 Det fanns ingen sökkatalog för målramverkets moniker som paketverifieringen kör API Compat för. Ange sökkatalogen för att hitta referenser för det målramverket med hjälp av följande MSBuild-objekt: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />.

Så här undertrycker du

Du kan utelämna enskilda diagnostik-ID:er på något av följande sätt:

Undertryckningsfil

Om du vill förhindra kompatibilitetsfel för avsiktliga ändringar lägger du till en CompatibilitySuppressions.xml fil i projektet. Paketverifiering och sammansättningsvalidering använder samma undertryckningsfilformat.

Du kan generera den här filen automatiskt på något av två sätt:

  • Genom att skicka /p:GenerateCompatibilitySuppressionFile=true om du packar projektet från kommandoraden.
  • Genom att lägga till följande egenskap i projektfilen: <GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>.

Undertryckningsfilen ser ut så här.

<?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>
  • DiagnosticIdanger ID:t för felet som ska ignoreras.
  • Target anger var i koden som diagnostik-ID:t ska utelämnas.
  • Left anger den vänstra operanden i en APICompat-jämförelse.
  • Right anger rätt operand för en APICompat-jämförelse.
  • IsBaselineSuppression anger om undertryckningen ska tillämpas på en baslinjeverifiering (true) eller inte (false).

NoWarn-kompilatoralternativ

Du kan också utelämna enskilda diagnostik-ID:er via NoWarn kompileringsflaggan, antingen per paket eller globalt.

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