我在整合我们公司在后端使用Solrnet构建的库时遇到了问题。我们有许多其他库,其中一个使用NHibernate作为数据库。一切正常,图书馆将数据恢复。
当我们添加对使用Solrnet的新库的引用时,事情开始变得不稳定。我们运行应用程序时发生的第一个错误。当应用程序使用NHibernate运行库的StructureMap注册表时,注册表会崩溃,因为NHibernate无法加载Castle.Core程序集(在添加引用之前没有导致任何问题丢失)。如果我们确保Castle.Core存在,那么NHibernate会尝试加载Castle.Windsor,这也是之前不再需要的。
有什么想法吗?正如我所说,如果我们删除使用Solrnet的新库,那么使用NHibernate的库就没问题了,但是一旦我们引用它就会出现问题。使用Solrnet的库也使用StructureMap,FWIW配置Solrnet。
编辑:这些是混合中各种组件的版本。 StructureMap - 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配置。
答案 0 :(得分:0)
好的,我想出了如何阻止这个错误。我们使用合并的Solrnet.dll,其中包括连接到其他Ioc容器以及NH集成的所有类型。我转而使用未合并的二进制文件,它将其他Ioc保存在单独的程序集中,我们只包括基本的Solrnet.dll和StructureMap.Solrnet.dll,它主要解决了这些问题。我仍然必须确保包含Microsoft.Patterns.ServiceLocater,因为基础Solrnet.dll仍然暴露这个。不理想,因为我们没有使用它,但比需要一堆其他组件更好。