Códigos de error de validación de paquetes o ensamblados
En este artículo de referencia se enumeran todos los códigos de error generados por la validación de paquetes y la validación de ensamblados.
Lista de códigos de error
Id. de diagnóstico | Descripción | Acción recomendada |
---|---|---|
PKV001 | Falta un recurso en tiempo de compilación para un marco compatible. | Agregue la plataforma de destino adecuada al proyecto. |
PKV002 | Falta un recurso en tiempo de ejecución para un marco y un entorno de ejecución compatibles. | Agregue el recurso adecuado para el entorno de ejecución correspondiente al paquete. |
PKV003 | Falta un recurso independiente en tiempo de ejecución para un marco compatible. | Agregue la plataforma de destino independiente en tiempo de ejecución adecuada al proyecto. |
PKV004 | Falta un recurso en tiempo de ejecución compatible con un recurso en tiempo de compilación. | Agregue el recurso en tiempo de ejecución adecuado al paquete. |
PKV005 | Falta un recurso en tiempo de ejecución compatible con un recurso en tiempo de compilación y un identificador de tiempo de ejecución compatible. | Agregue el recurso en tiempo de ejecución adecuado al paquete. |
PKV006 | La plataforma de destino se anula en la versión más reciente. | Agregue la plataforma de destino adecuada al proyecto. |
PKV007 | El marco de destino y el par de identificadores en tiempo de ejecución se anulan en la versión más reciente. | Agregue la plataforma de destino y el RID adecuados al proyecto. |
CP0001 | En el ensamblado comparado, cuando es necesario que esté presente, falta un tipo, enumeración, registro o estructura visible fuera del ensamblado. | Agregue el tipo que falta al ensamblado donde no se encuentre. |
CP0002 | En el ensamblado comparado, cuando es necesario que esté presente, falta un miembro que sea visible fuera del ensamblado. | Agregue el miembro que falta al ensamblado donde no se encuentre. |
CP0003 | Parte de la identidad del ensamblado (nombre, token de clave pública, referencia cultural, atributo redestinable o versión) no coincide en ambos lados de la comparación. | Actualice la identidad del ensamblado para que ambos lados coincidan. |
CP0004 | No se encontró un ensamblado coincidente en un lado de la comparación al crear la asignación del ensamblado. | Asegúrese de que el ensamblado que falta se agrega al paquete. |
CP0005 | Se agregó un miembro abstract al lado derecho de la comparación a un tipo no sellado. |
Elimine el miembro o no lo anote como abstract . |
CP0006 | Se agregó un miembro a una interfaz sin una implementación predeterminada. | Si la versión del lenguaje y la plataforma de destino admiten implementaciones predeterminadas, agregue una o simplemente quite el miembro de la interfaz. |
CP0007 | Se quitó un tipo base en la jerarquía de clases de uno de los lados comparados. | Vuelva a agregar el tipo base. (Se puede introducir un nuevo tipo base en la jerarquía si está previsto). |
CP0008 | Se quitó una interfaz base de la jerarquía de interfaz de uno de los lados comparados. | Vuelva a agregar la interfaz a la jerarquía. |
CP0009 | Un tipo no sellado en un lado se anotó como sealed en el otro lado comparado. |
Elimine la anotación sealed del tipo. |
CP0010 | El tipo subyacente de una enumeración cambió de un lado a otro. | Vuelva a cambiar el tipo subyacente al que era anteriormente. |
CP0011 | El valor de un miembro de una enumeración cambió de un lado a otro. | Vuelva a cambiar el valor del miembro al que era anteriormente. |
CP0012 | La palabra clave virtual se eliminó de un miembro que anteriormente era virtual. |
Vuelva a agregar la palabra clave virtual al miembro. |
CP0013 | La palabra clave virtual se agregó a un miembro que anteriormente no era virtual. |
Quite la palabra clave virtual del miembro. |
CP0014 | Se quitó un atributo de un miembro que lo tenía anteriormente. | Vuelva a agregar el atributo al miembro. |
CP0015 | Los argumentos pasados a un atributo cambiaron de un lado a otro. | Cambie los argumentos al atributo de nuevo a como estaban anteriormente. |
CP0016 | Se agregó un atributo a un miembro que anteriormente no lo tenía. | Quite el atributo del miembro. |
CP0017 | Nombre de parámetro de un método que se cambia de un extremo a otro. | Vuelva a cambiar el nombre del parámetro al que era anteriormente. |
CP0018 | La palabra clave sealed se agregó a un miembro de interfaz que anteriormente no estaba sellado. |
Quite la palabra clave sealed del miembro de interfaz. |
CP0019 | La visibilidad de un miembro se redujo de un extremo al otro. | Cambie la visibilidad del miembro a lo que era anteriormente. |
CP0020 | La visibilidad de un miembro se expandió de un extremo al otro. | Cambie la visibilidad del miembro a lo que era anteriormente. |
CP1001 | No se encontró un ensamblado coincidente en los directorios de búsqueda. (No es aplicable a la validación de paquetes, solo cuando se usa la API Compat directamente). | Proporcione el directorio de búsqueda al cargar ensamblados coincidentes mediante AssemblySymbolLoader . |
CP1002 | No se encontró un ensamblado de referencia al cargar los ensamblados para compararlos en los directorios resueltos de la plataforma de destino actual. | Incluya la ruta de acceso del directorio en la que se puede encontrar ese ensamblado mediante el elemento MSBuild siguiente: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
CP1003 | No se proporcionó ningún directorio de búsqueda para el moniker de la plataforma de destino para el que API Compat ejecuta la validación de paquetes. | Proporcione el directorio de búsqueda a fin de buscar referencias para esa plataforma de destino mediante el elemento MSBuild siguiente: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> . |
Cómo eliminar elementos
Puede eliminar identificadores de diagnóstico individuales de cualquiera de las maneras siguientes:
- Mediante un archivo de eliminación.
- Mediante la marca del compilador
NoWarn
.
Archivo de supresión
Para eliminar los errores de compatibilidad de los cambios intencionados, agregue un archivo CompatibilitySuppressions.xml al proyecto. La validación de paquetes y la validación de ensamblados usan el mismo formato de archivo de supresión.
Puede generar este archivo automáticamente de una de estas dos maneras:
- Al pasar
/p:GenerateCompatibilitySuppressionFile=true
si va a empaquetar el proyecto desde la línea de comandos. - Al agregar la siguiente propiedad al archivo del proyecto:
<GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>
.
El archivo de eliminación tiene este aspecto.
<?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 el id. del error que se debe eliminar.Target
especifica dónde eliminar en el código los id. de diagnóstico.Left
especifica el operando izquierdo de una comparación APICompat.Right
especifica el operando derecho de una comparación APICompat.IsBaselineSuppression
especifica si se debe aplicar la supresión a una validación de línea de base (true
) o no (false
).
Opción del compilador NoWarn
También puede suprimir identificadores de diagnóstico individuales mediante la marca del compilador NoWarn
, ya sea por paquete o globalmente.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<!-- The following NoWarn suppresses PKV001 project-wide -->
<NoWarn>$(NoWarn);PKV001</NoWarn>
</PropertyGroup>
</Project>