UWP:記錄一下這幾天踩到的坑


最近在玩微軟的Desktop Bridge項目,遇到了如下幾個坑:

1、文檔中給的是js項目魔改的方法,其實C#項目也可以魔改加入UWP部分的,區別在於:

  • 不用在項目文件里寫<AppxGeneratePrisForPortableLibrariesEnabled>false</AppxGeneratePrisForPortableLibrariesEnabled>
  • 只支持Release,Debug的話會報錯

2、win32項目引用UWP的類庫之后,注意區分有些方法是UWP的,需要CoreWindow的支持。比如使用C# wpf做desktop bridge的時候,調用了 UWP里的獲取分辨率的方法,程序就會報錯,但是因為都是用C#,命名空間也非常相似,還是要多加注意。

3、復制到uwp項目里的win32部分,一定要全部是 內容 復制 ,不然肯定爆炸,而且win32項目不要全部放到根目錄,最好建一個文件夾放所有的win32資源。

4、一個神坑,部分win32項目,尤其是wpf項目引用的dll,放到uwp項目中之后,編譯會報錯,而且我沒找到區分這些出問題的dll的方法。我的解決方法是一個一個的刪,然后測,最后找到了幾個依賴,然后用了其他方法實現。

5、神坑中的神坑。nuget包,Microsoft.NETCore.UniversalWindowsPlatform,版本5.4.X對應.net native1.7,6.0.X對應.net native2.0。

之前我一直用的5.4.X,生成的商店包中的upload,解壓開是可以直接安裝調試的,而6.0.X生成的商店包解壓安裝之后,會卡第一屏然后閃退。

外掛調試器提示KERNELBASE.dll出錯,事件查看器是

錯誤應用程序名稱: TestSapmple.exe,版本: 1.0.0.0,時間戳: 0x5aaa0663
錯誤模塊名稱: KERNELBASE.dll,版本: 10.0.17115.1,時間戳: 0xe1aad729
異常代碼: 0xe0434352
錯誤偏移量: 0x0000000000017e98
錯誤進程 ID: 0x48d8
錯誤應用程序啟動時間: 0x01d3bc2054d14484
錯誤應用程序路徑: C:\Program Files\WindowsApps\XXX\TestSapmple.exe
錯誤模塊路徑: C:\WINDOWS\System32\KERNELBASE.dll
報告 ID: b98bd41a-5bf5-4ed8-8753-b5812a261580
錯誤程序包全名: XXX
錯誤程序包相對應用程序 ID: App

應用程序: TestSapmple.exe
Framework 版本: v4.0.30319
說明: 由於未經處理的異常,進程終止。
異常信息: 異常代碼為 e06d7363,異常地址為 00007FFA9E357E98
堆棧:

 

我把VS重裝幾次,甚至都想重裝系統的時候,突然問了問別的大佬,發現大家都是這種狀況,才知道這是正常的。而微軟的文檔只說讓測試生成的Test文件夾下的appx包,並沒有提到appload文件怎么怎么樣。所以我把這個坑在這里記錄一下,希望下一個遇到這個坑的人能看到。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM