类型或名称空间名称“ DataAnnotations”在名称空间“ System.ComponentModel”中不存在

时间:2018-10-13 20:05:01

标签: asp.net-core visual-studio-2017 nuget nuget-package

虽然我添加了Nuget软件包System.ComponentModel.Annotations,但我收到了错误

  

类型或名称空间名称'DataAnnotations'在名称空间'System.ComponentModel'中不存在

发生的事情是,我从一个书本样本中开放了一个旧的ASP.NET Core 1.0项目,并对其进行了VS17升级。然后当然,我从VS17的NuGet依赖项中收到了很多警告。因此,我将项目转换为Core 2.1,并更新了所有NuGet依赖项。

但是现在它抱怨这些属性。

有什么想法吗?

enter image description here

4 个答案:

答案 0 :(得分:0)

从1.0更新到2.x并不像更新nuget包那么简单。由于框架中的重大更改,您可能需要更改代码。据我所知,您将需要升级应用from 1.0->2.0。然后,您需要升级from 2.0->2.1

完成此操作后,它将自动处理数据注释问题,因为ASP.NET Core具有自己的version of data annotations,它是Microsoft.AspNetCore.App的一部分(您将在第二次迁移中将其包括在内) ),如下面的依赖性列表所示:

enter image description here

答案 1 :(得分:0)

  

类型或名称空间名称'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和{{1} }仍然有很多差异。

希望这会有所帮助。

答案 2 :(得分:0)

好的,因此在VisualStudio完成转换后,可以在项目根dotnet restore的命令中运行此问题。

这解决了该问题,而无需转换为.NET Core 2.0或更高版本。

答案 3 :(得分:0)