Я пытаюсь взломать это за последние пару недель и пока не нашел хорошего решения; надеюсь, я смогу получить ответ здесь.Загрузка 2 версий сборки во время выполнения
У меня есть две сборки (ZA & ZB), оба из которых указывают на общий проект/dll (ZC), но которые могут быть на другой версии (то же самое имя DLL, те же пространства имен, некоторые классы могут быть разными) , Однако каждая сборка работает сама по себе, если одна загружается другой во время выполнения (например, A загружает B), то я не могу заставить ее работать. Нужна помощь.
Вот установка:
- ZA зависит от ZC (общая) версия 1.1
- ZB зависит от ZC версии 1,0
ZA необходимо загрузить потребности загружать что-то в ZB (который зависит от ZC), во время выполнения.
ZA - главное приложение. В каталоге bin
есть каталог плагинов plugins/plugin-ZB
, под которым я хотел бы разместить все ZB и его зависимости (ZC).
Вот что я пытался до сих пор:
Assembly.Load()
используя ту же версию DLL - работал отлично.
Assembly.Load()
с использованием различных версий dll - ZB загружается, но когда метод запускается, я получаю исключение метода, которое не найдено.
AppDomain.Load()
получил сообщенный файл не найден; Я даже использовал делегата для разрешения сборок.
Некоторые сведения о ZC: - некоторые методы являются публичными (некоторые из них не являются). Например. Log.Log("hello");
- некоторые могут возвращать значения (примитивы или объекты). - некоторые методы не статичны (и возвращают значения).
Помощь? - TIA
«Вы можете иметь только одну версию сборки для AppDomain с» это не так. Можно даже ссылаться на две версии сборки из одной сборки, просмотреть дополнительную информацию о внешнем псевдониме, вот первое, что появляется в Google с помощью примера: http://blogs.msdn.com/ b/ansonh/archive/2006/09/28/extern-alias-walkthrough.aspx – Graham
Использование двух приложений AppDomains является решением описанной проблемы. – Graham
Вы правы, ответьте на обновления! –