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

时间:2017-05-16 20:10:13

标签: xamarin prism dryioc

我试图将容器更改为Xamarin.Forms + Prism应用程序的DryIOC。 Visual Studio正在编译并启动应用程序,没有错误,但是当应用程序启动时,它不会激活App.OnInitialized方法,将应用程序保持在空白屏幕上。

我做了什么?

  1. 从Android和共享项目中删除了Prism.Unity,Unity和Microsoft相关软件包
  2. 将DryIoc.dll(v2.10.7)和Prism.DryIoc.Forms(v6.3.0.1)软件包添加到Android和共享项目
  3. 在App.xaml中更改了prism xmlns指向:

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

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

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

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

    我还能做什么?

2 个答案:

答案 0 :(得分:5)

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

1)删除以下三个包    - Prism.Unity.Forms    - 团结    - CommonServiceLocator

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

3)从App.xaml.cs中删除Unity名称空间,并将其替换为Prism.DryIocDryIoc。在任何IPlatformInitializer实施中执行相同操作,同时将IUnityContainer更改为IContainer

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

5)更新可能直接使用IUnityContainer使用IContainer的任何服务或您拥有的任何服务。

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

如果您遇到任何问题,可以将项目与Hamburger MenuTabbed Navigation样本进行比较。

答案 1 :(得分:2)

对我来说有用的是使用Prism DryIoC模板创建一个新项目并移动我的所有代码。