2010-11-01 16 views
5

pracuję nad kodem, który ma następujące atrybuty na niektóre z jego metod:Wyłącz CLS zgodności sprawdzanie w C#

[CLSCompliantAttribute(false)] 

Jak to jest, że kiedy zbudować kod jak jest, widzę, że zgodność sprawdzanie jest wykonywane, a kiedy je skomentuję, wydaje się, że sprawdzanie zgodności NIE jest wykonywane?

mam oczekiwać przeciwnego zachowania ...

+0

Co masz na myśli? – SLaks

+0

Czy możesz opublikować komunikat ostrzegawczy? – max

Odpowiedz

8

Dodawanie [CLSCompliant(false)] ślady państw dodasz go jako niezgodna.

Jeśli użytkownik oznaczy element jako niezgodny, kompilator nie będzie ostrzegał, jeśli nie jest zgodny. (Ponieważ już powiedziałeś, że nie jest zgodny).

Jeśli jednak element jest oznaczony jako zgodny (bezpośrednio lub pośrednio z atrybutu na poziomie zespołu), ale w rzeczywistości nie jest zgodny (na przykład zajmuje uint), kompilator ostrzeże Cię (ponieważ atrybut dotyczy teraz elementu).

+0

, więc jeśli otrzymam ostrzeżenie - czy to znaczy, że mam atrybut: [CLSC zgodne (prawda)] gdzieś w moim kodzie w wyższym zakresie? – user429400

+0

@user: Jakie ostrzeżenie? – SLaks

+4

Prawdopodobnie masz go na poziomie zespołu. Poszukaj "[assembly: CLSC zgodny (true)]" we właściwościach/AssemblyInfo.cs –

1

Możesz na przykład dodać do AssemblyInfo.cs i zgrupować wszystkie złożenia: *. Podobnych:

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")] 
Powiązane problemy