如何将Xamarin.Forms + Prism应用程序从Unity迁移到DryIoC?

Cle*_* T. 2 prism xamarin dryioc

我正在尝试将容器更改为Xamarin.Forms + Prism应用程序的DryIOC。Visual Studio在编译和启动应用程序时没有错误,但是当应用程序启动时,它不会启动App.OnInitialized方法,从而使应用程序处于空白屏幕。

我做了什么

  1. 从Android和Shared项目中删除了Prism.Unity,Unity和Microsoft相关软件包
  2. 已将DryIoc.dll(v2.10.7)和Prism.DryIoc.Forms(v6.3.0.1)程序包添加到Android和共享项目
  3. App.xaml中的棱镜xmlns更改为:

    xmlns:prism="clr-namespace:Prism.DryIoc;assembly=Prism.DryIoc.Forms"

  4. 将MainActivity.cs中的AndroidInitializer类更改为:

    public class AndroidInitializer : IPlatformInitializer { public void RegisterTypes(IContainer container) {} }

我使用Prism DryIoC模板创建了一个空白应用程序,并且工作正常。另外,我将App.xaml,App.xaml.cs和MainActivity.cs文件与项目中的文件进行了比较,一切正常。

我还可以做些什么?

Dan*_* S. 5

如果要进行转换,则需要执行以下操作:

1)删除以下三个程序包-Prism.Unity.Forms-Unity-CommonServiceLocator

2)将xml名称空间更新为clr-namespace:Prism.DryIoc;assembly=Prism.DryIoc.Forms您的App.xaml中

3)从App.xaml.cs取出统一命名空间,并取代它们Prism.DryIocDryIoc。在任何IPlatformInitializer实现中都执行相同的操作,也更改IUnityContainerIContainer

4)更新任何服务注册,因为Unity和DryIoc之间的签名不匹配。

5)更新你特别有可能直接使用任何服务或任何IUnityContainer在使用IContainer

6)删除objbin文件夹,清理并重建。

如果遇到任何麻烦,可以将您的项目与“ 汉堡包菜单”或“ 选项卡式导航”示例进行比较。

更新 从Prism 7.2开始,建议使用XML命名空间,因为http://prismlibrary.com它可以替换您以前可能拥有的所有clr-namespace声明,并且无论您使用的是正式的Prism软件包还是Prism的扩展版本之一,它都可以工作。 。