我有一個 Xamarin.Forms UWP 應用程序(Xamarin.Forms v3.4.0.1008975,UWP 目標/最小版本 16299,VS 2017 15.9.11)。在沒有 .net 本機工具鏈的情況下編譯時,它可以正確構建和運行。當使用 .net 本機工具鏈編譯時,它構建良好但在運行時失敗。這是一個問題,因為我無法將應用程序發布到 Windows 應用商店。此應用程序之前(約 10 個月前)已發布到商店并正常運行。從那時起,隨著 XF、Prism、sqlite 包的更新版本以及在許多其他更改中添加了幾個其他包,進行了廣泛的檢修,因此幾乎不可能找出可能導致它的更改。我設法解決了 Rg.Plugins.Popup 和 Xam.Plugin.Iconize.FontAwesome 包的一些初始問題,方法是獲取它們的程序集列表并將它們傳遞到Xamarin.Forms.Forms.Init(e, assemblies);UWP 項目的 App.xaml.cs 中。這修復了我的應用程序中彈出窗口和字體圖標的崩潰/顯示問題。當應用程序啟動時,我看到有幾個處理了表單FileNotFoundException的Xamarin.Forms.Forms.Init(...)調用Cannot load assembly 'clrcompression'. No metadata found for this assembly.。缺少的程序集是:壓縮e_sqlite3libEGLlibGLESv2libSkiaSharpSkiaSharp.Views.Interop.UWPsqlite3如前所述,這些錯誤已被處理并且僅在調試時可見。我沒有看到任何明確的證據表明這些錯誤是一個問題,因為該應用程序確實從 Sqlite 中讀取了一些數據而沒有錯誤,而且我看到使用 SkiaSharp 正確繪制的圖像。但是,當我執行導致應用程序崩潰的某些操作時,我會收到其他運行時錯誤。例如Unhandled exception at 0x05F8F74C (SharedLibrary.dll) in MyApp.UWP.exe: 0x00001007. occurred。如果我查看線程窗口,我會得到更多信息:不幸的是,雖然這告訴我問題發生在哪里,但它并沒有給我任何關于它為什么發生以及我如何解決它的線索。在這種情況下,它似乎無法在視圖模型上設置屬性,但即使在代碼中達到這一點,它也必須在其他地方成功完成。我想我真的在尋找有關如何調查此問題/獲取更多信息的指導,因為如果沒有一些源代碼(我無法真正提供),將很難解決特定問題。我曾嘗試在關閉優化的情況下進行調試,這通常是建議的,但它沒有提供比我在此處發布的更多的信息。我還擔心,即使我找出為什么會發生此特定異常并修復它,應用程序中也可能存在更多僅在使用 .net 本機工具鏈時才會出現的問題。有什么工具可以幫助我解決這個問題嗎?
1 回答

繁花如伊
TA貢獻2012條經驗 獲得超12個贊
所以這原來是 Prism (7.0.0.396) 和 .net 本機的問題。當使用 .net 本機工具鏈編譯時,它看起來像使用失敗的可空類型(int?在本例中)綁定屬性。BindableBase.SetProperty以下似乎可以解決此問題:
public class BindableBaseWithFix : BindableBase
{
protected virtual bool SetProperty<T>(ref T? storage, T? value, [CallerMemberName] string propertyName = null)
where T : struct
{
if (EqualityComparer<T?>.Default.Equals(storage, value))
return false;
storage = value;
RaisePropertyChanged(propertyName);
return true;
}
}
- 1 回答
- 0 關注
- 102 瀏覽
添加回答
舉報
0/150
提交
取消