3

程序集 'dllname.Moles, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null' 使用 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, 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=null
  • itextsharp,版本=5.1.2.0,文化=中性,PublicKeyToken=8354ae6d2174ddca
  • Microsoft.ExtendedReflection,版本=0.94.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35
  • Microsoft.Moles.Framework,版本=0.94.0.0,文化=中性,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,版本=2.0.0.0,文化=中性,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 的程序集的“moles 程序集”时必须包含它。

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

我已经删除了项目中的痣程序集,重建并重新创建了痣程序集:同样的错误。

想法在哪里搜索问题?

4

2 回答 2

0

我在一个项目中遇到了类似的错误,所以我删除了对 MVC 的引用并重新添加了对 MVC 3 的引用,然后我就可以编译了。

查看 .csproj 文件,在它读取之前:

<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <Private>False</Private>
</Reference>

并在重新添加参考后:

<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

所以看起来标签<SpecificVersion>False</SpecificVersion>让项目寻找对新版本 MVC 的引用,这导致了版本冲突。

于 2013-01-14T17:27:13.847 回答
0

当你安装 VS 2012 时,它在盒子上安装了 MVC4。MVC 3 不能与 MVC 4 很好地配合 SxS。您需要更新 MVC 3 应用程序才能在安装了 MVC 4 的机器上工作。
这记录在 MVC 4.0 的发行说明中。请阅读部分安装 ASP.NET MVC 4 中断 ASP.NET MVC 3 RTM 应用程序。按照 setps“必需的更新”。

于 2012-10-02T22:16:05.300 回答