CA1014: Assemblys mit CLSCompliantAttribute markieren.
Eigenschaft | Wert |
---|---|
Regel-ID | CA1014 |
Titel | Assemblys mit CLSCompliantAttribute markieren. |
Kategorie | Design |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 8 aktiviert | Nein |
Ursache
Das System.CLSCompliantAttribute-Attribut wurde bei einer Assembly nicht angewendet.
Regelbeschreibung
In der Common Language Specification (CLS) sind Benennungseinschränkungen, Datentypen und Regeln definiert, denen Assemblys entsprechen müssen, wenn sie in verschiedenen Programmiersprachen verwendet werden sollen. Um guten Entwurfsprinzipien gerecht zu werden, muss bei allen Assemblys die CLS-Kompatibilität mit CLSCompliantAttribute explizit angegeben werden. Wenn das Attribut in einer Assembly nicht vorhanden ist, ist die Assembly nicht kompatibel.
Eine CLS-kompatible Assembly kann Typen oder Typmember enthalten, die nicht CLS-kompatibel sind.
Behandeln von Verstößen
Um den Verstoß gegen diese Regel zu beheben, fügen Sie der Assembly das Attribut hinzu. Anstatt die gesamte Assembly als nicht kompatibel zu markieren, sollten Sie ermitteln, welche Typen oder Typmember nicht kompatibel sind, und diese Elemente dann als nicht kompatibel markieren. Wenn möglich, sollten Sie eine CLS-kompatible Alternative für nicht kompatible Member bereitstellen, damit eine größtmögliche Zielgruppe auf die gesamte Funktionalität Ihrer Assembly zugreifen kann.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel. Wenn Sie nicht möchten, dass die Assembly CLS-kompatibel ist, legen Sie den Wert des Attributs auf false
fest.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA1014
// The code that's violating the rule is on this line.
#pragma warning restore CA1014
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none
fest.
[*.{cs,vb}]
dotnet_diagnostic.CA1014.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Beispiel
Das folgende Beispiel zeigt eine Assembly, bei der das System.CLSCompliantAttribute-Attribut verwendet wurde, mit dem die CLS-Kompatibilität deklariert wird.
[assembly:CLSCompliant(true)]
namespace DesignLibrary {}
<assembly:CLSCompliant(true)>
Namespace DesignLibrary
End Namespace