NInject和NHibernate,坐在树上

时间:2012-03-21 10:33:50

标签: nhibernate ninject

..但不是k.i.s.s.i.n.g

我正在尝试将NINject与NHibernate一起使用。通过NuGet我正在使用

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

当我尝试通过NInject解析一个类时,我收到以下错误:

无法加载文件或程序集'NHibernate,Version = 2.1.2.4000,Culture = neutral,PublicKeyToken = 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包在\ packages \ Ninject.2.2.1.4 \ lib

下包含以下内容
  • .. \ net35客户端
  • .. \ net35 - 全
  • .. \ net40客户端
  • .. \ net40 - 全

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

TIA

2 个答案:

答案 0 :(得分:3)

NuGet根据项目类型决定使用哪个版本。例如。您正在编写.NET客户端配置文件程序集,然后它将添加对net40-Client

的引用

您可以手动引用任何您喜欢的程序集。但通常NuGet已经选择了正确的版本。

答案 1 :(得分:2)

删除对NH.Linq的引用解决了Phill建议的问题