.net-standardcls-compliant

How to mark .NET Standard code as CLS-compliant?


The title says it all - how do I flag a .NET standard library as CLS-compliant?

I wrote a simple library in C# targeting .NET Standard 1.0 framework. It includes two enums:

public enum Alignments { Left, Center, Right }
public enum Actions { None, Total, Average, Count }

When I try to use the library in a .NET 4.6 project it flags the enums as non-CLS-compliant:

Warning CS3001 Argument type 'Actions' is not CLS-compliant

I cannot add anything to AssemblyInfo.cs since this is not used by .NET standard. It does not seem to be supported as a property in the .csproj file either.


Solution

  • There isn't an AssemblyInfo.cs file, but assembly attributes can be added to any file in a .NET Standard project.

    So adding this to a C# file in the project will make the assembly CLS-compliant:

    using System; [assembly: CLSCompliant(true)]

    Reference: NetStandard v1.0 docs

    For convention I'll create an AssemblyInfo.cs file and place it there anyway.