如何在ASP.NET 5中修复CS0433错误?

引导它的任何地方的代码行引用类型System.Collections.Generic.Dictionary无论是作为变量类型,还是在使用声明中。

这个使用声明运行良好,使我的System.Collections.Generic.Dictionary在我class级的100个地方编写System.Collections.Generic.Dictionary更不令人厌恶。 取出使用声明并不能解决我的问题,只是将它移动到我的方法参数中使用字典类型的地方。

完整错误文字:

 CS0433 The type 'Dictionary' 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模板的项目中出现此错误,该项目具有一些引用generics集合类型的模型和控制器类。 project.json设置如下:

  "frameworks": { "dnx451": { } } 

如果您只是说它出现样本问题:

  "frameworks": { "dotnet": { } } 
  • 导致它的代码行是一个使用声明,一个类型别名的排序,在我尝试将beta6项目转换为beta7之前一直运行良好。

  • 转换继续进行,直到我尝试使用JsonDictionary别名添加这些,然后编译中断。

我搜索过这个错误代码,它在ASP.NET中有着漫长而无意义的历史。

是什么导致这个问题? 我怎么能修复它,因为我不能从我的项目中删除mscorlib,也不能删除System.Collections?

在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它将解决问题。

您需要将其指定为框架依赖项。

 "frameworks": { "dnx451": { "frameworkAssemblies": { "System.Collections": "" } } }