Тип или имя пространства имен «DataAnnotations» не существует в пространстве имен «System.ComponentModel» - PullRequest
0 голосов
/ 13 октября 2018

При добавлении пакетов Nuget System.ComponentModel.Annotations Я получаю сообщение об ошибке

Тип или имя пространства имен «DataAnnotations» не существует в пространстве имен «System.ComponentModel»

Произошло то, что я открыл старый проект ASP.NET Core 1.0 из образца книги, а VS17 обновил его.Затем, конечно же, я получил много предупреждений от VS17 в зависимостях NuGet.Поэтому я преобразовал проект в Core 2.1 и обновил все зависимости NuGet.

Но теперь он жалуется на атрибуты.

Есть идеи?

enter image description here

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

имя типа или пространства имен «DataAnnotations» не существует в пространстве имен «System.ComponentModel»

Во-первых, вы можете заметить, что Описание о пакете System.ComponentModel.Annotations:

enter image description here

Нет прямого пространства имен System.ComponentModel.Annotations, которое мы можем использовать.Итак, хотя мы устанавливаем пакет System.ComponentModel.Annotations Nuget, а затем используем пространство имен System.ComponentModel.DataAnnotations.Уточнение для таких как я, которые дольше зависали в другом пространстве имен.

Так что нам не нужен первый оператор пространства имен.

Для второго, как сказал turao8, Microsoft.AspNetCore..App, включая собственную версию аннотаций данных, нам не нужно добавлять ее снова с пакетом nuget.

Я создал тестовый образец без какого-либо другого пакета nuget, он отлично работает:

enter image description here

Чтобы решить эту проблему, вы можете создать новый проект .net core 2.1, затем скопировать код в новый проект, а затем добавить ссылки по мере необходимости, после всех, старые .net core 1.0 и 2.1 все еще имеют много различий.

Надеюсь, это поможет.

0 голосов
/ 15 октября 2018

Хорошо, так что обход этой проблемы состоял в том, чтобы запустить команду root проекта dotnet restore после того, как VisualStudio выполнила его преобразование.

Это решило проблему без необходимости преобразования в .NET core 2.0или выше.

0 голосов
/ 15 октября 2018

Обновление с 1.0 до 2.x не так просто, как обновление пакетов nuget.Возможно, вам придется изменить свой код, так как в инфраструктуре произошли критические изменения.Насколько я могу судить, вам нужно обновить приложение с 1.0-> 2.0 .Затем вам нужно будет обновить с версии 2.0-> 2.1 .

. После того, как вы это сделаете, он должен автоматически обработать вашу проблему с аннотациями данных, потому что ASP.NET Core имеет свою собственную версию .аннотаций данных , являющихся частью Microsoft.AspNetCore.App (которые вы включите как часть второй миграции), как вы можете видеть в списке зависимостей ниже:

enter image description here

...