OnDemand Prism模塊的加載應該在OOB scenerio中工作嗎?如果是這樣,我似乎無法使其工作。一切正在瀏覽器中正常工作,沒有任何問題。具體地說I: 登記自己的模塊中的代碼:Prism OnDemand模塊加載在OOB scenerio中工作嗎?
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);
,並等待到該裝載的初始化過程中公佈的一個事件的響應模塊。
該模塊似乎永遠不會被加載,並且當應用程序在調試器下運行時,會出現一個消息框,指出Web服務器返回了「未找到」錯誤。我可以將該模塊的請求url並輸入到Firefox並下載模塊,沒有任何問題。
我一直沒有找到任何可以實際操作的參考,但它似乎應該如此。我在這個主題上找到的最多的是blog entry by Jeremy Likeness,它涵蓋了MEF中的加載模塊,但是在這裏應用他的知識並沒有幫助。
服務器是本地主機(我聽說它提到這可能會導致問題)。該服務器有一個clientaccesspolicy.xml文件 - 雖然我不指望這是必要的。 我使用的客戶端堆棧和註冊它應用在施工期間:
WebRequest.RegisterPrefix(Current.Host.Source.GetComponents(UriComponents.SchemeAndServer, UriFormat.UriEscaped), WebRequestCreator.ClientHttp);
後續問題:
可以將所有xaps的安裝以某種方式在客戶端桌面 - 或者只在主應用程序XAP?以某種方式在appmanifest.xml中指定它們?
如果只安裝了application.xap並且必須下載其餘的xaps,是否值得使用這個工作?
我也很想知道這個答案 - 我正在OOB工作,需要分解我的項目... – Rodney 2010-09-09 00:47:24