我创建了一个项目,并使用NuGet安装Nhibernate.Search。在安装过程中,NuGet还为我下载了Lucene.Net。
使用NuGet,我下载并安装了以下软件包
所有依赖项都由NuGet管理。但当我按照密码运行时
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Search.Event;
using NHibernate.Search.Store;
namespace Test {
public class NHibernateSearchSessionProvider {
private static ISessionFactory sessionFactory;
private static object syncRoot = new object();
public static ISessionFactory SessionFactory {
get {
lock (syncRoot) {
if (sessionFactory == null) {
sessionFactory = createSessionFactory();
}
return sessionFactory;
}
}
}
private static ISessionFactory createSessionFactory() {
var config = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey("HomeDB"))
)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserAccountMap>())
.BuildConfiguration();
// Add NHibernate.Search listeners
config.SetListener(NHibernate.Event.ListenerType.PostUpdate, new FullTextIndexEventListener());
config.SetProperty("hibernate.search.default.indexBase", "~/LuceneIndex");
return config.BuildSessionFactory();
}
}
}异常消息Could not load file or assembly 'Lucene.Net, Version=2.9.2.2, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
看起来这个版本的NHibernate.Search仍然在使用Lucene.Net 2.9.2.2,而不是新的版本。我总是可以手动修复所有的依赖项,但是我更喜欢使用NuGet。
谁有经验,我该怎么做才能使代码工作?
谢谢你的建议
发布于 2012-08-28 06:46:32
这看起来像是NHibernate.Search nuget包装的配置错误,它声明它支持Lucene.Net 2.9.2.2和更高版本。尝试修改您的packages.config文件以使用2.9.2.2版本的Lucene (而不是2.9.4.1),nuget将在包恢复期间使用指定的版本。
您可能需要清除您的文件夹,以删除“旧”2.9.4.1程序集。
发布于 2016-11-02 13:35:35
使用Install NHibernate.Search.MB,我试图修复它,但它没有。Nhibernate.Search已经很老了
https://stackoverflow.com/questions/12151751
复制相似问题