Каков наилучший подход для использования сторонней организации, которая использует другую версию третьей стороны (log4net), уже используемую в системе? - PullRequest
4 голосов
/ 04 октября 2010
  • В настоящее время мы используем log4net версии 1.2.10.0, и мы должны начать использовать некоторые сторонние компоненты, разработанные другой командой.
  • Упомянутые компоненты ссылаются на log4net версии 1.2.9.0.
  • Все двоичные файлы развернуты в одной папке.

Я уверен, что мы не сможем перестроить наши исходники с версией 1.2.9.0, потому что существует слишком много других зависимостей и потребуется много усилий.Есть ли другие подходы для решения этой проблемы?Я НЕ ищу слишком сложного, который как-то связан с загрузкой сборок CLR, но услышал бы их с большим удовольствием.Я ищу самые простые подходы.Я предполагаю, что кто-то сталкивался с той же проблемой.

EDITED : Если кто-то заинтересовался, я создал сообщение в блоге по этому вопросу: http://andriybuday.blogspot.com/2010/10/log4net-versions-deployment-issue.html

EDITED2 Таким образом, это редактирование не является ответом, но оно представляет неожиданный конец этой истории.Я только что скопировал это из поста в блоге.

СМЕШНО-СЧАСТЛИВЫЙ ЭТОТ ИСТОРИИ

Вы знаете, что самое интересное во всем этом?Вот как это закончилось.Мы связались с теми ребятами, которые разработали компонент, который мы теперь должны использовать.Они дали нам знать, что у них возникли проблемы с обновлением файла конфигурации на лету для log4net 1.2.10.0.По их словам, новая версия log4net не способна сделать это.Таким образом, они отправили простое приложение, которое демонстрирует это, и действительно, после обновления конфигурации, когда приложение работает, 1.2.10.0 не догнал новую конфигурацию, но 1.2.9.0 работал просто отлично.Это меня очень удивило, поэтому я зашел на эту страницу загрузки и скачал последние двоичные файлы.Когда я попробовал это получилось!На самом деле, я полагаю, что они просто использовали версию пакета log4net со ссылками на .net framework 1.1, и мы должны использовать версию, созданную с помощью .net 2.0 (Да! На самом деле, если вы скачаете, вы увидите.)

В конце концовспециально для нас они создали новую версию своих источников и смогли исправить небольшую ошибку.Отличные новости!Неожиданный конец истории!:)

Ответы [ 2 ]

2 голосов
/ 04 октября 2010

Я не знаю, какие изменения происходят между двумя версиями (мы сами используем 1.2.10.0), но если интерфейсы не изменились, вы можете попробовать перенаправить сборку на более новую версию:

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
         <assemblyIdentity name="log4net"
                           publicKeyToken="b32731d11ce58905"
                           culture="neutral" />
         <bindingRedirect oldVersion="1.2.9.0"
                          newVersion="1.2.10.0"/>
       </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

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

http://msdn.microsoft.com/en-us/library/7wd6ex19(VS.71).aspx

2 голосов
/ 04 октября 2010

Рекомендуемый подход заключается в установке обеих версий log4net в глобальный кэш сборок (GAC).

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

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