Сторонние библиотеки относятся к различным версиям log4net.dll

У меня есть две разные библиотеки, важные для моего приложения, которые зависят от разных версий log4net.dll. Попытка обе библиотеки dll в моей папке bin дать обычную ошибку, когда часть третьей части, которую я использую, вызывается:

Не удалось загрузить файл или сборку 'log4net, Version = 1.2.10.0, Culture = neutral, PublicKeyToken = 1b44e1d426115821' или одну из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Есть ли способ, которым приложение может ссылаться на обе библиотеки dll? Третья сторона - это контейнер Windsor IOC и API Paypal, которые являются критическими для этого приложения.

Ответ 1

У этого вопроса могут быть ответы, которые помогут вам.

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

В качестве альтернативы, если это средство ведения журнала Windsor, зависящее от log4net, а не от самого Windsor, вы можете написать свою собственную абстракцию log4net на основе версии log4net, используемой API PayPal, и попросить Windsor использовать это вместо этого.

Вот расположение абстракции log4net в репозитории исходного кода Castle: https://github.com/castleproject/Castle.Core/tree/master/src/Castle.Services.Logging.log4netIntegration

Я не использую Castle, поэтому я не могу сказать вам, как настроить его, чтобы ссылаться на свою собственную абстракцию log4net, но я уверен, что это не слишком сложно (предполагая, что это возможно).

Вот ссылка на другое сообщение здесь, в SO, которое описывает настройку Castle с log4net. В нем также кратко говорится о написании специального журнала ведения журнала:

Регистрация с помощью Castle.Facilities.Logging и log4net

Удачи!

Ответ 2

Еще один маршрут, я думаю, но я никогда не делал этого сам, помещал их в GAC.

Я считаю, что у вас могут быть разные версии одной и той же DLL в GAC, и вы должны быть в порядке.

Но я тоже могу быть сумасшедшим:)