导致它的任何地方引用类型System.Collections.Generic.Dictionary
的代码行,无论是作为变量类型,还是在使用声明中。
这个使用声明工作得很好,使我的课程比在我班级的100个地方写System.Collections.Generic.Dictionary<string, object>
更不令人厌恶。取出使用声明并不能解决我的问题,它只是将它移动到我的方法参数中使用字典类型的地方。
完整错误文字:
CS0433 The type 'Dictionary<TKey, TValue>' exists in both
'System.Collections, Version=4.0.10.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a'
and
'mscorlib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089' ProjectName.DNX
使用DNX 1.0.0-beta7的基于ASP.NET 5 MVC 6模板的项目中出现此错误,该项目具有一些引用泛型集合类型的模型和控制器类。 project.json因此设置:
"frameworks": {
"dnx451": { }
}
如果您只是说:
,则会出现样本问题 "frameworks": {
"dotnet": { }
}
导致它的代码行是一个使用声明,一种类型的别名,在我尝试将beta6项目转换为beta7之前一直运行良好。
转换继续进行,直到我尝试使用JsonDictionary别名添加这些别名,然后编译中断。
我搜索过这个错误代码,它在ASP.NET中有着漫长而无意义的历史。
是什么导致了这个问题?我怎么能解决它,因为我不能从我的项目中删除mscorlib,也不能删除System.Collections?
答案 0 :(得分:2)
在beta6中,当您创建一个类库项目时,它将按照您使用“dotnet”发布的方式设置框架部分 但是如果你在beta7中创建一个新的类库项目,它会像这样设置:
"frameworks": {
"dnx451": { },
"dnxcore50": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23225",
"System.Collections": "4.0.11-beta-23225",
"System.Linq": "4.0.1-beta-23225",
"System.Runtime": "4.0.21-beta-23225",
"System.Threading": "4.0.11-beta-23225"
}
}
}
我相信如果您相应地更新项目json,它将解决问题。
答案 1 :(得分:1)
您需要将其指定为框架依赖项。
"frameworks": {
"dnx451": {
"frameworkAssemblies": {
"System.Collections": ""
}
}
}