在发布配置上部署会导致异常“无法找到 MvvmCross.Core.MvxSettings 类型的构造函数”

问题描述 投票:0回答:1

我使用 MvvmCross 星球大战示例(https://github.com/MvvmCross/MvvmCross-Samples/tree/master/StarWarsSample)作为一个项目开始,根据我的一些需求进行调整并尝试部署它在谷歌 Pixel 4 上。

我只有核心和 droid 项目,没有 iOS。

在调试模式下启动应用程序工作正常。

启动部署的应用程序时发生错误,请参阅:visual studio exception

LogCat 堆栈跟踪:

06-09 21:33:24.491:I/MonoDroid(24322):未处理的异常: 06-09 21:33:24.495:I / MonoDroid(24322):System.ArgumentNullException:MvxWeakEventSubscription 中缺少源事件信息 06-09 21:33:24.495:I / MonoDroid(24322):参数名称:sourceEventInfo 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.WeakSubscription.MvxWeakEventSubscription

2[TSource,TEventArgs]..ctor (Android.Views.View source, System.Reflection.EventInfo sourceEventInfo, System.EventHandler
1 [TEventArgs] targetEventHandler)[0x0001d]中:0 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.WeakSubscription.MvxWeakEventSubscription
2[TSource,TEventArgs]..ctor (Android.Views.View source, System.String sourceEventName, System.EventHandler
1 [TEventArgs] targetEventHandler)[0x00012]中:0 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.Platforms.Android.WeakSubscription.MvxAndroidTargetEventSubscription
2[TSource,TEventArgs]..ctor (Android.Views.View source, System.String sourceEventName, System.EventHandler
1[TEventArgs] targetEventHandler)[0x00000]中:0 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.Platforms.Android.WeakSubscription.MvxAndroidWeakSubscriptionExtensions.WeakSubscribe [TSource,TEventArgs](TSource源,System.String eventName,System.EventHandler`1 [TEventArgs]事件处理程序)[0x00000] 在:0 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.Droid.Support.V7.RecyclerView.MvxRecyclerViewHolder.OnAttachedToWindow()[0x00074]在<6dcdb499fdcb47abb57d7957137b06a2>:0 06-09 21:33:24.496:I / MonoDroid(24322):在MvvmCross.Droid.Support.V7.RecyclerView.MvxRecyclerAdapter.OnViewAttachedToWindow(Java.Lang.Object持有者)[0x0000e]在<6dcdb499fdcb47abb57d7957137b06a2>:0 06-09 21:33:24.496:I / MonoDroid(24322):在AndroidX.RecyclerView.Widget.RecyclerView + Adapter.n_OnViewAttachedToWindow_Landroidx_recyclerview_widget_RecyclerView_ViewHolder_(System.IntPtr jnienv,System.IntPtr native__this,System.IntPtr native_holder)[0x0000 f] 于:0 06-09 21:33:24.496:I / MonoDroid(24322):在(包装动态方法)Android.Runtime.DynamicMethodNameCounter.55(intptr,intptr,intptr)

(2020年6月10日)编辑1: 将标题从“无法找到 MvvmCross.Core.MvxSettings 类型的构造函数#”更改为“在发布配置上部署会导致异常“无法找到 MvvmCross.Core.MvxSettings 类型的构造函数”'

(2020年6月10日)编辑2: 将以下代码片段插入 LinkerPleaseIninclude.cs

public void Include(MvxSettings mvxSettings)
{
    mvxSettings = new MvxSettings();
}

public void Include(MvxStringToTypeParser mvxStringToTypeParser)
{
    mvxStringToTypeParser = new MvxStringToTypeParser();
}

现在在 MyApp.Droid.Setup.CreateApp() 之后但在 MyApp.Core.App 初始化之前或之中似乎出现错误。

由于其中没有异步方法,似乎此时冻结还有另一个原因。

android xamarin nullpointerexception mvvmcross
1个回答
0
投票

就像评论中讨论的那样,这是一个修剪问题。 我们已从 .NET 6 升级到 .NET 8,并在 .NET 7/8 中删除了使用的修剪模式。

在 android.csproj 中将 copyused 替换为 partial 对我们有用。

    <TrimMode>partial</TrimMode>
© www.soinside.com 2019 - 2024. All rights reserved.