问题非常明确。 它应该与
一起使用StackTrace st = new StackTrace(exc, true);
//Get the first stack frame
StackFrame frame = st.GetFrame(0);
//Get the file name
//string fileName = frame.GetFileName();
//Get the line number from the stack frame
int line = frame.GetFileLineNumber();
问题是,如果我在调试模式下启动我的应用程序,它始终有效。 当我在发布模式下启动它时,似乎需要pdb文件来获取此信息。那么保留pdb文件有什么缺点(我认为只有在调试模式下才需要它们)。 Viceversa是获取异常行信息的唯一方法吗?
答案 0 :(得分:2)
那么保留pdb文件有什么缺点(我认为只有在调试模式下才需要它们)
大多数事实是它可以实现更大的部署。显然是doesn't affect performance。
Viceversa这是获取异常行信息的唯一方法吗?
是的,只有pdb包含行信息。但正如评论中所提到的,在发布模式下,行号可能不完全准确。
答案 1 :(得分:1)
除了使用pdb文件的技巧外,如果需要保留行号(不是100%),还需要为项目禁用“优化代码”选项。但这仍然是不推荐,因为它可能会使您的程序变慢。
您可以在项目属性的构建选项中找到它。
优化代码会重新排列代码,删除,移动和添加行以优化它。