安装Unity.Mvc4,但无法获得正确版本的Microsoft.Practices.Unity

时间:2014-02-06 17:00:12

标签: asp.net-mvc unity-container nuget

我正在尝试安装Unity.Mvc4,但是收到此错误消息;

无法加载文件或程序集“Microsoft.Practices.Unity,Version = 2.1.505.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

我的Microsoft.Practices.Unity版本是3.0.0.0。为什么我想要旧版本?

2 个答案:

答案 0 :(得分:6)

Unity.Mvc4是一个社区项目,引用了旧版本的Unity。如果您想使用Unity.Mvc4,您可以从软件包管理器控制台获取较旧版本的Unity,您应该使用以下内容(有关详细信息,请参阅此post

Install-Package Microsoft.Practices.Unity -Version <press tab key for autocomplete>

从个人经验来看:如果您想要或需要使用较新版本的Unity(它在版本3中对MVC和Web API有很好的支持),您应该尝试摆脱Unity.Mvc4或Unity.WebApi等软件包。它们对于较旧的项目(Unity 3不是一个选择)很有用,但对于新项目,Unity通常需要你。

答案 1 :(得分:2)

我在Unity 3中遇到了类似的问题。我没有安装另一个版本的Unity,而是更改了web.config中的程序集绑定:

     <dependentAssembly>
    <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.5.0.0"/>
  </dependentAssembly>