2016-01-04 10 views
2

Для приложения для Windows 10 IoT Core на Raspberry Pi2 мне нужно использовать приложение запуска или StartUp-Task, которое создает теневую копию моего приложения и запускает его. Мне нужно использовать этот подход, чтобы иметь возможность заменять библиотеки DLL во время выполнения, без блокировки DLL и без нарушения работы служб. Это необходимо, поскольку устройство, запускающее его, будет удаленным где-то вне досягаемости, развернутым на сайте клиента, и мне нужно, чтобы мое приложение запускалось для обслуживания устройства. После обновления моих DLL я перезапустил его, и он будет работать с новыми библиотеками, запустите программу запуска в качестве приложения по умолчанию, а затем запустит мое приложение.AppDomain отсутствует или лишен Windows 10 IoT Core и UWP

Перед Windows 10 и UWP подход заключался в использовании System.AppDomain из mscorlib.dll в .NET Framework для создания нового AppDomain в кешированном каталоге. Конфигурация, исполняемые файлы и библиотеки DLL будут скопированы в каталог кеша и будут выполняться оттуда. Это оставляет исходную DLL доступной для замещения и не блокирует их. Это был также очень полезный метод, используемый в IIS и webapps, которые необходимо запускать без перерывов, даже если код нуждается в обновлении. Открытые угрозы продолжают обслуживать открытые запросы до тех пор, пока они не будут выполнены, и новые запросы будут обслуживаться с использованием новых обновленных версий.

Теперь в Windows 10 System.AppDomain больше не доступен. Я попробовал Windows.System.ProcessLauncher, но столкнулся с несколькими проблемами. Сначала я должен зарегистрировать EXE в реестре, чтобы запустить его. Затем он сообщает мне, что я могу запустить его только из контейнера приложения. На данный момент я не работал. Это просто утомительный и беспорядочный подход ИМХО.

Теперь на мой вопрос: что бы вы использовали в качестве альтернативы описанному старому подходу к IoT Core Windows 10? У кого-нибудь есть небольшой фрагмент кода для совместного использования? Или, может быть, ссылка, указывающая в правильном направлении? Любой совет будет принят во внимание.

ответ

2

Этот подход несовместим с моделью приложения Universal Platform Platform.

Вам нужно будет нажать обновленный пакет вашего приложения.

+0

Да, к сожалению, похоже, что это так. Мудак. Обмен одной DLL был бы намного удобнее, чем при нажатии целого нового пакета приложений. Нажатие обновленного пакета также означает, что приложение будет прекращено и больше не будет работать, что прекратит мое подключение к устройству и, следовательно, моя возможность что-либо с ним сделать. Похоже, что я должен использовать Azure IoT Suite для ввода новых пакетов приложений. Это так неудобно, что они больше не поддерживают этот отлично работающий метод. :( –

Смежные вопросы