我有一个 Windows 10 通用应用程序,它在 Exception 对象 .ToString() 方法中不包含行号。
如果我有这样的方法
private void ThrowException()
{
try { throw new Exception("Test"); }
catch (Exception e) { Debug.WriteLine(ex.ToString()); }
}
当我检查输出时,我没有看到引发异常的行号。我向项目添加了构建后事件:
xcopy $(ProjectDir)$(OutDir)*.pdb $(ProjectDir)$(OutDir)AppX\*.pdb
pdb 文件位于 Debug 文件夹中,但不在 AppX 文件夹中。
我错过了什么?谢谢,
编辑
我创建了一个新项目来测试它。我有一个页面(MainPage.xaml)。这是文件背后的代码:
using System;
using Windows.UI.Popups;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace App2
{
public sealed partial class MainPage : Page
{
public MainPage()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
ThrowException();
}
private async void ThrowException()
{
try { throw new Exception("Test"); }
catch (Exception ex) { await new MessageDialog(ex.ToString()).ShowAsync(); }
}
}
}
和以前一样,我添加了构建后事件宏:
xcopy $(ProjectDir)$(OutDir)*.pdb $(ProjectDir)$(OutDir)AppX\*.pdb
我在发布配置中进行编译,并确保选中“使用 .NET native 工具链编译”选项。
C:\VS2015\App2\App2\bin\x86\Release\AppX 中的 Appx 文件夹确实存在文件 App2.dll 和 App2.pdb。
当我运行应用程序时,我会在弹出对话框中看到以下内容:
System.Exception: Test
at SharedLibrary!<BaseAddress>+0x122d16
谢谢
编辑2
我还在没有 native 工具链的调试中尝试过此操作。在这种情况下,我没有在 Debug 下的 AppX 文件夹中看到 pdb 文件
这种情况下的消息是:
System.Exception: Test
at App2.MainPage.<ThrowException>d_2.MoveNext()
谢谢
最佳答案
我在原来的答案中犯了一个错误,并且使用的是立即窗口输出,而不是代码可以从异常对象中获取的内容。
经过更多研究,似乎不再支持此功能。
参见corefx #1420及相关corefx #1797 .
另外,SO 上有这样的引用:How to get StackTrace without Exception in Windows Universal 10 App
关于c# - Windows 10 异常不包括行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833573/