我用我自己的MvvmCross插件,Android項目中的一個問題,因爲PluginLoader
似乎期待確切的命名空間中的一個.Droid.dll
如何在Android中使用MvvmCross插件而無需編譯DLL?
說我有這個文件夾,命名空間結構三個項目:
MyApp.Core:
Plugins/Settings/ISettings.cs
Plugins/Settings/PluginLoader.cs
MyApp.Droid:
Plugins/Settings/Settings.cs
Plugins/Settings/Plugin.cs
Bootstrap/SettingsPluginBootstrap.cs
MyApp.Touch:
Plugins/Settings/Settings.cs
Plugins/Settings/Plugin.cs
Bootstrap/SettingsPluginBootstrap.cs
iOS項目的工作方式與預期的一樣,並發現插件沒有問題。
,另一方面Droid的項目,失敗的異常:Could not load file or assembly 'MyApp.Plugins.Settings.Droid.dll' or one of its dependencies.
如果我從MyApp.Core.Plugins.Settings
改變PluginLoader
的命名空間來簡單地MyApp
,該插件;我想它會查找MyApp.dll
並找到它。但是,如果我的應用程序中有多個插件,則它們應該都有自己的名稱空間,它們不能全部位於MyApp
名稱空間中。
目前我發現的唯一解決方法是爲我創建的每個插件創建一個單獨的項目,雖然這感覺有點不必要。
爲什麼PluginLoader
堅持在Android上尋找<PluginLoader namespace>.Droid.dll
文件,當iOS上的PluginLoader
發現插件沒有任何問題?
感謝您提出一個有趣的問題 - 我認爲您正在探索的空間與當前使用插件的區域略有不同(但帶有共享區域)。我非常喜歡這個核心項目的想法,它能夠爲ui項目定義「契約」 - 所以已經記錄下這個想法 - https://github.com/MvvmCross/MvvmCross/issues/496 – Stuart