如何在发布之前捕获 XAML 错误?

How do I catch XAML bugs before release?

提问人:BuckBuchanan 提问时间:11/7/2023 更新时间:11/7/2023 访问量:64

问:

我们遇到了几个问题,在我们的本地设备上一切正常,但在我们部署发布版本时崩溃。

我们已确定这主要是由 XAML 代码中的 bug 引起的。

我猜XAML在发布与调试版本(可能是编译)方面存在一些差异。问题是调试似乎对问题更宽容,这意味着只有在发布后它们才会被发现。

问题是这些错误很难找到。堆栈跟踪没有显示任何有价值的东西,因此您需要使用额外的错误查找代码继续重复发布,这非常耗时。

有谁知道 a) 是什么原因导致的,以及 b) 我可以做些什么来在调试时发现这些问题?

我已经在App中设置了这个: [程序集:XamlCompilation(XamlCompilationOptions.Compile)]

我还将其添加到背后的代码中(由于上述原因,不确定我需要这样做? [XamlCompilation(XamlCompilationOptions.编译)]

我应该做点别的事情吗?

谢谢

C# .NET XAML 毛伊

评论

2赞 Thomas Weller 11/7/2023
您可以在发布版本中运行代码,甚至可以在自己的计算机上运行代码。为发布版本创建 PDB,以便对其进行调试。检查打印到某些输出窗口中的绑定问题等。请确保在设置中实际提供所有 DLL,并将它们放在正确的位置。在向客户发货之前进行广泛的测试。
1赞 H.A.H. 11/7/2023
您能举例说明其中一个难以找到的错误,这些错误仅在发布模式下才会显现出来吗?
0赞 Julian 11/7/2023
无需在 MAUI 中显式启用 XAML 编译,默认情况下处于启用状态。您可以安全地摆脱这些线条。你在说什么样的错误?您是否正在使用已编译的绑定?绑定是否依赖于异步加载的数据?请显示一个示例,其中包含发生此类问题的代码(XAML、代码隐藏和 ViewModel)。[XamlCompilation(XamlCompilationOptions.Compile)]
0赞 BuckBuchanan 11/8/2023
下面是一个示例。有人将按钮复制/粘贴到 ContentView 中,但忘记删除它:IsVisible=“{Binding Source={x:Reference myView}, Path=ShowEditFunction}”。开始出现的异常是“无法找出路由://MyPage”。该异常几乎没有为问题提供线索。
0赞 BuckBuchanan 11/8/2023
关于运行本地发布版本 - 我放弃了尝试。根据我的经验,在 VS 中获得成功发布版本的机会几乎为零。在 VS for Mac 中,它实际上是零。其他人没有同样的问题吗?值得一提的是,这些问题很大程度上与iOS有关,尽管我上面的例子也发生在Android中。

答: 暂无答案