Codici di errore di convalida pacchetto/assembly
Questo articolo di riferimento elenca tutti i codici errore generati dalla convalida del pacchetto e dalla convalida dell'assembly.
Elenco dei codici di errore
ID di diagnostica | Descrizione | Azione consigliata |
---|---|---|
PKV001 | Manca un asset in fase di compilazione per un framework compatibile. | Aggiungere il framework di destinazione appropriato al progetto. |
PKV002 | Manca un asset di runtime per un framework compatibile e un runtime. | Aggiungere l'asset appropriato per il runtime corrispondente al pacchetto. |
PKV003 | Manca un asset indipendente in fase di esecuzione per un framework compatibile. | Aggiungere il framework di destinazione indipendente di runtime appropriato al progetto. |
PKV004 | Manca un asset di runtime compatibile per un asset in fase di compilazione. | Aggiungere l'asset di runtime appropriato al pacchetto. |
PKV005 | Un asset di runtime compatibile per un asset in fase di compilazione e un identificatore di runtime supportato è mancante. | Aggiungere l'asset di runtime appropriato al pacchetto. |
PKV006 | Il framework di destinazione è stato eliminato nella versione più recente. | Aggiungere il framework di destinazione appropriato al progetto. |
PKV007 | La coppia di identificatori di runtime e framework di destinazione è stata eliminata nella versione più recente. | Aggiungere il framework di destinazione e il RID appropriati al progetto. |
CP0001 | Un tipo, un'enumerazione, un record o uno struct visibili all'esterno dell'assembly non sono presenti nell'assembly confrontato quando necessario. | Aggiungere il tipo mancante all'assembly in cui manca. |
CP0002 | Un membro visibile all'esterno dell'assembly non è presente nell'assembly confrontato quando necessario. | Aggiungere il membro mancante all'assembly in cui manca. |
CP0003 | Alcune parti dell'identità dell'assembly (nome, token di chiave pubblica, impostazioni cultura, attributo retargetable o versione) non corrispondono a entrambi i lati del confronto. | Aggiornare l'identità dell'assembly in modo che entrambi i lati corrispondano. |
CP0004 | Impossibile trovare un assembly corrispondente su un lato del confronto durante la creazione del mapping dell'assembly. | Assicurarsi che l'assembly mancante venga aggiunto al pacchetto. |
CP0005 | Un membro abstract è stato aggiunto al lato destro del confronto con un tipo non bloccato. |
Rimuovere il membro o non annotarlo come abstract . |
CP0006 | Un membro è stato aggiunto a un'interfaccia senza un'implementazione predefinita. | Se il framework di destinazione e la versione del linguaggio supportano le implementazioni predefinite, aggiungerne una o semplicemente rimuovere il membro dall'interfaccia. |
CP0007 | Un tipo di base nella gerarchia di classi è stato rimosso da uno dei lati confrontati. | Aggiungere di nuovo il tipo di base. È possibile introdurre un nuovo tipo di base nella gerarchia, se previsto. |
CP0008 | Un'interfaccia di base è stata rimossa dalla gerarchia dell'interfaccia da uno dei lati confrontati. | Aggiungere nuovamente l'interfaccia alla gerarchia. |
CP0009 | Un tipo non bloccato su un lato è stato annotato come sealed nell'altro lato confrontato. |
Rimuovere l'annotazione sealed dal tipo. |
CP0010 | Il tipo sottostante di un'enumerazione è cambiato da un lato all'altro. | Modificare di nuovo il tipo sottostante impostandolo su quello precedente. |
CP0011 | Il valore di un membro in un'enumerazione è cambiato da un lato all'altro. | Modificare di nuovo il valore del membro impostandolo su quello precedente. |
CP0012 | La parola chiave virtual è stata rimossa da un membro che in precedenza era virtuale. |
Aggiungere di nuovo la parola chiave virtual al membro. |
CP0013 | La parola chiave virtual è stata aggiunta a un membro che in precedenza non era virtuale. |
Rimuovere la parola chiave virtual dal membro. |
CP0014 | Un attributo è stato rimosso da un membro che in precedenza lo aveva. | Aggiungere di nuovo l'attributo al membro. |
CP0015 | Gli argomenti passati a un attributo sono stati modificati da un lato all'altro. | Modificare gli argomenti con l'attributo in base a quello precedente. |
CP0016 | Un attributo è stato aggiunto a un membro che in precedenza non lo aveva. | Rimuovere l'attributo dal membro. |
CP0017 | Il nome del parametro di un metodo è cambiato da un lato all'altro. | Modificare il nome del parametro in base a quello precedente. |
CP0018 | La parola chiave sealed è stata aggiunta a un membro di interfaccia non bloccato in precedenza. |
Rimuovere la parola chiave sealed dal membro dell'interfaccia. |
CP0019 | La visibilità di un membro è stata ridotta da un lato all'altro. | Modificare la visibilità del membro in base al suo valore precedente. |
CP0020 | La visibilità di un membro è stata ampliata da un lato all'altro. | Modificare la visibilità del membro in base al suo valore precedente. |
CP1001 | Impossibile trovare un assembly corrispondente nelle directory di ricerca. Non applicabile per la convalida del pacchetto, solo quando si usa direttamente API Compat. | Specificare la directory di ricerca quando si caricano assembly corrispondenti usando AssemblySymbolLoader . |
CP1002 | Impossibile trovare un assembly di riferimento durante il caricamento degli assembly da confrontare nelle directory risolte per il framework di destinazione corrente. | Includere il percorso della directory in cui è possibile trovare l'assembly usando l'elemento MSBuild seguente: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
CP1003 | Non è stata fornita alcuna directory di ricerca per il moniker del framework di destinazione per cui la convalida del pacchetto esegue API Compat. | Specificare la directory di ricerca per trovare i riferimenti per il framework di destinazione usando l'elemento MSBuild seguente: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
Come eliminare
È possibile eliminare i singoli ID di diagnostica in uno dei modi seguenti:
- Tramite un file di eliminazione.
- Tramite il flag del compilatore
NoWarn
.
File di eliminazione
Per eliminare gli errori di compatibilità per le modifiche intenzionali, aggiungere un file CompatibilitySuppressions.xml al progetto. La convalida dei pacchetti e la convalida dell'assembly usano lo stesso formato di file di eliminazione.
È possibile generare automaticamente questo file in uno dei due modi seguenti:
- Passando
/p:GenerateCompatibilitySuppressionFile=true
se si inserisce il progetto in un pacchetto dalla riga di comando. - Aggiungendo la proprietà seguente al file di progetto:
<GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>
.
Il file di eliminazione è simile al seguente.
<?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
specifica l'ID dell'errore da eliminare.Target
specifica dove eliminare gli ID di diagnostica nel codice.Left
specifica l'operando sinistro di un confronto APICompat.Right
specifica l'operando destro di un confronto APICompat.IsBaselineSuppression
specifica se applicare l'eliminazione a una convalida di base (true
) o meno (false
).
Opzione del compilatore NoWarn
È anche possibile eliminare singoli ID di diagnostica tramite il flag del compilatore NoWarn
, per ogni pacchetto o a livello globale.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<!-- The following NoWarn suppresses PKV001 project-wide -->
<NoWarn>$(NoWarn);PKV001</NoWarn>
</PropertyGroup>
</Project>