C# UWP 项目debug发布无问题运行,Release模式闪退问题的解决

发布时间 2023-10-20 14:21:51作者: 心中Where_True循环

近期解决了一个非常迷惑的一个问题,问题就在于,项目在本地环境运行时没有任何异常和闪退的现象,而且以Debug模式发布后,发布包安装后,运行也没有任何问题,但是当以Release模式发布并安装,就会出现闪退的问题。

针对对系统日志的分析和错误的解决,我们一共找到两个原因导致这个问题的出现。

1.初始化时间太久,导致系统超时的闪退
2.由于Release模式发布时,系统自动优化代码,导致包丢失闪退

1.初始化时间太久,导致系统超时的闪退

这个解决相对容易,大家可以直接参考:

主页:应用启动性能的最佳做法 - UWP 应用程序 |Microsoft学习

C# 案例代码: msdn-code-gallery-microsoft/Official Windows Platform Sample/Windows 8 app samples/[C#]-Windows 8 app samples/C#/Windows 8 app samples/Splash screen sample (Windows 8)/C# at 411c271e537727d737a53fa2cbe99eaecac00cc0 · microsoftarchive/msdn-code-gallery-microsoft · GitHub

直接贴代码就完了,这个理解起来也简单,就是快速接手启动页,使系统响应,不至于系统被杀死导致闪退。

2.由于Release模式发布时,系统自动优化代码,导致包丢失闪退

这种闪退就比较有意思了,直接上方法:

1.找到我们的项目 xxx.UWP

2.找到Properties点开

3.找到 Default.rd.xml(没有的自己加一个)

<Application>
  <Assembly Name="项目架构名" Dynamic="Required All" />
</Application>

这个东西可以保证你的Dll不被无故删掉,因为Release会优化你的方法,没有被调用的会给你优化掉(删掉),所有没有在系统当中直接书写的,写在别的DLL的,可能会被误删

<Application> 元素是根元素,表示整个应用程序的配置信息。在这个例子中,它包含一个 <Assembly> 元素作为子元素。

<Assembly> 元素用于指定应用程序所需的程序集(或库)的名称和加载方式。在这里,Name 属性指定了程序集的名称,Dynamic 属性指定了程序集的加载方式。

项目架构名就是这个东西:

 以上是我遇到的两个UWP项目闪退原因的解决方案