UWP:访问冲突仅在发布模式下发生
UWP: Access violation happens only in release mode
我是 UWP 新手。我刚刚移植了一个相当复杂的 WPF 应用程序。我花了几周的时间才找出每一个不同之处并重构了大量代码。但是,当我开始构建并且 运行 处于发布模式时,我得到一个访问冲突异常。
这怎么可能?调试和发布执行不应该是一样的吗?如果仅在发布时出现此问题,我该如何调试?
如果我关闭本机编译,发布版本 运行 不会有问题。但是,当我尝试在设备上安装它时,需要 NetCore 2.2 调试框架。这个调试框架是什么,为什么没有它我不能 运行 我的发布代码?
我曾经为 AspNetCore 开发,那些东西甚至可以 运行 Linux。我真的不明白 UWP 应用程序如何不能在没有特殊调试框架的 Windows 10 平板电脑上 运行。
我有点迷路了。非常感谢任何帮助或指导。谢谢
编辑:
至于结论:我需要从头开始重新创建应用程序。我开始从 class 的旧应用程序 class 复制所有内容。这些努力是值得的,不仅因为我重构了很多代码 :),而且终于找到了导致崩溃的原因。我的一个库依赖于旧版本的 System.ServiceModel.Primitives NuGet 包。在调试构建中,即使使用本机编译,运行 时间也设法解析了包。但是,在 Release 中它不能。
让我开发出更好的软件是一段相当长的旅程。但是,我可以通过从一开始就更频繁地发布来避免它,或者如果 运行time 会显示有关程序集解析问题的更多信息错误消息。
.NET Native 编译容易导致应用程序出现问题,建议在发布模式下频繁尝试运行 应用程序,以尽快发现潜在问题。通常任何与反射相关的代码都应该仔细检查,因为这些通常是问题的根源。
我建议及时返回(如果您有某种源代码控制)并尝试较早版本的应用程序以确定应用程序停止工作的时间。或者,您可以尝试注释掉部分代码,直到发布版本开始工作。最后,也可以新建一个空白工程,依次复制代码和运行来定位问题。
.NET Native 是 UWP 应用程序开发的一个烦人的方面,Microsoft 意识到了这一点 - 计划是很快不再需要 .NET Native(很可能在 .NET 5 出现之前),稍后会有更可预测的替代品。
我是 UWP 新手。我刚刚移植了一个相当复杂的 WPF 应用程序。我花了几周的时间才找出每一个不同之处并重构了大量代码。但是,当我开始构建并且 运行 处于发布模式时,我得到一个访问冲突异常。
这怎么可能?调试和发布执行不应该是一样的吗?如果仅在发布时出现此问题,我该如何调试?
如果我关闭本机编译,发布版本 运行 不会有问题。但是,当我尝试在设备上安装它时,需要 NetCore 2.2 调试框架。这个调试框架是什么,为什么没有它我不能 运行 我的发布代码?
我曾经为 AspNetCore 开发,那些东西甚至可以 运行 Linux。我真的不明白 UWP 应用程序如何不能在没有特殊调试框架的 Windows 10 平板电脑上 运行。
我有点迷路了。非常感谢任何帮助或指导。谢谢
编辑:
至于结论:我需要从头开始重新创建应用程序。我开始从 class 的旧应用程序 class 复制所有内容。这些努力是值得的,不仅因为我重构了很多代码 :),而且终于找到了导致崩溃的原因。我的一个库依赖于旧版本的 System.ServiceModel.Primitives NuGet 包。在调试构建中,即使使用本机编译,运行 时间也设法解析了包。但是,在 Release 中它不能。
让我开发出更好的软件是一段相当长的旅程。但是,我可以通过从一开始就更频繁地发布来避免它,或者如果 运行time 会显示有关程序集解析问题的更多信息错误消息。
.NET Native 编译容易导致应用程序出现问题,建议在发布模式下频繁尝试运行 应用程序,以尽快发现潜在问题。通常任何与反射相关的代码都应该仔细检查,因为这些通常是问题的根源。
我建议及时返回(如果您有某种源代码控制)并尝试较早版本的应用程序以确定应用程序停止工作的时间。或者,您可以尝试注释掉部分代码,直到发布版本开始工作。最后,也可以新建一个空白工程,依次复制代码和运行来定位问题。
.NET Native 是 UWP 应用程序开发的一个烦人的方面,Microsoft 意识到了这一点 - 计划是很快不再需要 .NET Native(很可能在 .NET 5 出现之前),稍后会有更可预测的替代品。