Ninject StandardKernel System.ArgumentNullException: 值不能为空。参数名称:path1

Ninject StandardKernel System.ArgumentNullException: value cannot be null. Parameter name: path1

我正在学习 Xamarin,我想将 Ninject 用于 IoC 容器和依赖项注入。我在 Visual studio 2017 社区上使用 NuGet 包添加了 Ninject 3.3.4。我在 App.Xaml.cs:

中的以下代码行收到错误
Kernel = new StandardKernel(new TripLogCoreModule(), new TripLogNavModule(mainPage.Navigation));

我收到以下错误:

Ninject StandardKernel System.ArgumentNullException: value cannot be null. Parameter name: path1

我在互联网上花了大约 2 个小时,但找不到解决我的问题的方法。

最后,我发现了我的疏忽,所以我想 post 这个问题并回答我自己的问题,以防其他人(像我这样的新手)犯这个错误。

我的疏忽是我安装了错误的包。我应该安装 Portable.Ninject

为了解决这个问题,我从所有项目中卸载了 Ninject3.3.4,然后通过 NuGet 包安装了 Portable.Ninject 3.3.1(撰写本文时的最新稳定版本)。

我希望这对那些可能会犯类似错误的人有所帮助并节省时间!

就我个人而言,NinjectNinject.PCL

都存在错误

尝试使用 NinjectSettings 构建 StandardKernel :

var settings = new Ninject.NinjectSettings() { LoadExtensions = false };
Kernel = new StandardKernel(settings, new ViewModelsModule());

此致

Emmanuel DURIN 给出了将 Ninject 3.3.4 与 Xamarin.Forms .Net Standard 结合使用的正确答案。

var settings = new Ninject.NinjectSettings() { LoadExtensions = false }; Kernel = new StandardKernel(settings, new ViewModelsModule());

而不是

Kernel = new StandardKernel(new ViewModelsModule());