问题是如何解决我的项目升级到MVC4和EF5的程序集版本之间的冲突?
问题在于我的控制器和模型可以包含System.Data.Objects,但现在是我的视图。
我正在使用MVC 4,我的项目已从MVC 3升级。
实体框架是第5版。
我有一个能够使用System.Data.Objects中的objectcontext的控制器。
我的用法: 使用System.Data.Objects; 使用System.Data.Entity;
当我尝试在视图表单System.Data.Objects中包含using时,我得到:
CS0234:命名空间“System.Data”中不存在类型或命名空间名称“Objects”(您是否缺少程序集引用?)
我的目标是.net 4.5
我的构建显示以下消息: C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1561,5):警告MSB3247:发现同一依赖程序集的不同版本之间存在冲突。
答案 0 :(得分:28)
您可以在诊断模式下构建解决方案,以获取有关错误的更多详细信息。
打开VS Options对话框(Tools> Options),导航到“Projects and Solutions”节点,然后选择“Build and Run”。将MS Build项目构建输出详细程度更改为Diagnostic。
看看here。
答案 1 :(得分:3)
如果查看构建消息,它会指出.net框架的4.0版本被引用...项目文件或web / app.config中是否有设置指定.net框架的冲突版本?
你熟悉fuslog吗?您可以将其设置为记录.net在运行应用程序时正在执行的所有程序集绑定。然后,您应该能够看到有关什么时候绑定的详细信息。如果你仍然无法搞清楚,你可以随时在web.config中对该.dll进行绑定重定向。
http://msdn.microsoft.com/en-us/library/eftw1fys.aspx - 绑定重定向
http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.71).aspx - 融合日志查看器
设置融合记录器并查看输出结果。如果您没有得到答案,请尝试绑定重定向(这将至少为您提供临时解决方案)。
答案 2 :(得分:0)
在我发布的目录中,有一个名为aspnet_client的文件夹。我移动它(而不是删除它),重新发布,它工作。我不确定为什么那个文件夹决定给我带来麻烦。