繁体   English   中英

UWP:访问冲突仅在发布模式下发生

[英]UWP: Access violation happens only in release mode

我是 UWP 的新手。 我刚刚移植了一个相当复杂的 WPF 应用程序。 我花了几个星期才弄清楚每一个差异并重构了很多代码。 但是,当我开始在发布模式下构建和运行时,出现访问冲突异常。

这怎么可能? 调试和发布执行不应该是一样的吗? 如果仅在发布时出现此问题,我该如何调试?

如果我关闭本机编译,则发布版本将毫无问题地运行。 但是,当我尝试在设备上安装它时,需要一个 NetCore 2.2 调试框架。 这个调试框架是什么,为什么没有它我不能运行我的发布代码?

我曾经为 AspNetCore 开发,这些东西甚至可以在 Linux 上运行。 我真的不明白如果没有特殊的调试框架,UWP 应用程序如何无法在 Windows 10 平板电脑上运行。

我有点迷失在这里。 非常感谢任何帮助或指导。 谢谢

编辑:

至于结论:我需要从头开始重新创建应用程序。 我开始逐个从旧的应用程序类中复制所有内容。 值得付出努力,不仅因为我重构了很多代码 :) 还最终找到了导致崩溃的原因。 我的库之一依赖于旧版本的 System.ServiceModel.Primitives NuGet 包。 在调试构建中,即使使用本机编译,运行时也设法解析包。 但是,在 Release 中它不能。

这是一段让我开发更好软件的旅程。 但是,我可以通过从一开始就更频繁地发布来避免它,或者运行时是否会显示有关程序集解析问题的更多信息性错误消息。

.NET Native 编译容易导致应用程序出现问题,建议在发布模式下频繁尝试运行应用程序,以尽快发现潜在问题。 通常任何与反射相关的代码都应该好好检查,因为那些通常是问题的根源。

我建议回到过去(如果你有某种源代码控制)并尝试你的应用程序的早期版本来确定应用程序停止工作的时间。 或者,您可以尝试注释掉部分代码,直到发布版本开始工作。 最后,也可以创建一个空白项目,依次复制代码运行,定位问题。

.NET Native 是 UWP 应用程序开发的一个令人讨厌的方面,Microsoft 意识到这一点 - 计划是很快将不再需要 .NET Native(很可能在 .NET 5 出现之前)并且以后会有更可预测的替代品。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM