2012-03-21 41 views
3

..但不是k.i.s.s.i.n.gNInject和NHibernate,坐在树上

我想用NHibernate的NInject。通过的NuGet我使用

  • NHibernate的v3.1.0.4000
  • NHibernate.Castle v3.1.0.4000
  • NHibernate.Linq 1.0
  • FluentNHibernate v1.2..0.712
  • NInject v2.2.1.4

当我试图解决通过NInject类我得到以下错误:

无法加载文件或程序集“NHibernate的,版本= 2.1.2.4000文化=中性公钥= aa95f207798dfdb4”或它的一个依赖。定位的程序集清单定义与程序集引用不匹配。 (异常来自HRESULT:0x80131040)

我已经中的app.config以下

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" /> 
    <bindingRedirect oldVersion="2.1.0.4000-2.1.2.4000" newVersion="3.1.0.4000" /> 
    </dependentAssembly> 
</assemblyBinding> 

我注意到,下载NInject包中包含\包在以下\ Ninject.2.2.1.4 \ lib中

  • .. \ net35客户端
  • .. \ net35 - 全
  • .. \ net40客户端
  • .. \ NET4 0-Full

当我使用NuGet来管理特定库的软件包时,上面哪个版本被包含在内?这是一个问题,可以通过手动添加对正确的Ninject DLL的引用来解决?

TIA

+3

降NHibernate.Linq,你用NH3它有它自己的LINQ提供程序。 – Phill 2012-03-21 11:02:42

+2

+1在标题一棵树使用坐。 – 2012-03-21 11:56:50

+0

谢谢Phill。我已经删除NH.Linq和更换我的session.Query session.Linq呼叫我的仓库类。但是,我们的存储库基础扩展了NHibernateContext。 NH3中的NHibernateContext在哪里?它被什么取代了? – 2012-03-21 14:09:36

回答

3

NuGet根据项目类型决定使用哪个版本。例如。是你正在编写.NET客户端轮廓组件则反而会加重net40客户端

参考您可以参考任何你喜欢的手工装配。但通常NuGet已经选择了正确的版本。

2

跌落参考NH.Linq解决问题,因为菲尔建议

+1

对不起,反应迟缓,很高兴它解决您的问题。我不知道NH背景下,我没有必要对NH3延长除了用户类型。 – Phill 2012-03-22 23:18:44