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

Siehe auch