Я знаю, что на этот вопрос, кажется, ответили во всем стеке и потоке, но моя проблема в другом.
Я пытаюсь понять, как не использовать GAC (босс говорит «нет»), когда у меня естьследующая настройка:
В проекте используются NHibernate и Antlr3.Stringtemplate. Обе они являются сторонними сборками.NHibernate имеет ссылку на Antlr3.Runtime-версию 3.1.3.42154. Antlr3.Stringtemplate содержит ссылку на Antlr3.Runtime-версию 3.3.1.7705
Одна ошибка, если другая недоступна.
Я пыталсяПереадресация привязки, но это не работает, потому что publicKeyToken отличается между версиями.В итоге он ищет 3.3.17705 с токеном открытого ключа, который соответствует версии 3.1.3.42154.
Установка одного или обоих в работах GAC.Однако мой начальник не разрешил мне устанавливать что-либо в GAC.
Я также попытался поместить обе библиотеки DLL в каталог BIN, включив проект Lib с папкой для версии 3.1.3.42154.Я сказал ему всегда копировать, и поэтому я получаю /bin/Lib/3.1.3.42154/Antlr.Runtime.dll Затем я добавил элемент зондирования, чтобы проверить этот каталог.Это не сработало, и я получил точно такую же ошибку.
Как можно использовать сторонние сборки, ссылающиеся на другую стороннюю сборку, обе обе ссылаются на разные версии?
ОБНОВЛЕНИЕ:
System.Reflection.Assembly.LoadFile(@"Antlr3.Runtime.dll"); // 3.3.1
System.Reflection.Assembly.LoadFile(@"Antlr3.Runtime\Antlr3.Runtime.dll"); // 3.1.3
AppDomain.CurrentDomain.GetAssemblies () показывает, что версии загружены в домен приложения, однако все равно появляются ошибки, указывающие, что не удается найти thta 3.1.3.
Ниже показано, что загружается изAppDomain.CurrentDomain.GetAssemblies () прямо перед вызовом кода с ошибками.Первые 2 строки - это то, что в GetAssemblies (), третья строка - это то, что, как говорит ошибка, отсутствует.
{Antlr3.Runtime, Version=3.3.1.7705, Culture=neutral, PublicKeyToken=eb42632606e9261f}
{Antlr3.Runtime, Version=3.1.3.42154, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7}
Antlr3.Runtime, Version=3.1.3.42154, Culture=neutral, PublicKeyToken=3a9cab8f8d22bfb7