Compartilhar via


CA1014: Marcar assemblies com CLSCompliantAttribute

Property Valor
ID da regra CA1014
Título Marcar assemblies com CLSCompliantAttribute
Categoria Projetar
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 10 Não

Causa

Um assembly não tem o atributo System.CLSCompliantAttributeaplicado a ele.

Descrição da regra

A CLS (Common Language Specification) define restrições de nomenclatura, tipos de dados e regras que assemblies deverão respeitar se forem usados em todas as linguagens de programação. Um bom design determina que todos os conjuntos indiquem explicitamente a conformidade CLS com CLSCompliantAttribute. Se o atributo não estiver presente em um assembly, o assembly não estará em conformidade.

É possível que um assembly em conformidade com CLS contenha tipos ou membros de tipo que sejam não conformes.

Como corrigir violações

Para corrigir uma violação dessa regra, adicione o atributo ao assembly. Em vez de marcar todo o assembly como não conforme, será necessário determinar qual tipo ou quais membros de tipo são não conformes e marcar esses elementos. Se possível, forneça uma alternativa em conformidade com CLS aos membros não conformes para que o público mais amplo possível possa acessar todas as funcionalidades do assembly.

Quando suprimir avisos

Não suprima um aviso nessa regra. Se você não quiser que o assembly esteja em conformidade, aplique o atributo e defina o valor como false.

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.

#pragma warning disable CA1014
// The code that's violating the rule is on this line.
#pragma warning restore CA1014

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA1014.severity = none

Para obter mais informações, confira Como suprimir avisos de análise de código.

Exemplo

O exemplo a seguir mostra um assembly que tem o atributo System.CLSCompliantAttribute aplicado que o declara em conformidade com CLS.

[assembly:CLSCompliant(true)]
namespace DesignLibrary {}
<assembly:CLSCompliant(true)>
Namespace DesignLibrary
End Namespace

Confira também