【发布时间】:2012-03-21 10:33:50
【问题描述】:
.. 但不是 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,版本=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
【问题讨论】:
-
删除 NHibernate.Linq,您使用的是 NH3,它有自己的 LINQ 提供程序。
-
+1 用于在标题中使用坐在树上。
-
谢谢菲尔。我已经删除了 NH.Linq 并在我的存储库类中用 session.Query 替换了我的 session.Linq 调用。但是,我们的存储库库扩展了 NHibernateContext。 NH3 中的 NHibernateContext 在哪里,或者它被什么取代了?
标签: nhibernate ninject