Подтвердить что ты не робот

Установите NHibernate 3.2 с помощью NuGet

Я новичок в 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 не кажутся совместимыми?

4b9b3361

Ответ 1

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

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

.ProxyFactoryFactory("NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate") 

Ответ 2

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

Ответ 3

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

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

Ответ 4

Я использую эту конструкцию в файле конфигурации, чтобы заставить 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>

Ответ 5

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

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