2013-09-25 48 views
1

我正在寫一個插件,但我需要每個Windows Phone版本的具體實現。MvvmCross插件與特定的Windows手機版本規格

的問題是,該插件系統將嘗試加載基於公約的平臺插件組件。在這種情況下,「WindowsPhone」。

我們不妨來覆蓋CreatePluginManager但隨後它會影響您可能需要插件的其餘部分。

我想生成具有不同名稱,但相同的程序集和命名空間兩個不同的項目。我認爲,這會解決加載特定插件的問題,但我真的不知道如何面對最終發佈到Nuget。

此致敬禮,

羅伯託。

回答

1

生成組件具有相同的名稱是去一個可行的辦法 - 這是一些微軟PCL團隊做的相當頻繁 - 這是參考組件是如何工作的。

這些的分佈的NuGet不應該是一個問題 - 但將是一個「faff」 - 爲的NuGet zip文件將使用不同的文件夾爲不同的文件。但是,如果您希望單個項目同時構建wp7和wp8配置,那麼可能需要在.targets級別完成一些工作(這類似於winrt nuget軟件包中x86/x64/arm變體組件所需的工作) 。

其實,我能想到的不使用相同的名稱主要的原因是很簡單的道理,它是太容易在一個懵懵懂懂地獲得這種方式。


如果這一個插件,你想在安裝過程中覆蓋了插件管理器,你可以根據

如果這模式變得很常見 - 無論是對於wp還是其他版本化的平臺 - 然後我們可以在框架中包含一些東西 - 只要嘗試一個版本中立的負載,然後爲每個插件使用版本特定的負載就足夠簡單了。


也有其他的方法,你可以去這個太...

例如另一種可能性/機會是你的插件核心文件可以嘗試加載多個平臺adaptions本身 - 使用代碼例如像

public void EnsureLoaded() 
    { 
     var manager = Mvx.Resolve<IMvxPluginManager>(); 
     manager.TryEnsurePlatformAdaptionLoaded<PluginLoader>(); 
     manager.TryEnsurePlatformAdaptionLoaded<Sub1.PluginLoader>(); 
     manager.TryEnsurePlatformAdaptionLoaded<Sub2.PluginLoader>(); 
    } 

這將嘗試加載該插件的三個子組件 - MyPlugin.WindowsPhone,MyPlugin.Sub1.WindowsPhone和MyPlugin.Sub2.WindowsPhone,但您只能在每個平臺上打包其中一個。