Почему я не могу ссылаться на System.ComponentModel.DataAnnotations?

Я пытаюсь использовать DataAnnotations в моем проекте WPF для указания максимальной длины строк со следующим:

using System.ComponentModel.DataAnnotations;

Однако я получаю сообщение об ошибке

Тип или имя пространства имен 'DataAnnotations' не существует в namespace 'System.ComponentModel' (вам не хватает сборки ссылка?)

Я видел другие примеры, в которых DataAnnotations существует в этом пространстве имен. Я использую С# 4. Есть ли причина, по которой я не могу это использовать? Что я могу сделать, чтобы исправить это?

Ответ 1

Вы должны ссылаться на сборку, в которой определено это пространство имен (по умолчанию в шаблонах визуальной студии не ссылаются). Откройте диспетчер ссылок и добавьте ссылку на сборку System.ComponentModel.DataAnnotations(Solution explorer → Добавить ссылку → Выбрать вкладку .Net → выберите System.ComponentModel.DataAnnotations из списка)

Ответ 2

В справочную систему .ComponentModel.DataAnnotations

В файле кода, использующем System.ComponentModel.DataAnnotations; в верхней части файла, например:

using System.ComponentModel.DataAnnotations;

Добавьте ссылку .NET в свой проект, щелкнув правой кнопкой мыши проект в обозревателе решений:

enter image description here

Надеюсь, это поможет! Этот вопрос помог мне.

Ответ 3

Если у вас его нет в ссылках (как у меня его нет), вы также можете добавить NuGet System.ComponentModel.Annotations, чтобы получить сборки и устранить ошибки. (Добавив его сюда, так как этот ответ все еще верхний из Google за ошибку)

Ответ 4

У меня также была та же проблема, и я решил добавить ссылку в один из моих проектов, у которого не было упомянутой ссылки. Если в вашем решении есть 2-3 проекта, проверьте их, добавив эту ссылку в другие проекты.

Ответ 5

Используйте FrameWork версии 4.5 и выше для вашего проекта, тогда проблема была решена. Поскольку это пространство имен меньше 4.5 и выше.

Ответ 6

Я обнаружил, что не могу ссылаться на System.ComponentModel.DataAnnotations из Silverlight 5 с приведенной ниже версией (1). Я обнаружил, что сборки Silverlight 5 не могут использовать сборки .NET, они дают ошибку "Вы не можете добавить ссылку на System.ComponentModel.DataAnnotations, поскольку она не была создана против среды выполнения Silverlight...". Я планирую обход этого надеясь установить пакет Silverlight 5, указанный ниже (2). Если это не удается, я обновлю это сообщение.

[UPDATE: не удалось. Я установил все, что связано с Silverlight 5, и у меня нет версии Silverlight сборки .dll System.ComponentModel.DataAnnotations. Очень жаль. ОБНОВЛЕНИЕ II: я нашел старый .dll, имеющий это имя, из предыдущей установки комплекта разработчика Silverlight для Visual Studio 2008 или 2010. Я добавил этот файл и, похоже, "работает", поскольку IntelliSense теперь распознает атрибуты для членов класса, например [Display(Name = "My Property Name")].. Не работает ли это для всего остального в этом .dll.]

(1)

Microsoft Visual Studio Professional 2013
Version 12.0.21005.1 REL
Microsoft .NET Framework
Version 4.5.51641

Установленная версия: Professional

(2) http://go.microsoft.com/fwlink/?LinkId=229318

Ответ 7

Я искал помощи по этой теме, поскольку столкнулся с той же проблемой.

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

Способ решить эту проблему - проверить, где находится ваш проект в решении. В моем случае оказалось (я пытался установить пакет NuGet, но этого не произошло, и появилась указанная ошибка), что мой файл проекта не был включен в каталог решений, хотя и отображался в обозревателе решений. Я удалил проект из каталога вне области и повторно добавил проект, но на этот раз в правильном месте.

Ответ 8

Если вы попытались обновить визуальную студию от vs2008 до vs2010. И ваше приложение использует фреймворк 3.5 (и вы не хотите его обновлять), а также использовать службы WCF RIA BETA... У меня плохие новости... вы ДОЛЖНЫ обновляться до WCF RIA Services v1 (BETA не работает на vs2010)... и из-за этого... вам также нужно установить Silverlight 4 + upgrade на фреймворк 4.0

Смотрите это: http://blog.nappisite.com/2010/05/updating-visual-studio-2008net-35-ria.html

Ответ 9

This error occurs when the reference to the "System.dll" got removed.Solution to the problem is very simple add the reference to "System.dll".The dll is normally available in the following location
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" .Add the reference your problem will get solved .

Ответ 10

Я обновил Silverlight 4 до Silverlight 5, а затем у меня возникла эта проблема. Хотя у меня была ссылка на "System.ComponentModel.DataAnnotations" в разделе "Ссылки" в моем проекте, у нее был знак желтого урожая, указывающий, что ранее не найденная сборка не найдена. Оказалось, что в свойствах ссылки "System.ComponentModel.DataAnnotations" указано "Специфическая версия = True", когда я изменил ее на "Специфическая версия = False", она исправила проблему. Щелкните правой кнопкой мыши на сборке "System.ComponentModel.DataAnnotations" в разделе "Ссылки" и выберите "Свойства" в контекстном меню. Убедитесь, что значение свойства для "Специфическая версия = False".

Должно быть, это ссылка на старую сборку Silverlight 4, которая больше не доступна после обновления до Silverlight 5.

Ответ 11

System.ComponentModel.DataAnnotations содержится в его собственной сборке, поэтому вам нужно убедиться, что у вас есть ссылка. Просто:

1). Щелкните правой кнопкой мыши на Soloution и выберите add.

2). Выберите ссылку из списка.

3). Найдите "System.ComponentModel.DataAnnotation" и установите галочку в левой части окна и нажмите "ОК".

Задание выполнено, не должно быть никаких ошибок в ссылках.

Ответ 12

У меня тоже есть эта проблема. Это очень глупо, когда я добавляю пространство имен с System. Я пытаюсь удалить все ссылки, но это не решено. Я использую "global :: System.ComponentModel", он также работает. Когда я удаляю свое пространство имен, эта проблема была решена.

Ответ 13

При использовании .NET Core или .NET Standard

Использование:

Управление пакетами NuGet..

Use Manage NuGet Packages

вместо:

Add Reference...

Don't use Add Reference

Ответ 14

У меня была такая же проблема, я решил эту проблему следующим образом.

Щелкните правой кнопкой мыши на странице, выберите "Свойства". в операции сборки выберите "Содержимое".

Надеюсь, что это решение может вам помочь.