Хобрук: Ваш путь к мастерству в программировании

Загрузка разных версий одной сборки

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

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


Ответы:


1

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

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

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

https://www.infosysblogs.com/microsoft/2007/04/loading_multiple_versions_of_s.html

12.09.2008
  • Ага... Первый дает мне и кучке других парней проблемы со сборкой, о которых уже упоминалось. Сообщение 7-летней давности, и я до сих пор не вижу никакого решения или объяснения в поле комментариев к этому сообщению. Народ СО, помогите? 07.03.2012
  • InfoSysblog (вторая ссылка) сейчас не работает. Какие-либо предложения? 23.07.2013

  • 2

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

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

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

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

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

    12.09.2008
    Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.