在Visual Studio 2010中,如果转到项目的属性并转到“构建”选项卡,则会出现“定义TRACE常量”复选框。这相当于做#define TRACE。
System.Diagnostics.Trace的所有方法都围绕着它们[Conditional("TRACE")]
。
我的问题是为什么你会把它关掉吗?我的意思是,如果你没有定义任何跟踪侦听器,那么就好像你要填满日志或其他内容。这让我觉得很奇怪。如果您正在努力调用Trace,为什么不想通过App / Web.config来控制它,而是通过编译器开关来控制它,这样就排除了重新启用它的可能性。重新编译。
我错过了什么吗?当然,它不能对性能有害,对吧?
答案 0 :(得分:31)
据推测,此复选框等同于/define:TRACE
编译器选项。您可能希望为发布版本关闭此选项,因为您不希望最终用户出于某种原因(例如安全性)查看跟踪输出,或者提高性能。当然,性能提升将取决于打开时的工作量,但Conditional attribute将导致编译器从生成的IL中完全删除函数调用(包括任何字符串格式化等),所以它可以产生重大影响。