Установите NHibernate 3.2 с NuGet - PullRequest
32 голосов
/ 16 апреля 2011

Я новичок в NHibernate и пытаюсь начать работать с ним, Fluent NHibernate и NHProf с использованием NuGet.После прочтения этой статьи (http://gurustop.net/blog/2011/03/13/nhibernate-3-1-0-on-nuget-important-details) кажется, что v3.1 не должен устанавливаться напрямую, однако для v3.2 такого предупреждения не появляется.

После успешной установки NHibernate 3.2 и NHProf с использованиемNuGet, я не могу установить Fluent NHibernate, так как он говорит, что «уже ссылается на более новую версию NHibernate».

Кроме того, при запуске приложения появляется следующая ошибка «Не удалось загрузить файл или сборку»NHibernate.ByteCode.Castle 'или одна из его зависимостей ". Следующая ссылка ( Не удалось загрузить файл или сборку в NHibernate ) предлагает установить ряд дополнительных сборок, чего я и хотел избежать, используяВо-первых, NuGet.

На этом этапе вам будет проще выполнить инструкции по установке и запуску NHForge, поскольку пакеты в NuGet не совместимы?

Ответы [ 5 ]

29 голосов
/ 27 мая 2011

NHibernate 3.2 поставляется с собственной прокси-фабрикой.Если вы используете файл конфигурации, вам просто нужно удалить свойство конфигурации proxyfactory.

Я считаю, что версия Fluent NHibernate, которую вы используете по умолчанию для использования NHibernate.ByteCode.Castle.В этом случае вам нужно будет переопределить этот параметр с помощью встроенной фабрики прокси NHibernate 3.2:

.ProxyFactoryFactory("NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate") 
11 голосов
/ 16 апреля 2011

В каждой версии Fluent NHibernate используется точная версия NHibernate (входит в пакет Fluent NHibernate) Вы должны удалить пакет NHibernate и добавить только Fluent NHibernate

6 голосов
/ 20 сентября 2011

Если вы используете консоль диспетчера пакетов Nuget вместо графического интерфейса для получения пакета (Install-Package FluentNHibernate), вы получите версию 1.3.0.717, совместимую с NHibernate 3.2 enter image description here

Я пытался и работает нормально для меня. Я уже ответил на это по этой ссылке: какая версия свободно используемого nhibernate совместима с nhibernate 3.2

3 голосов
/ 29 июля 2011

Я использую эту конструкцию в конфигурационном файле, чтобы FluentNhibernate работал с NHibernate 3.2

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.2.0.1001" newVersion="3.2.0.1001" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
0 голосов
/ 28 июня 2011

NHibernate 3.2 поставляется с собственной конфигурацией сопоставления (Conform).FluentNHibernate работает только с NHibernate 3.1, в результате этого вы не можете использовать 3.2 (у меня была такая же проблема).Таким образом, вам придется вручную загрузить 3.1 и указать, что, если NuGet не позволяет вам использовать 3.1 напрямую.

Другой вариант - удалить все ссылки на 3.2, а затем установить FluentNHibernate из NuGet, после чего средство разрешения зависимостей выйдет из строя.и автоматически включает NHibernate 3.1 для вас.

...