1

プロジェクトを作成し、NuGet を使用して Nhibernate.Search をインストールしました。インストール中に、NuGet は Lucene.Net もダウンロードします。

NuGet では、次のパッケージをダウンロードしてインストールしました

  • FluentNHibernate.dll: 1.3.0733
  • NHibernate.dll: 3.3.1.4000
  • NHibernate.Search.dll: 2.0.2.4000
  • Lucene.Net.dll: 2.9.4.1

すべての依存関係は 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 を使用することを好みます。

コードを機能させるにはどうすればよいですか?

提案をありがとう

4

2 に答える 2

0

これはNHibernate.Search nuget パッケージの構成エラーのようで、 Lucene.Net 2.9.2.2 以降サポートしていると述べています。packages.configLucene の 2.9.2.2 バージョン (2.9.4.1 ではなく) を使用するようにファイルを変更してみてください。nuget は、パッケージの復元中に指定されたバージョンを使用します。

「古い」2.9.4.1 アセンブリを削除するには、おそらく bin-folder を一掃する必要があります。

于 2012-08-28T06:46:32.450 に答える
0

Install-Package NHibernate.Search.MB を使用して修正しようとしましたが、修正されませんでした。すでに Nhibernate.Search 非常に古い

于 2016-11-02T13:35:35.020 に答える