2

我正在尝试将容器更改为 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 和 Shared 项目
  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) {} }

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

我还可以做些什么?

4

2 回答 2

6

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

1)去掉以下三个包 - Prism.Unity.Forms - Unity - CommonServiceLocator

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

3) 从 App.xaml.cs 中删除 Unity 命名空间并将其替换为Prism.DryIocand DryIoc。在任何IPlatformInitializer实现中做同样的事情,也改变IUnityContainerIContainer

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

IUnityContainer5) 更新您可以直接使用的任何服务或任何您特别拥有的东西IContainer

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

如果您遇到任何问题,您可以将您的项目与汉堡菜单选项卡式导航示例进行比较。

更新 从 Prism 7.2 开始,推荐使用的 XML 命名空间很简单,http://prismlibrary.com这将替换您之前可能拥有的任何 clr-namespace 声明,并且无论您使用的是官方 Prism 包还是 Prism 的扩展版本之一,都可以使用.

于 2017-05-16T22:10:48.660 回答
2

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

于 2017-05-17T01:42:46.393 回答