You can still create non CLS-Compliant code in C#. For instance, having 2 public members whose names only differ in case would cause it to be non-compliant (because VB.Net for instance does not support case-sensitive identifiers). Check the AssemblyInfo.cs file for the following attribute:
[assembly:CLSCompliant(true)]
Here is one of the errors I get when I try to include SemanticCSharpParser class into my assembly:
Argument type 'ActiproSoftware.SyntaxEditor.TokenStream' is not CLS-compliant
Here is what the help says about the error
Argument type 'type' is not CLS-compliant
A public, protected, or protected internal method must accept a parameter whose type is compliant with the Common Language Specification (CLS).
The following sample generates CS3001:
// CS3001.cs
[assembly:System.CLSCompliant(true)]
public class a
{
public void bad(ushort i) // CS3001
{
}
private void OK(ushort i) // OK, private method
{
}
public static void Main()
{
}
}