See Also: CLSCompliantAttribute Members
If no CLSCompliantAttribute is associated with a given assembly, that assembly is assumed not to be CLS-compliant.
A type is assumed to be CLS-compliant if and only if its enclosing type (for nested types) or assembly (for top-level types) is CLS-compliant. Other members (methods, fields, properties and events) are CLS-compliant if and only if the type in which they are defined is CLS-compliant.
The CLS is a subset of CLI features that is supported by a broad set of compliant languages and tools. CLS-compliant languages and tools are guaranteed to interoperate with other CLS-compliant languages and tools.
Because the CLS defines the rules for language interoperability, its rules apply only to "externally visible" items. The CLS assumes that language interoperability is important only across the assembly boundary - that is, within a single assembly there are no restrictions as to the programming techniques that are used. Thus, the CLS rules apply only to items that are visible outside of their defining assembly and have public, family, or family-or-assembly accessibility.
For more information on CLS compliance, see Partition I of the CLI Specification.
This attribute can be applied to any valid attribute target. For a complete list of valid targets, see AttributeTargets.