Sollte das Laden von OnDemand Prism Modulen in einem OOB Szenerio funktionieren? Wenn dem so ist, kann ich es nicht funktionieren lassen. Im Browser läuft derzeit alles ohne Probleme. Insbesondere I: meine Module in Code registrieren:Wird das Prism OnDemand-Modul in einem OOB-Szenario geladen?
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);
}
späte Anfrage für das Modul geladen werden hergestellt:
mModuleManager.LoadModule(ModuleNames.mod2);
und wartet auf eine Antwort auf ein Ereignis während der Initialisierung der geladenen veröffentlicht Modul.
Das Modul scheint nie geladen werden, und wenn die Anwendung unter dem Debugger ausgeführt wird es ein Meldungsfeld, das besagt, dass der Web-Server einen ‚nicht gefunden‘ Fehler zurückgegeben. Ich kann die anfragende URL für das Modul nehmen und es in Firefox eingeben und das Modul ohne Probleme herunterladen.
Ich habe nicht in der Lage gewesen, eine Bezugnahme auf dieses tatsächlich sind praktikabel zu finden, aber es scheint, als ob es sein sollte. Das meiste, was ich zu dem Thema gefunden habe, ist ein blog entry by Jeremy Likeness, der das Laden von Modulen in MEF behandelt, aber das Anwenden seines Wissens hier half nicht.
Der Server localhost ist (ich habe gehört, dass es erwähnt, dass dies zu Problemen führen). Der Server hat eine clientaccesspolicy.xml-Datei - obwohl ich nicht erwarte, dass das nötig ist. Ich bin mit dem Client-Stack und registrieren sie während app Aufbau:
WebRequest.RegisterPrefix(Current.Host.Source.GetComponents(UriComponents.SchemeAndServer, UriFormat.UriEscaped), WebRequestCreator.ClientHttp);
Followup Fragen:
Kann all die xaps auf dem Client-Desktop in irgendeiner Art und Weise installiert werden - oder nur die Hauptanwendung xap? gib sie irgendwie in appmanifest.xml an ??
Lohnt es sich, diese Arbeit machen, wenn nur die application.xap installiert ist, und der Rest der xaps muss sowieso heruntergeladen werden?
Ich bin auch neugierig auf diese Antwort - ich arbeite OOB und muss mein Projekt aufteilen ... – Rodney