Любая причина не пометить DLL как CLSCompliant? - PullRequest
9 голосов
/ 08 августа 2011

Я сейчас тестирую Ndepend, и он предупреждает меня, что сборки должны быть помечены как CLSCompliant.

Наш проект полностью на C #, поэтому он на самом деле не нужен.

Что меня интересует, так это: есть ли какие-либо негативные последствия маркировки DLL как clscompliant или я должен просто отключить предупреждение?

Примечание. Я не спрашиваю, что означает CLSCompliant, который описан здесь: Что такое атрибут CLSCompliant в .NET?

Ответы [ 3 ]

7 голосов
/ 08 августа 2011

Это один из тех тонких случаев ... Соответствие CLS, вероятно, имеет наибольшее значение для авторов библиотеки, которые не могут контролировать, кто является вызывающим абонентом.В вашем случае вы заявляете «наш проект - это все C #», и в этом случае вы правы: он не нужен.Он добавляет ограничения (например, для неподписанных типов), которые могут (или не могут) влиять на представление ваших данных наиболее очевидным способом.

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

Если вы являетесь автором библиотеки (торговец или OSS), то вы должны следовать ей.

2 голосов
/ 08 августа 2011

Существует несколько функций C #, которые не совместимы с CLS, например неподписанные типы. Поскольку некоторые языки не чувствительны к регистру, не должно быть типов и элементов, отличающихся только регистром, например MyObject и myObject, а также ряд других функций. Таким образом, если вы не планируете работать с другими языками .NET, нет причин помечать ваш код как CLSCompliant.

1 голос
/ 08 августа 2011

Единственным негативным эффектом будут ошибки компилятора, когда ваш код помечен как CLSCompliant, но это не так.

...