Загрузка разных версий одной сборки
-
09-06-2019 - |
Вопрос
Используя отражение, мне нужно загрузить две разные версии одной и той же сборки.Могу ли я загрузить две версии в двух разных доменах приложений в одном процессе?
Мне нужно выполнить перенос данных из старой версии приложения в новую версию.Пожалуйста, дайте мне знать, возможно ли это, или мне следует использовать два отдельных процесса.
Решение 2
ОБНОВЛЯТЬ:Я решил опубликовать свои выводы в качестве ответа.Отражение оказалось слишком сложным с точки зрения усилий по разработке, отслеживания ошибок во время выполнения и т. д.Я помню, как давным-давно столкнулся с похожей ситуацией, используя другой подход, используя два разных процесса (спасибо, Брэндон).
Это план:Ничего элегантного, но проще с точки зрения разработки и устранения неполадок.Поскольку это разовая работа, нам просто нужно заставить ее работать.
Разместите процесс удаленного взаимодействия (который я называю сервером) с новой версией приложения.У удаленного клиента есть ссылки на более старую версию.
Удаленный клиент создает экземпляры и загружает объекты с данными, необходимыми для миграции.Преобразуйте старые объекты в обычные сериализуемые объекты и передайте их в качестве параметров на сервер.
Удаленный сервер использует общие данные для создания экземпляров и загрузки новых объектов.Вызывает функции новых типов для сохранения их данных.
Другие советы
Если вы делаете это во время разработки (а вы указываете, что это не так), это должно вам помочь:
http://blogs.msdn.com/abhinaba/archive/2005/11/30/498278.aspx
Если вы делаете это динамически посредством отражения (похоже на этот случай), это может вам помочь:
http://infosysblogs.com/microsoft/2007/04/loading_multiple_versions_of_s.html