程序集``dllname.Moles,版本= 1.0.2.0.0,文化=中性,PublicKeyToken =空''使用'System.Web.Mvc,版本= 4.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35'具有比引用程序集更高的版本'System.Web.Mvc,版本= 3.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35'

一个针对.NET4.0框架的MVC3解决方案以及一个使用Moles框架的单元测试项目,在Visual Studio 2010中可以完美地工作。此计算机上未安装MVC4。

安装Visual Studio 2012(并通过.NET4.5强制替换.NET4.0和安装MVC4)之后,unittest项目在VS2010中不再编译,它抱怨给定的错误。

在检查程序集时,我们可以有效地看到它引用了MVC4和MVC3?

  • BoneSoft.CSS,版本= 1.0.0.0,文化=中性,PublicKeyToken =空
  • itextsharp,版本= 5.1.2.0,文化=中性,PublicKeyToken = 8354ae6d2174ddca
  • Microsoft.ExtendedReflection,版本= 0.94.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35
  • Microsoft.Moles.Framework,Version = 0.94.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35
  • mscorlib,版本= 2.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089
  • mscorlib,版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089
  • NHibernate.Validator,版本= 1.3.1.4000,文化=中性,PublicKeyToken = 70154e18752585bd
  • 系统,版本= 2.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089
  • 系统,版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089
  • System.Core,版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089
  • System.Data,版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089
  • System.Drawing,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a
  • System.Runtime.Caching,版本= 4.0.0.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a
  • System.Web,版本= 4.0.0.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a
  • System.Web.Mvc,版本= 3.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35
  • System.Web.Mvc,版本= 4.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35
  • System.Xml,版本= 2.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089

  • 整个解决方案中从未引用过MVC4,但Moles认为在生成引用MVC3的程序集的“摩尔程序集”时必须将其包括在内。

    我也有不引用MVC3的其他程序集的痣程序集,并且在编译时没有问题。

    我已经删除了项目中的痣装配,重建并重新创建了痣装配:相同的错误。

    在哪里寻找问题的想法?

    最佳答案

    当您安装VS 2012时,它在盒子上安装了MVC4。 MVC 3不能与MVC 4配合使用。SxS与MVC 4配合使用时,需要更新MVC 3应用程序才能在安装了MVC 4的计算机上使用。这在MVC 4.0的发行说明中已记录。请阅读Installing ASP.NET MVC 4 breaks ASP.NET MVC 3 RTM applications部分。按照setps“必需的更新”进行操作。

    10-08 19:56