虽然我添加了Nuget软件包System.ComponentModel.Annotations
,但我收到了错误
类型或名称空间名称'DataAnnotations'在名称空间'System.ComponentModel'中不存在
发生的事情是,我从一个书本样本中开放了一个旧的ASP.NET Core 1.0项目,并对其进行了VS17升级。然后当然,我从VS17的NuGet依赖项中收到了很多警告。因此,我将项目转换为Core 2.1,并更新了所有NuGet依赖项。
但是现在它抱怨这些属性。
有什么想法吗?
答案 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的一部分(您将在第二次迁移中将其包括在内) ),如下面的依赖性列表所示:
答案 1 :(得分:0)
类型或名称空间名称'DataAnnotations'在名称空间'System.ComponentModel'中不存在
首先,您会注意到有关软件包System.ComponentModel.Annotations
的描述:
没有可以使用的直接命名空间System.ComponentModel.Annotations
。因此,尽管我们安装了System.ComponentModel.Annotations
Nuget软件包,然后使用了System.ComponentModel.DataAnnotations
名称空间。对于像我这样悬而未决的命名空间更长的人,要澄清一下。
因此我们不需要第一个名称空间语句。
第二,就像turao8所说的那样,Microsoft.AspNetCore.App包括它自己的数据注释版本,我们不需要再次使用nuget包添加它。
我创建了一个没有任何其他nuget包的测试样本,它运行良好:
要解决此问题,您可以创建一个新的.net core 2.1项目,然后将代码复制到新项目中,然后根据需要添加引用,毕竟旧的.net core 1.0
和{{1} }仍然有很多差异。
希望这会有所帮助。
答案 2 :(得分:0)
好的,因此在VisualStudio完成转换后,可以在项目根dotnet restore
的命令中运行此问题。
这解决了该问题,而无需转换为.NET Core 2.0或更高版本。
答案 3 :(得分:0)