如何在发布模式+“.Net Native工具链”中调试UWP应用程序

我已经开发了一个可以在全球范围内正常运行的UWP应用程序 ,但是我遇到了Store应用程序或Release版本的一些问题,而在Debug构建中一切正常…

该应用程序似乎非常基本:ts允许用户通过Web服务创建和同步表单。 在应用程序启动时,将进行测试以查看用户是否已登录:如果不是这样,则应用导航到“ 登录 ”页面,否则导航到“ 主页 ”页面,其中包含表格清单。 然后,用户可以通过“ 详细信息 ”页面编辑每个表单。

“调试模式:

当我在“调试”模式下构建应用程序时,我没有遇到任何未捕获的exception,并且一切正常

商店应用:

Store应用程序的最新版本已成功生成并validation,没有任何问题。 但是,当用户从“ 详细信息 ”页面返回“ 主页 ”页面时,我的最后一项更改会引发应用程序崩溃

我怀疑这个更改特别引发错误:我在“ 详细信息 ”视图中添加了一些代码来通过“ OnNavigatedFrom ()”来清理资源:

protected override void OnNavigatedFrom(NavigationEventArgs e) { ViewModel = this.DataContext as DetailsViewModel; if (!ViewModel.ToChildNavigate) { // Dispose resources this.Resources.Clear(); this.Loaded -= DetailsPage_Loaded; ViewModel = null; } base.OnNavigatedFrom(e); } 

为了解决这个问题,我想在“发布”模式下使用“.Net Native tool chain”构建应用程序。

“发布”模式:

在“ 发布 ”模式下,我已经检查了“ 使用.NET Native工具链编译 ”和“ 优化代码 ”选项。 在此处输入图像描述

应用程序正确启动并精确导航“ 登录 ”页面。 但是在用户连接之后,应用程序尝试导航到“ 主页 ”页面:我得到2个例外 ,我不能做任何其他事情……

第一个例外发生一次,我可以“继续”: 在此处输入图像描述

即使我尝试继续,每次都会出现第二个exception: 在此处输入图像描述

我试图添加一些MessageDialog来查看错误发生的位置,但是消息没有显示在consctructors中:所以我无法识别问题的根源……

“原生工具链”的“调试”模式

最后,我尝试再次在“调试”模式下构建应用程序,但选择“ 使用.NET Native工具链编译 ”和“ 优化代码 ”选项。

但是像这样,它工作正常,我无法重现“发布”模式中遇到的错误…

我没有其他想法,我不能回答这些问题:

  • 为什么Store版本和Release模式之间存在差异?
  • 我怎么能在发布模式下使用该应用程序? 可以“调试”它吗?
  • 我必须在发布模式下启动应用程序以修复遇到的商店版本的错误…

问候,

默认情况下, 发布配置会优化丢失一些用于调试的工件的代码 。 因此,尝试调试Release配置可能会导致一些问题。

值得注意的是,Release配置默认为完全优化的代码(例如, 代码内联将应用于许多地方)。 这些优化将对调试体验产生重大影响,包括不可预测的步进和断点行为 (由于代码内联)以及由于内存优化而无法检查大多数变量。

因此,要在“发布”模式下调试UWP应用程序,我们可以创建自定义配置并为该配置启用.NET Native工具链。 确保不优化代码。

有关更多详细信息,请参阅调试.NET Native Windows Universal Apps 。

我刚才有同样的问题。 经过长时间的尝试和错误,我能够在发布模式下调试.net本机工具链与另一台PC上的远程调试(在我的情况下,它是一个表面)。

我使用Visual Studio 2017和远程机器上的2017年远程调试工具。

希望这可以帮助。

问候。