Отключить проверку соответствия CLS в C # - PullRequest
7 голосов
/ 01 ноября 2010

Я работаю над кодом, который имеет следующие атрибуты для некоторых из его методов:

[CLSCompliantAttribute(false)] 

Как получается, что когда я строю код как есть, я вижу, что проверка соответствия выполняется, и когда я закомментирую это, кажется, что проверка соответствия НЕ выполняется?

Я ожидал противоположного поведения ...

Ответы [ 2 ]

9 голосов
/ 01 ноября 2010

Добавление [CLSCompliant(false)] помечает элемент, к которому вы добавили его, как несовместимый.

Если вы пометите элемент как несовместимый, компилятор не предупредит вас, если он не соответствует.(Поскольку вы уже сказали, что он не соответствует требованиям.)

Если, однако, элемент помечен как соответствующий (явно или косвенно из атрибута уровня сборки), но на самом деле он не соответствует (например,, это займет uint), компилятор предупредит вас (поскольку атрибут теперь лежит о члене).

2 голосов
/ 28 марта 2017

Например, вы можете добавить его в AssemblyInfo.cs и сгруппировать все сборки: *. Нравится:

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