CLS stands for common language specification and not subset.
If you follow CLS then any .NET language can call your code. For instance c# is case sensitive while VB.NET is not. So when you code in VB.NET something like this below
public sub x()
public sub X()
The above code will compile for VB.NET but C# will be confused as c# is case sentive and VB.NET is not. So what you need to do is go in your assemblyinfo.cs and put the below attribute.
[assembly: CLSCompliant (true)]
With the above code any kind of CLS compliance you break you will get a warning.