Свободный NHibernate не работает с развернутым приложением, но работает в Visual Studio - PullRequest
0 голосов
/ 31 января 2012

Проект, над которым я работаю, использует Fluent Nhibernate и NHibernate для подключения наших приложений к нашим базам данных.

Это одно приложение прекрасно работает в Visual Studio в «Release Mode» или «Debug Mode», но как только вы идете и устанавливаете приложение через MSI-файл, мы получаем эту ошибку:

"Инициализатор типа для« NHibernate.Cfg.Configuration »бросил исключение "

Обычно, когда мы получаем эту ошибку, это происходит из-за неправильного отображения или, может быть, строки подключения, но здесь это не так. Как я уже упоминал выше, проект отлично работает в visual studio, но не в установленной версии. .Dll являются одинаковыми версиями во всех случаях.

Это действительно загоняет меня в тупик, и я надеюсь, что у кого-то есть какие-либо идеи или он уже сталкивался с этой проблемой.

Спасибо и дайте мне знать, если вам нужны какие-либо данные от моего конца.

Обновление:

На самом деле удалось запустить, подключившись к процессу (я установил отладочную версию). Так что я смог увидеть внутреннее исключение:

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

Мы используем отчеты NHibernate и Crystal для vs2010 в нашем приложении, и в проекте установки есть две ссылки на log4net. Оба v1.2.10, но оба имеют токены разного открытого ключа.

Мне кажется, я решил это.

Как я уже говорил, проект будет работать в visual studio, но не после его установки. Итак, я заметил сегодня утром, что в моей папке обнаруженных зависимостей было два объекта «log4net.dll». Оба log4net.dll были одной и той же версии "1.2.10", но оба использовали разные токены открытого ключа. Это показалось мне очень странным. У меня была та же версия, но у обоих были разные ключи шифрования.

В любом случае я исключил один из двух dll и снова установил проект, и теперь он запущен. Я надеюсь, что это ничего не затронет. Так что это не совсем решено, но сейчас это работает, и это то, что мне было нужно.

Два ключа для справки: 692FBEA5521E1304 1B44E1D426115821

Спасибо NOtherDev и Shane Coutrille за ваш вклад. Думаю, я не сделаю это ответом на вопрос, так как это не идеальное решение.

Ответы [ 2 ]

1 голос
/ 24 февраля 2014

У меня была та же проблема, но я смог ее решить, выполнив следующие действия: * Удаление всех ссылок на Nhibernate и беглых NHibernate и iesiCollection и т. Д. * Добавьте новую ссылку на FluentNHibernate из NuGate в Visual Studio 2012, он автоматически добавит все свои зависимости, такие как NHibernate и т. Д. * Таким образом, сборки не будут конфликтовать.

0 голосов
/ 01 февраля 2012

Открытый ключ был изменен между 1.2.9 и 1.2.10 (и на самом деле 1.2.11 имеет ДВА ключа). Вы уверены, что у вас нет 1.2.9 и 1.2.10?Если они оба .10, то, возможно, кто-то вручную построил 1.2.10, используя старый ключ, из соображений сопоставимости.

Единственное решение, которое мы нашли для этой проблемы, - это найти версии сторонних инструментов, которыесогласуйте, какую версию открытого ключа log4net использовать.До сих пор у нас была только эта проблема с Windsor 3 (который, похоже, использует новый открытый ключ 1.2.11), но я ожидаю, что эта проблема станет распространенной, поскольку мы переходим через период, когда некоторые проекты обновляются до 1.2.11 (новый ключ)и другие все еще используют 1.2.9 или 1.2.10 или 1.2.11 старый ключ.

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