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

时间:2015-09-09 16:48:02

标签: c# visual-studio-2015 asp.net-core

导致它的任何地方引用类型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?

2 个答案:

答案 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":  ""
       }
     }
}