Share via


CA1014: Markera sammansättningar med CLSCompliantAttribute

Property Värde
Regel-ID CA1014
Rubrik Markera sammansättningar med CLSCompliantAttribute
Kategori Designa
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Nej

Orsak

En sammansättning har inte det attribut som System.CLSCompliantAttribute tillämpas på den.

Regelbeskrivning

Common Language Specification (CLS) definierar namngivningsbegränsningar, datatyper och regler som sammansättningar måste överensstämma med om de ska användas mellan olika programmeringsspråk. God design kräver att alla sammansättningar uttryckligen anger CLS-kompatibilitet med CLSCompliantAttribute. Om attributet inte finns i en sammansättning är sammansättningen inte kompatibel.

Det är möjligt att en CLS-kompatibel sammansättning innehåller typer eller typmedlemmar som inte är kompatibla.

Så här åtgärdar du överträdelser

Om du vill åtgärda ett brott mot den här regeln lägger du till attributet i sammansättningen. I stället för att markera hela sammansättningen som inkompatibel bör du bestämma vilken typ eller typ medlemmar inte är kompatibla och markera dessa element som sådana. Om möjligt bör du tillhandahålla ett CLS-kompatibelt alternativ för icke-kompatibla medlemmar så att bredast möjliga målgrupp kan komma åt alla funktioner i din sammansättning.

När du ska ignorera varningar

Ignorera inte en varning från den här regeln. Om du inte vill att sammansättningen ska vara kompatibel använder du attributet och anger dess värde till false.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

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

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.

Exempel

I följande exempel visas en sammansättning som har attributet System.CLSCompliantAttribute tillämpat som deklarerar att det är CLS-kompatibelt.

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

Se även