MvvmCross 5.4使用NullRef在ConsoleLogProvider上启动app启动时崩溃

时间:2017-11-01 08:07:58

标签: xamarin xamarin.android linker mvvmcross

我已将我的Xamarin.Android应用包MvvmCross5.3.2更新为5.4,并且应用在启动时开始崩溃。手动我发现原因是链接器 - 我启用了link SDK libs only选项。使用None选项,它可以很好地工作,但会生成两倍大的包。

  

' MvvmCross.Core.Platform.LogProviders.ConsoleLogProvider'的类型初始值设定项。抛出一个例外。 ---> System.NullReferenceException:未将对象引用设置为对象的实例

1 个答案:

答案 0 :(得分:22)

这是MvvmCross 5.4中的已知错误,将在下一版本中修复。

与此同时,作为一种解决方法,您可以转到Setup课程并覆盖GetDefaultLogProviderType,以便它返回MvxLogProviderType.None,如下所示:

protected override MvxLogProviderType GetDefaultLogProviderType() 
    => MvxLogProviderType.None;

修改

由于提供商依赖于反思,如果您想将控制台提供程序与IMvxLog一起使用,只需将其包含在LinkerPleaseInclude.cs中:

using System;

//[...]

public void Include(ConsoleColor color)
{
    Console.Write("");
    Console.WriteLine("");
    color = Console.ForegroundColor;
    Console.ForegroundColor = ConsoleColor.Red;
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.ForegroundColor = ConsoleColor.Magenta;
    Console.ForegroundColor = ConsoleColor.White;
    Console.ForegroundColor = ConsoleColor.Gray;
    Console.ForegroundColor = ConsoleColor.DarkGray;
}