Códigos de erro de validação de pacote/montagem
Este artigo de referência lista todos os códigos de erro gerados pela validação de pacote e validação de assembly.
Lista de códigos de erro
ID de diagnóstico | Description | Ação recomendada |
---|---|---|
PKV001 | Um ativo de tempo de compilação para uma estrutura compatível está faltando. | Adicione a estrutura de destino apropriada ao projeto. |
PKV002 | Um ativo de tempo de execução para uma estrutura compatível e tempo de execução está faltando. | Adicione o ativo apropriado para o tempo de execução correspondente ao pacote. |
PKV003 | Um ativo independente de tempo de execução para uma estrutura compatível está faltando. | Adicione a estrutura de destino independente de tempo de execução apropriada ao projeto. |
PKV004 | Um ativo de tempo de execução compatível para um ativo de tempo de compilação está ausente. | Adicione o ativo de tempo de execução apropriado ao pacote. |
PKV005 | Um ativo de tempo de execução compatível para um ativo de tempo de compilação e um identificador de tempo de execução suportado está faltando. | Adicione o ativo de tempo de execução apropriado ao pacote. |
PKV006 | A estrutura de destino é descartada na versão mais recente. | Adicione a estrutura de destino apropriada ao projeto. |
PKV007 | A estrutura de destino e o par de identificadores de tempo de execução são descartados na versão mais recente. | Adicione a estrutura de destino apropriada e o RID ao projeto. |
CP0001 | Um tipo, enum, registro ou estrutura visível fora do assembly está faltando no assembly comparado quando necessário para estar presente. | Adicione o tipo ausente ao assembly onde ele está faltando. |
CP0002 | Um membro visível fora da assembleia está ausente na assembleia comparada quando é necessário estar presente. | Adicione o membro ausente ao assembly onde ele está faltando. |
CP0003 | Alguma parte da identidade do assembly (nome, token de chave pública, cultura, atributo redirecionável ou versão) não corresponde em ambos os lados da comparação. | Atualize a identidade do assembly para que ambos os lados coincidam. |
CP0004 | Um assembly correspondente não foi encontrado em um lado da comparação ao criar o mapeamento de assembly. | Certifique-se de que o assembly ausente seja adicionado ao pacote. |
CP0005 | Um abstract membro foi adicionado ao lado direito da comparação para um tipo não lacrado. |
Remova o membro ou não o anote como abstract . |
CP0006 | Um membro foi adicionado a uma interface sem uma implementação padrão. | Se a estrutura de destino e a versão do idioma suportarem implementações padrão, adicione uma ou simplesmente remova o membro da interface. |
CP0007 | Um tipo de base na hierarquia de classe foi removido de um dos lados comparados. | Adicione o tipo base de volta. (Um novo tipo de base pode ser introduzido na hierarquia, se for essa a intenção.) |
CP0008 | Uma interface base foi removida da hierarquia de interface de um dos lados comparados. | Adicione a interface de volta à hierarquia. |
CP0009 | Um tipo que foi deslacrado de um lado foi anotado como sealed no outro lado comparado. |
Remova a sealed anotação do tipo. |
CP0010 | O tipo subjacente de um enum mudou de um lado para o outro. | Altere o tipo subjacente de volta ao que era anteriormente. |
CP0011 | O valor de um membro em um enum mudou de um lado para o outro. | Altere o valor do membro de volta para o que era anteriormente. |
CP0012 | A virtual palavra-chave foi removida de um membro que anteriormente era virtual. |
Adicione a virtual palavra-chave de volta ao membro. |
CP0013 | A virtual palavra-chave foi adicionada a um membro que anteriormente não era virtual. |
Remova a virtual palavra-chave do membro. |
CP0014 | Um atributo foi removido de um membro que o tinha anteriormente. | Adicione o atributo de volta ao membro. |
CP0015 | Os argumentos passados para um atributo mudaram de um lado para o outro. | Altere os argumentos para o atributo de volta ao que eram anteriormente. |
CP0016 | Um atributo foi adicionado a um membro que anteriormente não o tinha. | Remova o atributo do membro. |
CP0017 | O nome do parâmetro de um método mudou de um lado para o outro. | Altere o nome do parâmetro de volta para o que era anteriormente. |
CP0018 | A sealed palavra-chave foi adicionada a um membro da interface que anteriormente não estava lacrado. |
Remova a sealed palavra-chave do membro da interface. |
CP0019 | A visibilidade de um membro foi reduzida de um lado para o outro. | Altere a visibilidade do membro de volta para o que era anteriormente. |
CP0020 | A visibilidade de um membro foi ampliada de um lado para o outro. | Altere a visibilidade do membro de volta para o que era anteriormente. |
CP1001 | Não foi possível encontrar um assembly correspondente nos diretórios de pesquisa. (Não aplicável para validação de pacotes, somente ao usar API Compat diretamente.) | Forneça o diretório de pesquisa ao carregar assemblies correspondentes usando AssemblySymbolLoader o . |
CP1002 | Um assembly de referência não foi encontrado ao carregar os assemblies para comparar nos diretórios resolvidos para a estrutura de destino atual. | Inclua o caminho do diretório onde esse assembly pode ser encontrado usando o seguinte item do MSBuild: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
CP1003 | Não havia nenhum diretório de pesquisa fornecido para o moniker da estrutura de destino para o qual a validação do pacote está executando o API Compat. | Forneça o diretório de pesquisa para localizar referências para essa estrutura de destino usando o seguinte item do MSBuild: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
Como suprimir
Você pode suprimir IDs de diagnóstico individuais de uma das seguintes maneiras:
Arquivo de supressão
Para suprimir erros de compatibilidade para alterações intencionais, adicione um arquivo CompatibilitySuppressions.xml ao seu projeto. A validação de pacote e a validação de assembly usam o mesmo formato de arquivo de supressão.
Você pode gerar esse arquivo automaticamente de duas maneiras:
- Passando
/p:GenerateCompatibilitySuppressionFile=true
se você estiver empacotando o projeto a partir da linha de comando. - Adicionando a seguinte propriedade ao seu arquivo de projeto:
<GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>
.
O arquivo de supressão tem esta aparência.
<?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
especifica a ID do erro a ser suprimido.Target
especifica onde no código para suprimir as IDs de diagnóstico.Left
especifica o operando esquerdo de uma comparação APICompat.Right
especifica o operando correto de uma comparação APICompat.IsBaselineSuppression
Especifica se a supressão deve ser aplicada a uma validação de linha de base (true
) ou não (false
).
Opção do compilador NoWarn
Você também pode suprimir IDs de diagnóstico individuais por meio do sinalizador do NoWarn
compilador, por pacote ou globalmente.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<!-- The following NoWarn suppresses PKV001 project-wide -->
<NoWarn>$(NoWarn);PKV001</NoWarn>
</PropertyGroup>
</Project>