C# Xamarin在布局根页面(Platform.LayoutRootPage)时形成错误诊断

C# Xamarin在布局根页面(Platform.LayoutRootPage)时形成错误诊断,c#,xamarin.forms,xamarin.android,C#,Xamarin.forms,Xamarin.android,在处理以Xamarin表单编写的应用程序时,我经常看到以下导致应用程序崩溃的异常: 11-16 11:00:40.009 I/MonoDroid(16094): UNHANDLED EXCEPTION: 11-16 11:00:40.113 I/MonoDroid(16094): System.NullReferenceException: Object reference not set to an instance of an object. 11-16 11:00:40.113 I/Mon

在处理以Xamarin表单编写的应用程序时,我经常看到以下导致应用程序崩溃的异常:

11-16 11:00:40.009 I/MonoDroid(16094): UNHANDLED EXCEPTION:
11-16 11:00:40.113 I/MonoDroid(16094): System.NullReferenceException: Object reference not set to an instance of an object.
11-16 11:00:40.113 I/MonoDroid(16094):   at Xamarin.Forms.Platform.Android.AppCompat.Platform.LayoutRootPage (Xamarin.Forms.Page page, System.Int32 width, System.Int32 height) [0x0000c] in D:\agent\_work\1\s\Xamarin.Forms.Platform.Android\AppCompat\Platform.cs:290 
11-16 11:00:40.113 I/MonoDroid(16094):   at Xamarin.Forms.Platform.Android.AppCompat.Platform.Xamarin.Forms.Platform.Android.IPlatformLayout.OnLayout (System.Boolean changed, System.Int32 l, System.Int32 t, System.Int32 r, System.Int32 b) [0x00003] in D:\agent\_work\1\s\Xamarin.Forms.Platform.Android\AppCompat\Platform.cs:199 
11-16 11:00:40.113 I/MonoDroid(16094):   at Xamarin.Forms.Platform.Android.PlatformRenderer.OnLayout (System.Boolean changed, System.Int32 l, System.Int32 t, System.Int32 r, System.Int32 b) [0x0000e] in D:\agent\_work\1\s\Xamarin.Forms.Platform.Android\PlatformRenderer.cs:73 
11-16 11:00:40.113 I/MonoDroid(16094):   at Android.Views.ViewGroup.n_OnLayout_ZIIII (System.IntPtr jnienv, System.IntPtr native__this, System.Boolean changed, System.Int32 l, System.Int32 t, System.Int32 r, System.Int32 b) [0x00008] in <e975227ac8644a30bb0866117325de0d>:0 
11-16 11:00:40.113 I/MonoDroid(16094):   at (wrapper dynamic-method) System.Object:55caff06-7828-42f0-9580-cfb6673c4b5a (intptr,intptr,bool,int,int,int,int)
但这些事件都不会在异常发生时触发。有人知道为什么吗

有没有办法获得更多信息

您可以使用:

图为:

但这些事件都不会在异常发生时触发

如果该错误是您的
XAML
有问题,则它是一个编译错误,它无法触发您的
异常处理程序

有没有办法获得更多信息

您可以使用:

图为:

但这些事件都不会在异常发生时触发


如果该错误是您的
XAML
有问题,则它是一个编译错误,它无法触发您的
异常处理程序

,这不是生成问题。这是一个运行时问题。应用程序生成正确,但在启动时(无论是在模拟器上还是在设备上),它会崩溃,并报告引用未设置异常。@spatialguy,请共享诊断MSBuild输出好吗?我们需要查看一些错误日志以帮助您查明问题。@spatialguy,您是否尝试使用调试器查找哪一行正在崩溃?有人找到了解决方案吗?这不是生成问题。这是一个运行时问题。应用程序生成正确,但在启动时(无论是在模拟器上还是在设备上),它会崩溃,并报告引用未设置异常。@spatialguy,请共享诊断MSBuild输出好吗?我们需要查看一些错误日志来帮助您查明问题。@spatialguy,您是否尝试使用调试器来查找哪一行正在崩溃?有人找到了解决方案吗?有没有解决方案@spatialguy?有没有解决方案@spatialguy??
    protected override async void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        ...
        RegisterExceptionHandlers();
        ...

    }
    private void RegisterExceptionHandlers()
    {
        TaskScheduler.UnobservedTaskException += UnobservedException;
        AppDomain.CurrentDomain.UnhandledException += UnhandledException;
        AndroidEnvironment.UnhandledExceptionRaiser += UnhandledExceptionRaiser;
    }

    private void UnhandledException(object source, UnhandledExceptionEventArgs args)
    {
        Log.Error("Domain Exception from {source}: {exception}", source, args.ExceptionObject?.ToString() ?? "N/A");
    }
    private void UnobservedException(object source, UnobservedTaskExceptionEventArgs args)
    {
        Log.Error("TaskSchedulerException: {source} {exception}", source, args);
        if (!args.Observed)
            args.SetObserved();
    }

    private void UnhandledExceptionRaiser(object source, RaiseThrowableEventArgs args)
    {
        Log.Error("Exception from {source}: {exception}", source, args.Exception?.ToString() ?? "N/A");
    }