2011-04-21 24 views
1

我在Unity中使用Prism 4。我有一個主要項目和一個模塊。該模塊是作爲Silverlight應用程序創建的,因此它構建了一個單獨的xap文件。在沒有參考的情況下從xap在Prism中加載模塊

我像Bootstrapper的ConfigureModuleCatalog一樣加載模塊,就像文檔狀態一樣。

var moduleType = typeof (MyModule); 
this.ModuleCatalog.AddModule(
    new ModuleInfo 
    { 
     ModuleName = moduleType.Name, 
     ModuleType = moduleType.AssemblyQualifiedName, 
     InitializationMode = InitializationMode.WhenAvailable, 
    }); 

一切工作正常,但我注意到,我的主要XAP文件還包含與我的模塊相關的DLL。因此,我在模塊引用上設置了Copy Local = False,並且它僅在其自己的xap文件中使用模塊dll正確構建。

但現在我的應用程序不會運行,因爲我無法獲取MyModule的類型信息。我得到一個FileNotFoundException。

我發現如果手動輸入ModuleName和ModuleType,並且在ModuleInfo上設置Ref =「MyModule.xap」,我可以完全刪除參考。這工作正常,但這是問題:我經常構建並使用動態版本號。所以AssemblyQualifiedName變得太簡單了。沒有參考,就沒有辦法動態獲取它。如果我從AssemblyQualifiedName中刪除版本號,它不起作用。

當然,還有其他一些方法可以讓模塊從它自己的xap文件中加載,而不會導致在主xap中結束?

回答

0

沒關係...

進一步研究後,似乎我的錯誤是在程序集的版本使用通配符版本。在許多站點上建議僅在彙編FILE版本中使用通配符,並在彙編版本上使用固定版本號。然後,我可以刪除參考文獻,並通過固定版本號的強名稱引用該模塊。

我被鎖在棱鏡上。我一直沒有弄清楚,直到我想到總體裝配位置。爲我解決它的帖子實際上是關於解決sharepoint部分。只是有時候你必須在盒子外面去思考。

更新

看起來就像你不能在文件版本使用通配符... GRR ......我發現一個加載項中會的工作,雖然http://autobuildversion.codeplex.com/

任何人有一個更好的理念?

相關問題