From the intro to the Design Guidelines document
Targeting the common language specification (CLS) is an excellent way to ensure cross language interoperation. The CLS defines a set of programmatically verifiable rules that governs the interoperation of types authored in different programming languages. Although the CLS encourages good library design, it does not enforce it.
The CLS is a set of rules to be used by managed class library designers to guarantee that their APIs will be callable across a wide range of programming languages.