Ответ 1
Включение обеих версий SomeThirdParty в GAC должно делать то, что вы хотите. Используйте утилиту gacutil или Start- > Run- > , затем перетащите-n-drop.
Каким-то образом мне повезло и мне никогда не приходилось справляться с этой проблемой, хотя я считаю ее общей:
У меня есть веб-проект, позвоните ему 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: Could not load file or assembly '
SomeThirdParty , Version=2.0.0.0, Culture=[etc.]' or one of its dependencies. The located assembly manifest definition does not match the assembly reference.
Очевидно, что я мог бы обновить SomeProject
до более новой DLL или более поздней версии SomeLibrary
для более старой DLL, но это было бы не идеально по многим причинам.
Я думаю, что правильный ответ включает установку SomeThirdParty в GAC, но я не уверен точно, как бы я это сделал, и как это повлияет на других разработчиков и серверов.
Любые предложения, которые у вас могут быть оценены.
Спасибо за помощь.
Включение обеих версий SomeThirdParty в GAC должно делать то, что вы хотите. Используйте утилиту gacutil или Start- > Run- > , затем перетащите-n-drop.
Из моего ответа ранее: fooobar.com/info/521018/...
Я столкнулся с этим вчера для веб-разработчика visual studio, используя Oracle.DataAccess.dll.
Мое решение,
щелкните правой кнопкой мыши свой проект (*.csproj) и отредактируйте его.
Прямо снизу:
<PropertyGroup>
Место
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
Затем перестройте свое решение. Вы должны разделить эти две версии dll на два разных каталога в своем проекте, если они включены (обязательно).
Я сделал
ora11 >> Oracle.DataAccess.dll (Version 11)
ora9 >> Oracle.DataAccess.dll (Version 9)
Это позволяет вашей среде IDE использовать обе версии DLL.