我有一個我幾年前構建的本機 Xamarin.Android 應用程式,從那時起我一直在維護它。最近,我嘗試構建一個新版本,但該應用程式不斷崩潰。過去,我使用相同的專案和編譯設定發布了數十個版本。這是我在發布時獲得的堆疊跟蹤示例:
[mono-rt] [錯誤] 致命的未處理例外:System.IO.FileNotFoundException:無法加載檔案或程式集“System.Core,版本=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e”或其依賴項之一。 [mono-rt] 在 System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction10-21 13 :24:49.970 F/mono-rt (15785):檔案名:'System.Core,版本=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e' [mono-rt] 在 Java.Interop.JniEnvironmentInfo..ctor () [0x00006] 中:0 [mono-rt] 在 Java.Interop.JniEnvironment c.b__35_0 () [0x00000] in :0 [mono-rt] 在 System.Threading.ThreadLocal`1[T].GetValueSlow () [0x00031] 在 :0 [mono-rt] 在 System.Threading.ThreadLocal`1[T].get_Value () [0x0003e] 在 :0 [mono-rt] 在 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in :0ds.CallStaticObjectMethod(Java.Interop.JniObjectReference 型別,Java.Interop.JniMethodInfo 方法,Java.Interop.JniArgumentValue* args)[0x00002d] :0 [mono-rt] 在 Java.Interop.JniPeerMembers JniStaticMethods.InvokeObjectMethod(System.String encodingMember,Java.Interop.JniArgumentValue* 引數)[0x00018] 在:0 [mono-rt] 在 Java.Interop.JniEnvironment StaticMet10-21 13:24:49.970 F/mono-rt (15785): 在 Android.OS.Looper.get_MainLooper () [0x0000a] 在 :0 [mono-rt] 在 Android.Runtime.AndroidEnvironment.GetDefaultSyncContext () [0x00000] 中:0 [mono-rt] 在 System.AndroidPlatform.GetDefaultSyncContext () [0x00000] 中:0 [mono-rt] 在 System.Threading.SynchronizationContext.GetThreadLocalContext () [0x00005] 中:0 [mono-rt] 在 System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation.Run (System.Threading.Tasks.Task 被忽略,System.Boolean canInlineContinuationTask) [0x00003] in :0 [mono-rt] 在 System.Threading.Tasks.Task.FinishStageThree () [0x0003c] 中:0 [mono-rt] at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x0004f] in :0 [mono-rt] 在 System.Threading.Tasks.TaskFactory`1 c__DisplayClass38_0`1[TResult,TArg1].b__0 (System.IAsyncResult iar) [0x00008] in :0 [mono-rt] at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in 10-21 13:24:49.970 F/mono-rt (15785): at (wrapper managed-to-native) System.Runtime.Remoting .Messaging.AsyncResult.Invoke(System.Runtime.Remoting.Messaging.AsyncResult) [mono-rt] 在 System.Runtime.Remoting.Messaging.AsyncResult.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00000] 中:0 [mono-rt] 在 System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] 中:0
從堆疊跟蹤來看,我覺得聯結器可能有問題,但我已經嘗試了所有 3 個設定(不鏈接,僅鏈接 SDK 程式集,鏈接所有)。在這里和那里更改一些代碼時,有時我的堆疊跟蹤略有不同,但沒有任何幫助。這是我正在使用的編譯設定:





不時,該應用程式將成功啟動,無需更改任何特殊時間。它只會作業一次。
我錯過了什么?
uj5u.com熱心網友回復:
確保您的 .NET 框架已打補丁。Microsoft 發布了 .NET 補丁,允許可移植類別庫正確找到合適的運行時 ( KB2468871 )。如果您看到上述例外(或類似例外),則意味著您缺少最新的 .NET 框架補丁。
您可以在 MSDN 上閱讀有關可移植類別庫的更多資訊。
uj5u.com熱心網友回復:
我很確定你在發布時有一些奇怪的行為。由于您在 android 上使用 mono,您可能會在某處呼叫 await 函式,該函式回傳 aTask<T>您不能使用 await 而是 .GetAwaiter().Result。
https://github.com/xamarin/xamarin-android/issues/6409
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/348031.html
