Disable CLS compliance checking in C#
I'm working on code that have the following attributes on some of its methods:
[CLSCompliantAttribute(false)]
How is it that when I build the code as is, I see that the compliance checking is being performed, and when I comment it out, it seems that the compliance checking is NOT being performed?
I've expected the o开发者_C百科pposite behavior...
Adding [CLSCompliant(false)]
marks the member you add it to as non-compliant.
If you mark the member as non-compliant, the compiler will not warn you if it isn't compliant. (Since you already said that it's not compliant.)
If, however, the member is marked as compliant (either explicitly or indirectly from an assembly-level attribute), but it is in fact not compliant (for example, it takes a uint
), the compiler will warn you (since the attribute is now lying about the member).
You can add it to AssemblyInfo.cs for example, and group all assembly:*. Like :
using System;
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: CLSCompliant(false)]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("d29c53b6-88e4-4b33-bb86-f39b4c733542")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
精彩评论