【问题标题】:MvvmCross 5.4 Crash on app startup with NullRef at ConsoleLogProviderMvvmCross 5.4 在 ConsoleLogProvider 使用 NullRef 启动应用程序时崩溃
【发布时间】:2017-11-01 08:07:57
【问题描述】:

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

“MvvmCross.Core.Platform.LogProviders.ConsoleLogProvider”的类型初始化程序引发了异常。 ---> System.NullReferenceException:对象引用未设置为对象的实例

【问题讨论】:

标签: xamarin xamarin.android linker mvvmcross


【解决方案1】:

这是 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;
}

【讨论】:

  • 感谢您的快速回答!以及实际上完美运行的解决方法。感谢您的帮助
  • protected override MvxLogProviderType GetDefaultLogProviderType() { return MvxLogProviderType.None; }
猜你喜欢
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2016-09-02
相关资源
最近更新 更多