我遇到了一个问题,那里有人显然禁用了我正在处理的C#.NET项目中的DEBUG
和TRACE
常量,所以我对Debug.WriteLine
的调用没有任何效果。 (输出中没有显示调试输出。)在重新启用它们as described here后,我开始看到我的输出。为什么Debug.WriteLine在没有DEBUG常量的情况下工作?
知道如何解决它是有帮助的,但我的问题是为什么?据我所知,DEBUG
是一个编译时间常数,并且Debug
类已编译,当我建立我的项目。那么我怎样才能跳过Debug.WriteLine
;不应该像我所有的其他代码一样编译它们吗?
我能想到的几个可能的方式,这可能会发生:
- MS实现了一些特殊的“功能”,在编译器不恒定
- Visual Studio来删除这些调用设置调试器,使得它或不听基于此项目设置为调试输出,当它运行
Debug
有一些疯狂的代码,检查调用程序集的某种标志的设置在编译时
MS的documentation表明这是预期的行为,但我一直无法追查任何关于它是如何工作的文档。当然,这也可能是我从未想过的事情。
那么它是如何工作的?
根据要求更新 – nitzmahone