NInject и NHibernate, сидя на дереве - PullRequest
3 голосов
/ 21 марта 2012

.. но не целую

Я пытаюсь использовать NInject с NHibernate.Через NuGet я использую

  • NHibernate v3.1.0.4000
  • NHibernate.Castle v3.1.0.4000
  • NHibernate.Linq v1.0
  • FluentNHibernate v1.2..0.712
  • NInject v2.2.1.4

Когда я пытаюсь разрешить класс через NInject, я получаю следующую ошибку:

Не удалось загрузить файл или сборку 'NHibernate, Версия = 2.1.2.4000, Культура = Нейтральная, PublicKeyToken = aa95f207798dfdb4' или одна из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040)

У меня есть следующее в app.config

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" />
    <bindingRedirect oldVersion="2.1.0.4000-2.1.2.4000" newVersion="3.1.0.4000" />
  </dependentAssembly>
</assemblyBinding>

Я отмечаю, что загруженный пакет NInject содержит следующее в \ packages \ Ninject.2.2.1.4 \lib

  • .. \ net35-Client
  • .. \ net35-Full
  • .. \ net40-Client
  • .. \ net40-Полный

Когда я использую NuGet для управления пакетами для конкретной библиотеки, какая из вышеуказанных версий включена?Это проблема, которая может быть решена путем добавления ссылки на правильный файл Ninject вручную?

TIA

Ответы [ 2 ]

3 голосов
/ 21 марта 2012

NuGet решает, какая версия используется в зависимости от типа проекта.Например, вы пишете сборку профиля клиента .NET, а затем добавите ссылку на net40-Client

. Вы можете ссылаться на любую сборку, которая вам нравится, вручную.Но обычно NuGet уже выбирает правильную версию.

2 голосов
/ 22 марта 2012

Удаление ссылки на NH.Linq решило проблему, как предположил Фил

...