我试图将容器更改为Xamarin.Forms + Prism应用程序的DryIOC。 Visual Studio正在编译并启动应用程序,没有错误,但是当应用程序启动时,它不会激活App.OnInitialized方法,将应用程序保持在空白屏幕上。
我做了什么?
在App.xaml中更改了prism xmlns指向:
xmlns:prism="clr-namespace:Prism.DryIoc;assembly=Prism.DryIoc.Forms"
将MainActivity.cs中的AndroidInitializer类更改为:
public class AndroidInitializer : IPlatformInitializer
{
public void RegisterTypes(IContainer container)
{}
}
我使用Prism DryIoC模板创建了一个空白的应用程序,它工作正常。另外,我将App.xaml,App.xaml.cs和MainActivity.cs文件与我项目中的文件进行了比较,一切正常。
我还能做什么?
答案 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.DryIoc
和DryIoc
。在任何IPlatformInitializer
实施中执行相同操作,同时将IUnityContainer
更改为IContainer
4)更新任何服务注册,因为Unity和DryIoc之间的签名不匹配。
5)更新可能直接使用IUnityContainer
使用IContainer
的任何服务或您拥有的任何服务。
6)删除obj
和bin
文件夹,清理并重建。
如果您遇到任何问题,可以将项目与Hamburger Menu或Tabbed Navigation样本进行比较。
答案 1 :(得分:2)
对我来说有用的是使用Prism DryIoC模板创建一个新项目并移动我的所有代码。