2010-11-01 3 views
5

ich auf Code arbeiten, die die folgenden Attribute auf einige seiner Methoden haben:Disable CLS-Kompatibilität in C# Überprüfung

[CLSCompliantAttribute(false)] 

Wie kommt es, dass, wenn ich den Code bauen wie es ist, sehe ich, dass die Einhaltung Überprüfung durchgeführt wird, und wenn ich es auskommentieren, scheint es, dass die Überprüfung der Einhaltung nicht durchgeführt wird?

Ich habe das entgegengesetzte Verhalten erwartet ...

+0

Was meinst du? – SLaks

+0

Können Sie Ihre Warnmeldung posten? – max

Antwort

8

Hinzufügen [CLSCompliant(false)] markiert das Element Sie es als nicht konform hinzuzufügen.

Wenn Sie das Mitglied als nicht konform markieren, wird der Compiler Sie nicht warnen, wenn es nicht kompatibel ist. (Da Sie bereits gesagt haben, dass es nicht konform ist.)

Wenn jedoch das Mitglied als kompatibel gekennzeichnet ist (entweder explizit oder indirekt von einem Attribut auf Assembly-Ebene), aber es ist in der Tat nicht konform (z. B. es nimmt eine uint), wird der Compiler Sie warnen (da das Attribut jetzt über das Mitglied liegt).

+0

Also, wenn ich die Warnung bekomme - bedeutet das, dass ich das Attribut: [CLSCompliant (true)] irgendwo in meinem Code in einem höheren Bereich? – user429400

+0

@user: Welche Warnung? – SLaks

+4

Sie haben es wahrscheinlich auf Assembly-Ebene. Suchen Sie nach '[assembly: CLSCompliant (true)]' 'in Properties/AssemblyInfo.cs –

1

Sie können es beispielsweise AssemblyInfo.cs hinzufügen und alle Assembly: * gruppieren. Wie:

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")]