【问题标题】:Solrnet, StructureMap and NHibernateSolrnet、StructureMap 和 NHibernate
【发布时间】:2011-10-12 20:47:16
【问题描述】:

我在集成我们公司构建的在后端使用 Solrnet 的库时遇到问题。我们还有许多其他库,其中一个使用 NHibernate 作为数据库。一切正常,图书馆取回数据。

当我们添加对这个使用 Solrnet 的新库的引用时,事情开始变得很糟糕。我们运行应用程序时发生的第一个错误。当应用程序使用 NHibernate 为库运行 StructureMap 注册表时,注册表会爆炸,因为 NHibernate 无法加载 Castle.Core 程序集(在添加引用之前没有导致任何问题)。如果我们随后确保 Castle.Core 存在,NHibernate 就会在尝试加载 Castle.Windsor 时崩溃,这也是它之前不需要的。

有什么想法吗?正如我所说,如果我们删除使用 Solrnet 的新库,使用 NHibernate 的库很好,但是一旦我们引用它,事情就会开始出错。使用 Solrnet 的库还使用 StructureMap、FWIW 配置 Solrnet。

编辑:这些是混合中各种程序集的版本。 结构图 - 2.6.1.0 流畅的 NHibernate - 1.0.0.0 NHibernate - 2.1.2.4000 Solrnet - 0.3.1.0 Castle.Core(与 NH 一起提供)- 1.1.0.0

更新:它开始看起来像 Solrnet 是试图加载 Castle.Windsor 的那个。我不确定为什么我们给了它一个 StructureMap 配置。它的存在就足以把事情搞砸。即使没有依赖于 Solrnet 的程序集,它的存在似乎与 NHibernate 配置相混淆。

【问题讨论】:

  • 看起来版本不匹配。你在使用 NuGet 包吗?你用的是什么版本的 SolrNet、NHibernate、StructureMap?
  • NHibernate 在尝试加载 Castle.Windsor 时崩溃了? NHibernate 从未使用过 Castle.Windsor ...
  • 如果您发布一个包含所有这些 DLL 的最小解决方案并重现该问题,我会看看。

标签: nhibernate structuremap solrnet


【解决方案1】:

好的,我想出了如何阻止这个错误。我们使用的是合并的 Solrnet.dll,其中包括用于连接到其他 Ioc 容器以及 NH 集成的所有类型。我转而使用未合并的二进制文件,它将其他 Ioc 保存在单独的程序集中,我们只包含基本的 Solrnet.dll 和 StructureMap.Solrnet.dll,这主要解决了问题。我仍然必须确保包含 Microsoft.Patterns.ServiceLocater,因为基础 Solrnet.dll 仍然公开了这一点。不理想,因为我们没有使用它,但比需要一堆其他程序集更好。

【讨论】:

  • 这没有多大意义...如果是这种情况,您还需要引用 Ninject.dll、Autofac.dll 和 Microsoft.Practices.Unity.dll,但您只提到城堡.温莎。我在 Windsor 项目中使用合并后的 SolrNet.dll,而不必引用 Autofac 等其他库。
  • 同样,如果您可以在演示项目中重现您的问题,这将很有帮助,这样我们就可以确定 SolrNet 是否真的存在问题,然后修复它。谢谢。
  • 在我看来,Castle.Windsor Solrnet 是针对强命名的。也许其他人不是。无论如何,我们的问题已经解决了,我真的没有时间做一个演示项目。我们遇到了 MS.Patterns.ServiceLocator 不存在的类似问题。我的机器上安装了 EntLib5,所以我认为它在 GAC 中找到了该程序集。这里的其他人没有,所以当它丢失时它在他们的机器上爆炸了。抱歉,我无法提供更多帮助。
  • 你现在可能没有时间,但如果真的有问题而我们不解决它,它再次跳到你身上,我可以保证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多