CA1014: Contrassegnare gli assembly con CLSCompliantAttribute
Proprietà | valore |
---|---|
ID regola | CA1014 |
Titolo | Contrassegnare gli assembly con CLSCompliantAttribute |
Categoria | Progettazione |
Correzione che causa un'interruzione o un'interruzione | Nessuna interruzione |
Abilitato per impostazione predefinita in .NET 8 | No |
Causa
A un assembly non è applicato l'attributo System.CLSCompliantAttribute .
Descrizione regola
In Common Language Specification (CLS) vengono definite limitazioni di denominazione, tipi di dati e regole che gli assembly devono rispettare per poter essere utilizzati tra diversi linguaggi di programmazione. Una buona progettazione impone che tutti gli assembly indichino in modo esplicito la conformità a CLS con CLSCompliantAttribute. Se l'attributo non è presente in un assembly, l'assembly non è conforme.
È possibile che un assembly conforme a CLS contenga tipi o membri di tipo non conformi.
Come correggere le violazioni
Per correggere una violazione di questa regola, aggiungere l'attributo all'assembly. Invece di contrassegnare l'intero assembly come non conforme, è necessario determinare il tipo o i membri del tipo non conformi e contrassegnare tali elementi come tali. Se possibile, è necessario fornire un'alternativa conforme a CLS per i membri non conformi in modo che il pubblico più ampio possibile possa accedere a tutte le funzionalità dell'assembly.
Quando eliminare gli avvisi
Non escludere un avviso da questa regola. Se non si vuole che l'assembly sia conforme, applicare l'attributo e impostarne il valore su false
.
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable CA1014
// The code that's violating the rule is on this line.
#pragma warning restore CA1014
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none
su nel file di configurazione.
[*.{cs,vb}]
dotnet_diagnostic.CA1014.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.
Esempio
Nell'esempio seguente viene illustrato un assembly con l'attributo System.CLSCompliantAttribute applicato che lo dichiara conforme a CLS.
[assembly:CLSCompliant(true)]
namespace DesignLibrary {}
<assembly:CLSCompliant(true)>
Namespace DesignLibrary
End Namespace