Dimple Kumar Sharma Ответов: 1

Такой как log4net конфликты версий


В настоящее время я использую log4net 1.2.10 для входа в свой проект. Теперь мне нужно обратиться к сборке, которая использует log4net 1.2.13 внутренне для ведения журнала. Теперь эта новая сборка вызывает исключение ("невозможно загрузить сборку 1.2.13";) во время запуска проекта.

поскольку есть многочисленные изменения в log4net 1.2.10 до 1.2.13, я просто не могу перенести свой код ведения журнала на 1.2.13. Таким образом, мне нужно иметь какое-то решение, где я мог бы сохранить свой код ведения журнала с помощью 1.2.10 и также использовать новую сборку, использующую log4net 1.2.13.

Любая помощь будет оценена по достоинству.

Это то, что я уже пробовал.

а) использовал две папки для хранения двух разных версий и установил кодовую базу против версии в теге времени выполнения webconfig. Но не повезло.

Что я уже пробовал:

использовал две разные папки для хранения двух разных версий log4net и установил кодовую базу против версии в теге времени выполнения webconfig. Но не повезло.

Rob Philpott

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

Перенаправление Side-by-side/assembly-это то, чего следует избегать без крайней необходимости.

1 Ответов

Рейтинг:
1

F-ES Sitecore

Вы можете изменить свой код, чтобы использовать последнюю версию (конечно, это не будет трудно? это всего лишь протоколирование). Или если сборки совместимы вы можете использовать перенаправление сборок чтобы ваш код загружал сборку 1.2.13 даже если она ссылается на более старую версию

Перенаправление Версий Сборки[^]

Однако, как я уже сказал, это будет работать только в том случае, если сборки будут обратно совместимы.

Третий вариант-использовать обе сборки. Это возможно, но неудобно. Возможно, вам придется поискать в google более подробную информацию, но если вы посмотрите на свойства ссылки в VS, то увидите поле "псевдонимы", которое будет "глобальным". В вашей ссылке на более старую версию измените это поле псевдонимов на что-то вроде "oldlog4net". Теперь в вашем коде все, что ссылается на "log4net.SomeClass", будет использовать более позднюю версию, и вы измените свой код на ссылку "oldlog4net::log4net.SomeClass", и это будет использовать сборку, на которую вы ссылаетесь с псевдонимом "oldlog4net".