Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 opposite behavior...

like image 203
user429400 Avatar asked Nov 01 '10 17:11

user429400


2 Answers

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).

like image 159
SLaks Avatar answered Oct 02 '22 17:10

SLaks


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")]
like image 45
gatsby Avatar answered Oct 02 '22 17:10

gatsby