CA1014: Oznacz zestawy za pomocą CLSCompliantAttribute

Właściwości Wartość
Identyfikator reguły CA1014
Stanowisko Oznacz zestawy atrybutem CLSCompliant
Kategoria Projekt
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Zestaw nie ma zastosowanego atrybutu System.CLSCompliantAttribute .

Opis reguły

The Common Language Specification (CLS) definiuje ograniczenia nazw, typów danych i reguł, z którymi muszą być zgodne zestawy, jeśli zostaną użyte w językach programowania. Dobry projekt określa, że wszystkie zestawy jawnie wskazują zgodność środowiska CLS z programem CLSCompliantAttribute. Jeśli atrybut nie jest obecny w zestawie, zestaw nie jest zgodny.

Zestaw zgodny ze specyfikacją CLS może zawierać typy lub składowe typu, które nie są zgodne.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, dodaj atrybut do zestawu. Zamiast oznaczać cały zestaw jako niezgodny, należy określić, który typ lub składowe typu nie są zgodne i oznaczyć te elementy jako takie. Jeśli to możliwe, należy podać alternatywę zgodną ze specyfikacją CLS dla niezgodnych członków, aby najszerszi możliwi odbiorcy mogli uzyskać dostęp do wszystkich funkcji zestawu.

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń dla tej reguły. Jeśli nie chcesz, aby zestaw był zgodny, zastosuj atrybut i ustaw jego wartość na false.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Przykład

W poniższym przykładzie pokazano zestaw, który ma System.CLSCompliantAttribute zastosowany atrybut, który deklaruje, że jest zgodny ze specyfikacją CLS.

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

Zobacz też