CA1014: Assemblies markeren met CLSCompliantAttribute

Eigenschap Waarde
Regel-id CA1014
Titel Assemblages markeren met CLSCompliantAttribute
Categorie Ontwerpen
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 Nee
Toepasselijke talen C# en Visual Basic

Oorzaak

Er is geen System.CLSCompliantAttribute kenmerk toegepast op een assembly.

Beschrijving van regel

De Common Language Specification (CLS) definieert naamgevingsbeperkingen, gegevenstypen en regels waaraan assembly's moeten voldoen als ze in programmeertalen worden gebruikt. Een goed ontwerp vereist dat alle componenten expliciet aangeven dat ze CLS-conform zijn.CLSCompliantAttribute Als het kenmerk niet aanwezig is in een assembly, is de assembly niet compatibel.

Het is mogelijk dat een CLS-compatibele assembly typen of typeleden bevat die niet compatibel zijn.

Hoe schendingen op te lossen

Als u een schending van deze regel wilt oplossen, voegt u het kenmerk toe aan de assembly. In plaats van de hele assembly als niet-compatibel te markeren, moet u bepalen welk type of type leden niet compatibel zijn en deze elementen als zodanig markeren. Indien mogelijk moet u een CLS-compatibel alternatief bieden voor niet-compatibele leden, zodat de breedst mogelijke doelgroep toegang heeft tot alle functionaliteit van uw assembly.

Wanneer waarschuwingen onderdrukken

Een waarschuwing van deze regel niet onderdrukken. Als u niet wilt dat de assembly compatibel is, past u het kenmerk toe en stelt u de waarde in op false.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

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

Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.

Voorbeeld

In het volgende voorbeeld ziet u een assembly waarop het System.CLSCompliantAttribute kenmerk is toegepast dat het CLS-compatibel declareert.

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

Zie ook