CA1014: Oznacz zestawy za pomocą CLSCompliantAttribute
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1014 |
Tytuł | Oznacz zestawy atrybutem CLSCompliant |
Kategoria | Projekt |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | 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