Загрузка разных версий одной и той же сборки - PullRequest
22 голосов
/ 12 сентября 2008

Используя отражение, мне нужно загрузить 2 разные версии одной и той же сборки. Могу ли я загрузить 2 версии в 2 разных домена приложений в одном процессе?

Мне нужно выполнить миграцию данных из старой версии приложения в новую версию. Пожалуйста, дайте мне знать, если это возможно, или я должен использовать 2 отдельных процесса.

Ответы [ 2 ]

14 голосов
/ 12 сентября 2008

Если вы делаете это во время разработки (что вы указываете, что нет), это должно помочь вам:

http://blogs.msdn.com/abhinaba/archive/2005/11/30/498278.aspx

Если вы делаете это динамически с помощью рефлексии (похоже, здесь), это может вам помочь:

http://infosysblogs.com/microsoft/2007/04/loading_multiple_versions_of_s.html

5 голосов
/ 12 сентября 2008

ОБНОВЛЕНИЕ : Я думал, что опубликую свои выводы как ответ. Отражение оказалось слишком сложным с точки зрения усилий по разработке, отслеживанию ошибок времени выполнения и т. Д. Я помню, что делал другой подход, используя 2 разных процесса, когда сталкивался с подобной ситуацией давным-давно (Спасибо, Брэндон).

Это план: Ничего изящного, но проще в плане разработки и устранения неполадок. Поскольку это разовая работа, мы просто должны заставить ее работать.

Проведите процесс удаленного взаимодействия (который я называю сервером) с новой версией приложения. У удаленного клиента есть ссылки на более старую версию.

Удаленный клиент создает и загружает объекты с данными, необходимыми для миграции. Преобразуйте старые объекты в общие сериализуемые объекты и передайте их серверу в качестве параметров.

Remoting Server использует общие данные для создания экземпляров и загрузки новых объектов. Вызывает функции для новых типов для сохранения их данных.

...