Il caricamento dei moduli OnDemand Prism dovrebbe funzionare in uno scenerio OOB? Se è così, non riesco a farlo funzionare. Tutto funziona attualmente nel browser senza problemi. Specificamente I: registra la moduli in codice:Will Prism OnDemand caricamento del modulo funziona in uno scenerio 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);
}
richiesta successiva per il modulo da caricare è fatto:
mModuleManager.LoadModule(ModuleNames.mod2);
e attendere una risposta a un evento pubblicato durante l'inizializzazione di tale loaded modulo.
Il modulo sembra non essere mai stato caricato e quando l'applicazione è in esecuzione nel debugger verrà visualizzata una finestra di messaggio che indica che il server Web ha restituito un errore "non trovato". Posso prendere l'url di richiesta per il modulo e inserirlo in Firefox e scaricare il modulo senza problemi.
Non sono stato in grado di trovare alcun riferimento a questo in realtà essere praticabile, ma sembra come dovrebbe. Il più che ho trovato sull'argomento è un blog entry by Jeremy Likeness, che copre i moduli di caricamento in MEF, ma applicare le sue conoscenze qui non ha aiutato.
Il server è localhost (ho sentito dire che ciò potrebbe causare problemi). Il server ha un file clientaccesspolicy.xml, anche se non mi aspetto che sia necessario. Sto usando lo stack client e registrarlo durante la costruzione app:
WebRequest.RegisterPrefix(Current.Host.Source.GetComponents(UriComponents.SchemeAndServer, UriFormat.UriEscaped), WebRequestCreator.ClientHttp);
domande ollowup:
Possono tutti i xaps essere installato sul desktop client in qualche modo - o solo l'XAP principale? specificarli in appmanifest.xml in qualche modo ??
Vale la pena farlo funzionare se solo il file application.xap è installato e il resto delle xaps deve essere scaricato comunque?
Sono anche curioso di sapere questa risposta - Sto lavorando OOB e ho bisogno di dividere il mio progetto ... – Rodney