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:
- Via en undertryckningsfil.
- Via kompilatorflaggan
NoWarn
.
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>
DiagnosticId
anger 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>