Foutcodes voor pakket-/assemblyvalidatie
Dit naslagartikel bevat alle foutcodes die zijn gegenereerd door pakketvalidatie en assemblyvalidatie.
Lijst met foutcodes
Diagnostische id | Beschrijving | Aanbevolen actie |
---|---|---|
PKV001 | Er ontbreekt een compileertijdasset voor een compatibel framework. | Voeg het juiste doelframework toe aan het project. |
PKV002 | Er ontbreekt een runtimeasset voor een compatibel framework en runtime. | Voeg de juiste asset toe voor de bijbehorende runtime aan het pakket. |
PKV003 | Er ontbreekt een runtime-onafhankelijke asset voor een compatibel framework. | Voeg het juiste runtime-onafhankelijke doelframework toe aan het project. |
PKV004 | Er ontbreekt een compatibele runtime-asset voor een compileertijdasset. | Voeg de juiste runtime-asset toe aan het pakket. |
PKV005 | Er ontbreekt een compatibele runtime-asset voor een compileertijdasset en er ontbreekt een ondersteunde runtime-id. | Voeg de juiste runtime-asset toe aan het pakket. |
PKV006 | Het doelframework wordt verwijderd in de nieuwste versie. | Voeg het juiste doelframework toe aan het project. |
PKV007 | Het doelframework en het runtime-id-paar worden verwijderd in de nieuwste versie. | Voeg het juiste doelframework en rid toe aan het project. |
CP0001 | Een type, opsomming, record of struct dat buiten de assembly zichtbaar is, ontbreekt in de vergeleken assembly wanneer deze aanwezig moet zijn. | Voeg het ontbrekende type toe aan de assembly waar het ontbreekt. |
CP0002 | Een lid dat buiten de assembly zichtbaar is, ontbreekt in de vergeleken assembly wanneer deze aanwezig moet zijn. | Voeg het ontbrekende lid toe aan de assembly waar deze ontbreekt. |
CP0003 | Een deel van de assembly-identiteit (naam, openbare-sleuteltoken, cultuur, retargetable kenmerk of versie) komt niet overeen aan beide zijden van de vergelijking. | Werk de assembly-identiteit bij zodat beide zijden overeenkomen. |
CP0004 | Er is geen overeenkomende assembly aan één kant van de vergelijking gevonden bij het maken van de assemblytoewijzing. | Zorg ervoor dat de ontbrekende assembly is toegevoegd aan het pakket. |
CP0005 | Er abstract is een lid toegevoegd aan de rechterkant van de vergelijking met een niet-verzegeld type. |
Verwijder het lid of maak geen aantekeningen als abstract . |
CP0006 | Er is een lid toegevoegd aan een interface zonder standaard implementatie. | Als het doelframework en de taalversie standaard implementaties ondersteunen, voegt u er een toe of verwijdert u het lid uit de interface. |
CP0007 | Een basistype op de klassehiërarchie is verwijderd uit een van de vergeleken zijden. | Voeg het basistype terug. (Er kan een nieuw basistype worden geïntroduceerd in de hiërarchie als dat bedoeld is.) |
CP0008 | Een basisinterface is verwijderd uit de interfacehiërarchie van een van de vergeleken zijden. | Voeg de interface weer toe aan de hiërarchie. |
CP0009 | Een type dat aan de ene kant niet was verzegeld, werd geannoteerd zoals sealed aan de andere vergeleken zijde. |
Verwijder de sealed aantekening uit het type. |
CP0010 | Het onderliggende type van een enum is gewijzigd van de ene kant naar de andere. | Wijzig het onderliggende type weer in wat het eerder was. |
CP0011 | De waarde van een lid in een enum is gewijzigd van de ene kant naar de andere. | Wijzig de waarde van het lid terug in wat het eerder was. |
CP0012 | Het virtual trefwoord is verwijderd uit een lid dat eerder virtueel was. |
Voeg het virtual trefwoord weer toe aan het lid. |
CP0013 | Het virtual trefwoord is toegevoegd aan een lid dat eerder niet virtueel was. |
Verwijder het virtual trefwoord uit het lid. |
CP0014 | Een kenmerk is verwijderd uit een lid dat het eerder had. | Voeg het kenmerk weer toe aan het lid. |
CP0015 | De argumenten die aan een kenmerk zijn doorgegeven, zijn gewijzigd van de ene kant naar de andere. | Wijzig de argumenten in het kenmerk terug in wat ze eerder waren. |
CP0016 | Er is een kenmerk toegevoegd aan een lid dat het eerder niet had. | Verwijder het kenmerk uit het lid. |
CP0017 | De naam van de parameter van een methode is gewijzigd van de ene kant naar de andere. | Wijzig de naam van de parameter terug in wat deze eerder was. |
CP0018 | Het sealed trefwoord is toegevoegd aan een interfacelid dat eerder niet is verzegeld. |
Verwijder het sealed trefwoord uit het interfacelid. |
CP0019 | De zichtbaarheid van een lid is van de ene kant naar de andere verkleind. | Wijzig de zichtbaarheid van het lid terug in wat het eerder was. |
CP0020 | De zichtbaarheid van een lid is van de ene kant naar de andere uitgevouwen. | Wijzig de zichtbaarheid van het lid terug in wat het eerder was. |
CP1001 | Er is geen overeenkomende assembly gevonden in de zoekmappen. (Niet van toepassing op pakketvalidatie, alleen wanneer api Compat rechtstreeks wordt gebruikt.) | Geef de zoekmap op bij het laden van overeenkomende assembly's met behulp van AssemblySymbolLoader . |
CP1002 | Er is geen referentieassembly gevonden bij het laden van de assembly's om te vergelijken in de opgeloste mappen voor het huidige doelframework. | Neem het mappad op waar die assembly kan worden gevonden met behulp van het volgende MSBuild-item: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
CP1003 | Er is geen zoekmap opgegeven voor de doelframework moniker waarvoor de pakketvalidatie API Compat uitvoert. | Geef de zoekmap op om verwijzingen voor dat doelframework te vinden met behulp van het volgende MSBuild-item: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> |
Onderdrukken
U kunt afzonderlijke diagnostische id's op een van de volgende manieren onderdrukken:
- Via een onderdrukkingsbestand.
- Via de
NoWarn
compilervlag.
Onderdrukkingsbestand
Als u compatibiliteitsfouten voor opzettelijke wijzigingen wilt onderdrukken, voegt u een CompatibilitySuppressions.xml-bestand toe aan uw project. Pakketvalidatie en assemblyvalidatie gebruiken dezelfde onderdrukkingsbestandsindeling.
U kunt dit bestand automatisch op twee manieren genereren:
- Door te geven
/p:GenerateCompatibilitySuppressionFile=true
als u het project vanaf de opdrachtregel inpakt. - Door de volgende eigenschap toe te voegen aan uw projectbestand:
<GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>
Het onderdrukkingsbestand ziet er als volgt uit.
<?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
geeft de id op van de fout die moet worden onderdrukt.Target
geeft aan waar in de code de diagnostische id's moeten worden onderdrukt.Left
hiermee geeft u de linkeroperand van een APICompat-vergelijking.Right
hiermee geeft u de juiste operand van een APICompat-vergelijking.IsBaselineSuppression
geeft aan of de onderdrukking moet worden toegepast op een basislijnvalidatie (true
) of niet (false
).
NoWarn-compileroptie
U kunt ook afzonderlijke diagnostische id's onderdrukken via de NoWarn
compilervlag, per pakket of wereldwijd.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<!-- The following NoWarn suppresses PKV001 project-wide -->
<NoWarn>$(NoWarn);PKV001</NoWarn>
</PropertyGroup>
</Project>