Конфликты NHibernate и Виндзорской сборки - PullRequest
3 голосов
/ 27 февраля 2010

У меня проблема с совместной работой Hibernate и Windsor. Мои настройки:

У меня есть два проекта
-DomainModel
-MVCApp

Я скачал NHibernate 2.1.2 и Windsor 2.1.1
Я добавил следующие ссылки на DomainModel из папки required_Bins загрузки NHibernate -
Antlr3, Iese, log4net и NHibernate 2.1.2.4
Я также добавил ссылки в DomainModel в файлы для Lazy_loading, включая

Castle.Core - 1.1.0.0
Castle.DynamicProxy2 - 2.1.0.0
NHibernate.ByteCode.Castle - 2.1.2.4

MVCApp имеет следующие ссылки: < бр />
Castle.Core - 1.2.0.6623
Castle.Microkernel - 2.1.0.6655
Castle.Windsor - 2.1.0.6655
Castle.DynamicProxy2 - 2.2.0.6628

При запуске приложения я получаю сообщение об ошибке:

Не удалось загрузить файл или сборку 'Castle.DynamicProxy2, версия = 2.1.0.0,
Вызывающая сборка: NHibernate.ByteCode.Castle, версия = 2.1.2.4000

Папка MVC bin имеет версию Castle.DynamicProxy2 - 2.2.0.6628, следовательно, ошибка после запроса более старой версии.

Как мне заставить это работать? Что я пропускаю или включаю неправильно? Пожалуйста, помогите .. Спасибо.

Ответы [ 4 ]

3 голосов
/ 27 февраля 2010

Откуда вы взяли свой NHibernate.ByteCode.Castle?

Я полагаю, что ActiveRecord 2.1 будет построен для последней стабильной версии DynamicProxy2.

В противном случае, делайте то, что предлагает Лахлан Роше.

2 голосов
/ 27 февраля 2010

Вы можете получить исходный код NHibernate.ByteCode.Castle и создать версию, которая использует версию 2.2.0.6628 из Castle.DynamicProxy2. Ветвь 2.1.x здесь здесь в SVN.

Также возможно, что перенаправление привязки сборки может работать. Это может не получиться из-за разницы API между 2.1 и 2.2 в Castle.DynamicProxy2.
Вы также обновите ссылки на сборки в своем проекте MVCApp.

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="Castle.DynamicProxy2" publicKeyToken="407dd0808d44fbdc"/>
            <bindingRedirect oldVersion="2.1.0.0" newVersion="2.2.0.6628"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>
0 голосов
/ 09 ноября 2010

У меня была такая же проблема ... и я решил ее, изменив поставщика байт-кода NHibernate .
Когда я начал использовать NHibernate, я выбрал поставщика Castle Bytecode без какой-либо конкретной причины.

Поскольку мне все равно, какой провайдер байт-кода я на самом деле использую, я просто изменил его (в моем случае это NHibernate.ByteCode.LinFu).
Поэтому NHibernate больше не нуждается в ссылках на Castle, и я могу использовать любую версию Windsor, какую захочу.

0 голосов
/ 05 ноября 2010

У меня была эта проблема, возможно, вам придется изменить «Целевую платформу» на вкладке приложения в свойствах вашего проекта с «.NET Framework 4 Client Profile» на «.NET Framework 4»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...