欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

UWP:记录一下这几天踩到的坑

程序员文章站 2022-07-23 17:17:57
最近在玩微软的Desktop Bridge项目,遇到了如下几个坑: ......

最近在玩微软的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文件怎么怎么样。所以我把这个坑在这里记录一下,希望下一个遇到这个坑的人能看到。