我刚刚在我的新解决方案中添加了一个类库项目,并且只给出了新类库类型的选项。我创建了我的域类,它使用System.Component.DataAnnotations中的EF数据注释。这些类本身没有错误,但项目不会构建。我收到了这些错误。
严重级代码说明项目文件行 错误CS0234命名空间'System.ComponentModel'中不存在类型或命名空间名称'DataAnnotations'(您是否缺少程序集引用?)TraderToolkit2016.DomainClasses..NET Platform 5.4 C:\ Users \ Thomas Donino \ Documents \ GitHubVisualStudio \ TraderToolkit2016 \ TraderToolkit2016.DomainClasses \ AppClasses \ DailyClose.cs
我引用了程序集。为什么我会收到这些错误?
这是我的project.json文件,从VS右键单击自动添加DataAnnotations。
{
"version": "1.0.0-*",
"description": "TraderToolkit2016.DomainClasses Class Library",
"authors": [ "Thino" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"net451": {
"frameworkAssemblies": {
"System.ComponentModel.DataAnnotations": "4.0.0.0"
}
},
"dotnet5.4": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516"
}
}
}
}
答案 0 :(得分:1)
这意味着您正在使您的项目与2个平台兼容。一个是net451,另一个是dotnet5.4。
"frameworks": {
"net451": {
"frameworkAssemblies": {
"System.ComponentModel.DataAnnotations": "4.0.0.0"
}
},
这意味着您已将System.ComponentModel.DataAnnotations的引用仅添加到net451目标。这就是你得到以下错误的原因:
are you missing an assembly reference?) TraderToolkit2016.DomainClasses..NET Platform 5.4
请注意错误消息末尾的5.4。
现在解决方案是删除dotnet5.4,如果你不需要它,或者也将System.ComponentModel.DataAnnotations的引用添加到dotnet5.4。您可以通过简单地安装此nuget包来实现:
https://www.nuget.org/packages/System.ComponentModel.Annotations/4.0.11-beta-23516
或者只是修改文件,使其看起来像这样:
"dotnet5.4": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516"
"System.ComponentModel.Annotations": "4.0.11-beta-23516"
}
}