2015-03-03 3 views
0

Я глубоко в аду dll и прибегаю к открытому вопросу здесь для некоторой помощи. Я использую порт springframework.net в своем веб-приложении и недавно обновил версию до версии 2.0. Все работает правильно, за исключением новой зависимости от commons.logging.Spring.Rest и Common.Logging 3.0 Проблемы с совместимостью

После большого количества поисковых запросов я вижу, что предыдущие common.logging 2.0 и последние 3.0 не совместимы, но есть обходное решение в виде common.logging.core 3.0. После внедрения все работает нормально.

Однако теперь мне пришлось обновить Spring.Social.Twitter и Spring.Social.LinkedIn, которые оба имеют зависимость от Spring.Rest (1.1.1.35040). Библиотека Spring.Rest по-прежнему имеет зависимость от common.logging 2.0.

Я думал, что просто соскользнув с переадресацией в мой web.config, все будет хорошо, но это не так. При доступе к чему-либо из класса Spring.Rest.RestTemplate во время выполнения он терпит неудачу с «Метод не найден:« Common.Logging.ILog Common.Logging.LogManager.GetLogger (System.Type) ».»

Виновником здесь внутри RestTemplate

private static readonly Common.Logging.ILog LOG = Common.Logging.LogManager.GetLogger(typeof(RestTemplate)); 

здесь мой связывании перенаправлять

<dependentAssembly> 
    <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
    </dependentAssembly> 

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

ответ

0

Попытка решить то же самое, но никак не к сожалению.

Проблема в том, что с Common.Logging 3.0 интерфейс ILogger был перемещен из Common.Logging в Common.Logging.Core, и поэтому двоичный файл не смог найти его. Если вы сделаете противоположное перенаправление, другой двоичный код столкнется с проблемой.

Другими словами, единственный способ состоит в том, чтобы обе библиотеки были скомпилированы против одной и той же версии Common.Logging, поскольку они несовместимы друг с другом.

На самом деле не сложно выполнить сборку Spring.Rest против Common.Logging (вам нужно просто обновить Common.Logging и добавить Common.Logging.Core), но сначала это будет неподписанным, а во-вторых, я немного удивлен, Spring.Rest по-прежнему поддерживается - последний релиз составляет около 4 лет, что поистине позор, так как по крайней мере Java-версия довольно крутая ...

Смежные вопросы