Случай с именем ссылки не соответствует CLS - PullRequest
5 голосов
/ 02 июня 2009

У меня есть проект .NET 3.5 C # с пространством имен SampleNamespace.Tools.Sample.

Если я добавлю сборку с именем «Samplenamespace.Utils.Example» в мой проект, я получу следующее предупреждение:

Идентификатор 'Samplenamespace' отличается только в том случае, если он не совместим с CLS

Обратите внимание на нижний регистр 'n' в Samplenamespace.

В данный момент я даже не использую эталонную сборку в моем проекте. Простое добавление его в качестве ссылки вызывает предупреждение.

Почему компилятор жалуется на это, учитывая, что я даже не выставляю ссылки на сборку в моих открытых классах?

Есть ли обходной путь?

Ответы [ 2 ]

7 голосов
/ 02 июня 2009

Не все языки .NET чувствительны к регистру (например, VB), когда у вас смешанные пространства имен, подобные этому, различающиеся только в том случае, если (используя формулировку предупреждения) ваш код может быть недоступен для других разработчиков.

Это может быть не ваш случай, поэтому это предупреждение (которое в моем магазине мы считаем ошибкой)

3 голосов
/ 02 июня 2009

Это просто предупреждение, поскольку не все языки, которые могут использовать типы в вашем решении, будут знать о различии (и могут не использовать типы).

Я думаю, что вы можете избежать этого предупреждения, пометив свою сборку как несовместимую с CLS (в файле AssemblyInfo.cs) ( подробнее здесь ):

[assembly:CLSCompliant(false)]

Не уверен, что я думаю, что это хорошая идея ...

Обновление: Я думаю, что причина, по которой выдается предупреждение, хотя ничего не раскрывается, заключается в том, что пространства имен не имеют модификаторов доступа. Возможно, вы могли бы сказать, что пространства имен всегда общедоступны, поэтому они являются доступными для потенциальных клиентов, даже если они не содержат открытых типов.

...