Я пытался взломать это последние пару недель и пока не нашел хорошего решения; надеюсь, я смогу получить здесь ответ.
У меня есть две сборки (ZA и ZB), обе из которых указывают на общий проект / dll (ZC), но могут быть в другой версии (то есть с тем же именем dll, одинаковыми пространствами имен, некоторые классы могут отличаться). Каждая сборка работает сама по себе, однако, если одна из них загружается другой во время выполнения (например, A загружает B), я не могу заставить ее работать. Нужна помощь.
Вот установка:
- ZA зависит от ZC (common) версии 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