CA1014: Marcar los ensamblados con CLSCompliantAttribute
Propiedad | Value |
---|---|
Identificador de la regla | CA1014 |
Título | Marcar los ensamblados con CLSCompliantAttribute |
Categoría | Diseño |
La corrección es problemática o no problemática | Poco problemático |
Habilitado de forma predeterminada en .NET 8 | No |
Causa
Un ensamblado no tiene aplicado el atributo System.CLSCompliantAttribute.
Descripción de la regla
La Common Language Specification (CLS) define las restricciones de nomenclatura, los tipos de datos y las reglas a las que los ensamblados deben ajustarse si se van a utilizar los lenguajes de programación. Los procedimientos de diseño establecen que todos los ensamblados deben indicar explícitamente la conformidad a CLS con CLSCompliantAttribute. Si el atributo no está presente en un ensamblado, el ensamblado no es conforme.
Es posible que un ensamblado conforme a CLS contenga tipos o miembros de tipo que no sean conformes.
Cómo corregir infracciones
Para corregir una infracción de esta regla, agregue el atributo al ensamblado. En lugar de marcar todo el ensamblado como no conforme, debe determinar qué tipo o miembros de tipo no son conformes y marcarlos en consecuencia. Si es posible, debe proporcionar una alternativa conforme a CLS para los miembros no conformes, de modo que la audiencia más amplia posible pueda acceder a toda la funcionalidad del ensamblado.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla. Si no quiere que el ensamblado sea conforme, aplique el atributo y establezca su valor en false
.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA1014
// The code that's violating the rule is on this line.
#pragma warning restore CA1014
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA1014.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
Ejemplo
En el ejemplo siguiente se muestra un ensamblado que tiene aplicado el atributo System.CLSCompliantAttribute que lo declara como conforme a CLS.
[assembly:CLSCompliant(true)]
namespace DesignLibrary {}
<assembly:CLSCompliant(true)>
Namespace DesignLibrary
End Namespace