Delen via


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:

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>