Вопрос

Я использую LINQ to SQL в качестве уровня доступа к данным для нового проекта.Я добавил свои таблицы базы данных в конструктор, и все в порядке.

Всякий раз, когда я использую один из этих классов в функции, Visual Studio предупреждает меня, что "Тип xxxx не соответствует CLS" или что "Возвращаемый тип функции xxxx не соответствует CLS"

Это проблема с классами, которые генерирует LINQ to SQL?Имеет ли это значение?Могу ли я отключить эти предупреждения в любом месте?Мой список ошибок VS забит этими предупреждениями, из-за чего трудно увидеть что-либо еще.

Редактировать:

Извините, я должен был упомянуть, что это VB.NET проекты.:)

Это было полезно?

Решение

У Бена М. есть правильное представление о проблеме.

Самый быстрый способ решить эту проблему на VB.Net project - сделать сборку не совместимой с CLS и, следовательно, избежать этих предупреждений.Добавление следующей строки к любому из ваших файлов сделает свое дело

<Assembly: CLSCompliant(False)>

Лучший файл для его добавления - AssemblyInfo.vb внутри папки "Мой проект".

Другие советы

Я нашел эта ссылка на MSDN Connect:

При добавлении отношений наследования между классами в O / R designer уровень доступа к сгенерированному элементу резервного хранилища идентификатора атрибут "_Id" изменен с private на protected, что приводит к CLS нарушению правил.Свойство Id используется в ассоциации между классами.

Если вы хотите избавиться от предупреждений, вы можете использовать:

#pragma warning disable 3021

Или, если вы хотите отключить их по всему проекту, добавьте 3021 в поле "Подавлять предупреждения" на вкладке "Сборка" свойств вашего проекта в Visual Studio.

В конечном счете это зависит от того, какие типы возвращаются вашей базой данных и каковы имена этих типов.

Одной из проблем, касающихся соответствия CLS, является тип, который имеет два общедоступных элемента, которые отличаются по имени только регистром, напримерМое поле и мое поле.

Вот статья это должно помочь вам определить где у вас возникли проблемы с соответствием CSS, и разберитесь с ними.Если вам нужна дополнительная помощь, напишите какой-нибудь код, и мы посмотрим, что мы можем сделать.

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

То есть, являются ли ваши классы Linq to SQL в другом проекте, чем функции, которые вы пишете?Вы уточнили [assembly: CLSCompliant(true)] в некоторых, но не во всех проектах вашего решения?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top