Как-то мне повезло, и я никогда не сталкивался с этой проблемой, хотя я думаю, что это обычная проблема:
У меня есть веб-проект, давайте назовите его SomeProject
. SomeProject
имеет ссылку на стороннюю библиотеку, назовем ее SomeThirdParty
, версия 1.0. SomeProject
также имеет ссылку на собственную библиотеку классов, назовем ее SomeLibrary
. SomeLibrary
также имеет ссылку на SomeThirdParty
, но другую версию (скажем, 2.0).
Версии 1.0 и 2.0 SomeThirdParty
имеют большую часть того же подписи, но это разные реализации. Мне нужно SomeProject
, чтобы использовать реализацию 1.0, и SomeLibrary
, чтобы использовать реализацию 2.0, если это возможно.
Я компилирую SomeProject
, используя его ссылку на log4net. DLL, которая попадает в каталог bin, - это та, на которую ссылается SomeProject
. Во время выполнения, когда выполняется код из SomeLibrary
, он пытается выполнить код из версии 2.0 SomeThirdParty
и, конечно же, терпит неудачу, вызывая исключение FileLoadException: не удалось загрузить файл или сборка '
SomeThirdParty , Version = 2.0.0.0, Culture = [etc.]' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.
Очевидно, я мог бы обновить SomeProject
до более новой библиотеки DLL или понизить SomeLibrary
до более старой библиотеки DLL, но это было бы не так. идеален по многим причинам.
Я думаю, что правильный ответ включает установку SomeThirdParty в GAC, но я не уверен, как именно я » d сделать это и как это повлияет на других разработчиков и серверы.
Мы будем благодарны за любые ваши предложения.
Спасибо за помощь.