Ссылка на 2 разных версии log4net в одном решении

Я использую NHibernate 2.1.2.400, который ссылается на log4net 1.2.10.0. В том же проекте я также использую простой учетный SDK, к сожалению, он все еще использует log4net 1.2.9.0.

Поэтому я могу заставить NHibernate работать, если ссылаюсь на log4net 1.2.10.0, но simpleSDK не работает. И наоборот…

Я предполагаю, что большинство проблем связано с тем, что log4net изменил свой код сборки. Я попытался использовать redirect привязки без успеха: у 2 DLL нет одинакового ключа.

Я рассматриваю возможность перекомпиляции NHibernate для использования log4net 1.2.9.0, но мне кажется, что это неправильно, и я чувствую, что Simply Accounting не будет обновлять свой SDK, чтобы использовать log4net 1.2.10.0 в ближайшее время.

Каков наилучший способ справиться с этим? Можно ли вообще разрешить?

Я нашел решение, используя этот ответ на аналогичный вопрос

Вы создаете 2 папки в своем проекте по одному для каждой версии log4net. Поместите каждый log4net.dll в соответствующую папку, добавив файл в решение (а не ссылку на ссылку). Вы можете установить копию для вывода свойства каталога для копирования всегда, чтобы она автоматически копировалась в выходную папку при ее создании.

Затем вы модифицируете файл app.config, добавив что-то вроде этого:

                   

вы можете получить токен открытого ключа сборки, используя sn -T [assemblyName]

Вы можете добавить исключение в реестр. Просто добавьте эти ключи:

 HKEY_LOCAL_MACHINE\Software\Microsoft\StrongName\Verification\log4net,681549d62126b7b8 HKEY_LOCAL_MACHINE\Software\Microsoft\StrongName\Verification\log4net,1b44e1d426115821 HKEY_LOCAL_MACHINE\Software\Microsoft\StrongName\Verification\log4net,669e0ddf0bb1aa2a 

Это сделает проверку пропусков времени выполнения .net для перечисленных сборок. Теоретически это проблема безопасности, но так как закрытый ключ находится в открытом доступе, это вряд ли повлияет.

Если переадресация привязки не работает, и простой учетный SDK является закрытым исходным кодом, возможным решением является перекомпиляция NHibernate для использования log4net 1.2.9.0.

  • Есть ли веские причины не использовать ОРМ?
  • Идентификация прокси-classов NHibernate
  • Как удалить дочерний объект в NHibernate?
  • Синтаксис для определения фильтра NHibernate с Fluent Nhibernate?
  • Минимальный и правильный способ сопоставления «один ко многим» с NHibernate
  • Как вы сопоставляете enum как значение int с белым NHibernate?
  • Как ускорить объединение нагрузки без дублирования в NHibernate?
  • Подсоническое Vs NHibernate
  • nHibernate-сопоставление для пользовательских типов
  • Nhibernate: как отображать отношения «многие ко многим» с отношениями «один ко многим»?
  • Борьба с декартовым продуктом (x-join) при использовании NHibernate 3.0.0
  • Давайте будем гением компьютера.