Xamarin.forms 启动Prism 7应用程序时,应用程序构造函数中出现Null异常

Xamarin.forms 启动Prism 7应用程序时,应用程序构造函数中出现Null异常,xamarin.forms,prism,Xamarin.forms,Prism,我将xamarin表单应用程序升级为使用prism 7。当应用程序启动(android项目)时,它会在这条线上崩溃 public App(IPlatformInitializer initializer = null) : base(initializer) { } 错误是 System.ArgumentNullException: Value cannot be null. Parameter name: path1 这种情况发生在预发行版以及myget:7.0.0.343-ci的最新版本

我将xamarin表单应用程序升级为使用prism 7。当应用程序启动(android项目)时,它会在这条线上崩溃

public App(IPlatformInitializer initializer = null) : base(initializer) { }
错误是

System.ArgumentNullException: Value cannot be null.
Parameter name: path1
这种情况发生在预发行版以及myget:7.0.0.343-ci的最新版本中

我在prism 6.3中没有遇到这个错误

App.xaml.cs:

using Prism;
using Prism.Ioc;
using Prism.Mvvm;
using Prism.Ninject;
using SunBaseApp.Helpers;
using Xamarin.Forms;

[assembly: Xamarin.Forms.Xaml.XamlCompilation(Xamarin.Forms.Xaml.XamlCompilationOptions.Compile)]

namespace SunBaseApp
{
    public partial class App : PrismApplication
    {
        public App() : this(null) { }

        public App(IPlatformInitializer initializer = null) : base(initializer) { }

        protected override async void OnInitialized()
        {
            InitializeComponent();

            await NavigationService.NavigateAsync("/NavigationPage/LoginPage");
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            var cont = containerRegistry.GetKernel();

            cont.Bind<IAppSettings>().To<AppSettings>().InSingletonScope();
            cont.Bind<IDataService>().To<DataService>().InSingletonScope();

            containerRegistry.RegisterForNavigation<NavigationPage>();
            containerRegistry.RegisterForNavigation<LoginPage, LoginPageModel>();
            containerRegistry.RegisterForNavigation<MainPage, MainPageModel>();
            containerRegistry.RegisterForNavigation<SettingsEditPage, SettingsEditPageModel>();
            containerRegistry.RegisterForNavigation<StatPage, StatPageModel>();
            containerRegistry.RegisterForNavigation<WebsiteListPage, WebsiteListPageModel>();
            containerRegistry.RegisterForNavigation<WebsiteEditPage, WebsiteEditPageModel>();
        }
    }    
}

非常感谢您的任何想法。

看来Ninject在Droid上运行时遇到了一些问题。我建议您更新您的项目以使用另一个更稳定的容器。还请记住,使用最新版本,您不需要直接引用容器,除非您需要更高级的注册。您所拥有的基本功能可以简单地注册为:

containerRegistry.RegisterSingleton<IAppSettings, AppSettings>();
containerRegistry.RegisterSingleton();

谢谢你,丹!我切换到DryIoc,它又开始工作了。还应用了更简单的注册。我有与Ed S完全相同的问题。您是否可以给出任何其他提示来代替切换IoC容器@Dan S.@Tobiasheel Ninject不再是PrismDo的受支持容器您有任何来源吗?听起来我不应该开始使用Prism。我有什么确切的来源吗?
using Android.App;
using Android.Content.PM;
using Android.OS;
using Acr.UserDialogs;
using Prism;
using Prism.Ioc;

namespace SunBaseApp.Droid
{
    [Activity(Label = "SunBaseApp", Icon = "@drawable/icon2", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            ToolbarResource = Resource.Layout.toolbar;
            TabLayoutResource = Resource.Layout.tabs;

            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);

            LoadApplication(new App(new AndroidInitializer()));

            UserDialogs.Init(this);
        }

        public class AndroidInitializer : IPlatformInitializer
        {
            public void RegisterTypes(IContainerRegistry containerRegistry)
            {
            }
        }
    }
}
containerRegistry.RegisterSingleton<IAppSettings, AppSettings>();