У меня есть проект .NET 3.5 C#, который имеет пространство имен SampleNamespace.Tools.Sample
.Код ссылки не соответствует CLS
Если добавить сборку под названием «Samplenamespace.Utils.Example» в моем проекте я получаю следующее предупреждение:
идентификатор «Samplenamespace», отличающуюся только в случае, если это не CLS-совместимый
Обратите внимание на нижний регистр «n» в Samplenamespace
.
Я даже не использую ссылку в моем проекте на данный момент. Простое добавление в качестве ссылки вызывает предупреждение.
Почему компилятор жалуется на это, учитывая, что я даже не раскрываю никаких ссылок на сборку в своих публичных классах?
Любое обходное решение?
Спасибо, Ральф, я до сих пор не понимаю, почему это имеет значение, поскольку мой проект не раскрывает ничего подобного ссылочной сборке любым потенциальным клиентам VB. Я эффективно абстрагирую VB-клиент от базовой сборки? – user115909
Поскольку VB не чувствителен к регистру, он не может различать SampleNamespace.A и Samplenamespace.A и, следовательно, он не может определить, какой тип вызывать. Чтобы предотвратить такую неоднозначность, компилятор C# отмечает это, чтобы вы могли создавать только типы и члены, которые могут быть вызваны всеми без какой-либо двусмысленности. – Gishu
Я думаю, что это слепой check-and-flag, он не рассматривает, как вы на самом деле используете или раскрываете типы. – Gishu