Должна ли загрузка модулей OnDemand Prism работать в режиме OOB? Если это так, я не могу заставить его работать. Все в настоящее время работает в браузере без каких-либо проблем. В частности, я: зарегистрировать свои модули в коде:Будет ли загружать модуль модуля Prism OnDemand в sceneio OOB?
protected override IModuleCatalog GetModuleCatalog() {
var catalog = new ModuleCatalog();
Uri source;
if(Application.Current.IsRunningOutOfBrowser) {
source = IsolatedStorageSettings.ApplicationSettings[SOURCEURI] as Uri;
}
else {
var src = Application.Current.Host.Source.ToString();
src = src.Substring(0, src.LastIndexOf('/') + 1);
source = new Uri(src);
IsolatedStorageSettings.ApplicationSettings[SOURCEURI] = source;
IsolatedStorageSettings.ApplicationSettings.Save();
}
if(source != null) {
var mod2 = new ModuleInfo { InitializationMode = InitializationMode.OnDemand,
ModuleName = ModuleNames.mod2,
ModuleType = "mod2.Module, mod2.Directory, '1.0.0.0', Culture=neutral, PublicKeyToken=null"),
Ref = (new Uri(source, "mod2.xap")).AbsoluteUri };
catalog.AddModule(mod2);
}
// per Jeremy Likeness - did not help.
Application.Current.RootVisual = new Grid();
return (catalog);
}
позже запрос на модуль должен быть загружен сделан:
mModuleManager.LoadModule(ModuleNames.mod2);
и ждать ответа на событие, опубликованную во время инициализации, что нагруженный модуль.
Модуль никогда не загружается, а при запуске приложения под отладчиком появится окно сообщения, в котором говорится, что веб-сервер вернул ошибку «не найден». Я могу взять запрашивающий url для модуля и ввести его в Firefox и загрузить модуль без проблем.
Я не смог найти ссылки на это, фактически будучи работоспособным, но кажется, что он должен. Самое большее, что я нашел по этому вопросу, - это blog entry by Jeremy Likeness, который охватывает модули загрузки в MEF, но использование его знаний здесь не помогло.
Сервер является localhost (я слышал, что он упоминал, что это может вызвать проблемы). У сервера есть файл clientaccesspolicy.xml - хотя я не ожидаю, что это необходимо. Я использую стек клиент и зарегистрировать его во время приложения строительства:
WebRequest.RegisterPrefix(Current.Host.Source.GetComponents(UriComponents.SchemeAndServer, UriFormat.UriEscaped), WebRequestCreator.ClientHttp);
Followup вопросы:
Может все xaps быть установлен на рабочий стол клиента какой-то образом - или только основное приложение XAP? указать их в appmanifest.xml как-то ??
Стоит ли это делать, если установлен только application.xap, и остальная часть xaps должна быть загружена в любом случае?
Мне также интересно узнать этот ответ - я работаю OOB и мне нужно разделить мой проект ... – Rodney