Снова возникает проблема с компоновщиком с MvvmCross в Xamarin Android. Недавно обновился до MvvmCross 6.1.2 и начал использовать Serilog. При компиляции в режиме выпуска с использованием «Sdk и пользовательских сборок» я получал следующую ошибку от base.CreateLogProvider () во время установки Android:
Код CreateLogProvider ():
public override MvxLogProviderType GetDefaultLogProviderType()
=> MvxLogProviderType.Serilog;
protected override IMvxLogProvider CreateLogProvider()
{
Serilog.Log.Logger = new LoggerConfiguration()
.MinimumLevel.Error()
.WriteTo.AndroidLog()
.CreateLogger();
return base.CreateLogProvider();
}
ИСКЛЮЧЕНИЕ:
System.Exception: HandleAndroidException ---> System.ArgumentNullException: Value cannot be null.
Parameter name: method
at System.Linq.Expressions.Expression.Call(System.Linq.Expressions.Expression instance, System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1, System.Linq.Expressions.Expression arg2)[0x0009d] in <c674d6912966428cb26998a802347469>:0
at System.Linq.Expressions.Expression.Call(System.Linq.Expressions.Expression instance, System.Reflection.MethodInfo method, System.Collections.Generic.IEnumerable`1[T] arguments) [0x00074] in <c674d6912966428cb26998a802347469>:0
at System.Linq.Expressions.Expression.Call(System.Linq.Expressions.Expression instance, System.Reflection.MethodInfo method, System.Linq.Expressions.Expression[] arguments) [0x00000] in <c674d6912966428cb26998a802347469>:0
at MvvmCross.Logging.LogProviders.SerilogLogProvider.GetForContextMethodCall() [0x00086] in <df54a54dac96467098c3a9eece96a79b>:0
at MvvmCross.Logging.LogProviders.SerilogLogProvider..ctor() [0x00018] in <df54a54dac96467098c3a9eece96a79b>:0
at MvvmCross.Core.MvxSetup.CreateLogProvider() [0x00045] in <df54a54dac96467098c3a9eece96a79b>:0
at myRouteTracker.Droid.Setup.CreateLogProvider() [0x0002a] in <bdd41c7f90344b17a5e6bc21c3959feb>:0
at MvvmCross.Core.MvxSetup.InitializeLoggingServices() [0x00000] in <df54a54dac96467098c3a9eece96a79b>:0
at MvvmCross.Core.MvxSetup.InitializePrimary() [0x00016] in <df54a54dac96467098c3a9eece96a79b>:0
at MvvmCross.Core.MvxSetupSingleton.StartSetupInitialization() [0x0000a] in <df54a54dac96467098c3a9eece96a79b>:0
at MvvmCross.Core.MvxSetupSingleton.InitializeAndMonitor(MvvmCross.Core.IMvxSetupMonitor setupMonitor) [0x00042] in <df54a54dac96467098c3a9eece96a79b>:0
at MvvmCross.Droid.Support.V7.AppCompat.MvxSplashScreenAppCompatActivity.OnCreate(Android.OS.Bundle bundle) [0x00019] in <2d476ccd46884988a021d78ffc7a2843>:0
at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_(System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x0000f] in <1b4c73c9a2864ea8b5827f31fda08c32>:0
at(wrapper dynamic-method) System.Object.e043741f-fba6-4072-a6c2-cfc97949a294(intptr, intptr, intptr)
--- End of inner exception stack trace ---
При других проблемах со связыванием я обычно пытаюсь получить доступ к функции, удаленной в LinkerPleaseInclude. в этом случае MvvmCross.Logging.LogProviders.SerilogLogProvider.GetForContextMethodCall (). Однако SerilogLogProvider - это внутренний класс, к которому я не смог получить доступ.
Последнее, что я попробовал, это добавить Serilog и MvvmCross.Logging.LogProviders к «Пропускать связывание сборок». Не работает ни один.
Большое спасибо за вашу помощь заранее.
С уважением,
Ник