当我使用
之类的预处理程序指令时1 #if(DEBUG)
2 // 1
3 // 2
4 #else
5 // 1
6 // 2
7 #endif
8
9 logger.Debug("Log exception, etc.");
它导致在运行时日志中的行号(例如堆栈跟踪)不正确 - 在上面的示例中,第9行将变为4,因为其余部分将由预处理器解析。
这使得日志分析非常困难。
有没有办法在不使用ConditionalAttribute
创建方法的情况下解决此问题?
我知道Debugger.IsAttached
(我现在正在使用此解决方案)但我更愿意根据构建模式(调试/发布)运行代码,而不是调试器是否已连接。
答案 0 :(得分:2)
我在一个完全独立的项目中再次检查,并且Ross Patterson建议,异常跟踪是正确的。
不幸的是,我已经使用Debugger.IsAttached重构了我的(大型)项目,问题就消失了,所以我(毫无根据地说)怀疑预处理程序指令是个问题。也许.pdb与二进制文件不同步。
由于我现在无法重现这个问题,我认为它已经解决了。很高兴知道这种情况得到支持。谢谢Ross Patterson!
答案 1 :(得分:0)
我有同样的问题,但我没有看到预处理器指令,我看到这种情况发生在部分类中。想知道部分类是否是问题的原因。