Как перекомпилировать библиотеку Sharp Architecture для использования NHIbernate 2.1.0.4000 вместо 2.1.0.3001 - PullRequest
1 голос
/ 31 августа 2009

Я обновил решение Sharp Architecture (SharpArchitecture_1.0_RTM_build_486) (моя локальная копия) и сослался на NHibernate 2.1.0.4000 вместо NHibernate 2.1.0.3001 dll. Я также обновил все другие ссылки, связанные с NHibernate в решении Sharp Architecture.

Мне удалось перестроить архитектуру Sharp и пройти все тесты с использованием NHibernate версии 2.1.0.4000. Я использовал скрипт сборки build.

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

Эта ошибка выдается в методе NHibernateSession.Init. Вызывающая сборка - SharpArch.Data.

Помимо перекомпиляции Sharp Architecture с новыми dll, нужно ли что-то еще сделать? Архитектура Sharp строго соответствует типу NHibernate 2.1.0.3001.

Причина, по которой я это делаю, заключается в том, что я хочу включить NHibernate.Cache в свое приложение. NHibernate.Cache скомпилирован для NHibernate 2.1.0.4000 (NHibernate-2.1.0.GA-bin)

Ответы [ 4 ]

5 голосов
/ 02 сентября 2009

Добавьте следующее в ваш файл web.config перед открытием тега system-web.

 <runtime>
   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
       <assemblyIdentity name="NHibernate" publicKeyToken="AA95F207798DFDB4" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-2.1.0.3001" newVersion="2.1.0.4000"/>
   </dependentAssembly>
 </runtime>

Это должно решить проблему.

1 голос
/ 08 сентября 2009

Аналогичный вопрос был задан в группе s # и Томом Кабански

Существуют изменения имени, которые необходимо внести как в исходный исходный код S # -Arch, так что вам также придется пересобрать его (не только ваше собственное решение, построенное на платформе).

На момент написания статьи этих изменений еще не было в багажнике, так что, возможно, стоит подождать, если вы действительно не в отчаянии?

0 голосов
/ 09 ноября 2009

newVersion="2.1.0.4000" должно быть newVersion="2.1.1.4000"

0 голосов
/ 01 сентября 2009

Попробуйте найти и удалить все версии DLL 2.1.0.3001 с вашего ПК (включая версии DLL в GAC), а затем перекомпилировать / перезапустить. Надеемся, что вы получите сообщение об ошибке от того, что пыталось сослаться на эту версию DLL, и вы можете обновить эту ссылку, чтобы использовать более новую версию DLL 2.1.0.400.

...