System.Diagnostics.Trace.WriteLine 不执行

在一个项目单步跟踪这么一段程序        

 System.Diagnostics.Trace.Listeners.Clear();
            System.Diagnostics.Trace.AutoFlush = true;
            System.Diagnostics.Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener("app.log"));
            System.Diagnostics.Trace.WriteLine(System.DateTime.Now.ToString());

 

总是把最后一句System.Diagnostics.Trace.WriteLine给跳过了没执行。

 

新建一个项目后,把这段语句复制到里面,单步跟踪System.Diagnostics.Trace.WriteLine正常执行了。

 

比较两个项目“属性”、“生成”中,配置为“release”时一个选项“定义Trace常量”,新项目勾选了此项,而不执行的那个项目没有选此项。

勾选上,则单步跟踪System.Diagnostics.Trace.WriteLine正常执行了。

 

Trace类是根据这个编译常量“Trace”来决定是否编译到最终代码的,新建的项目Release时,默认时勾选此项的。

同样的Debug时,默认是选了“定义Debug常量”和“定义Trace常量”,这时,代码中的Debug类也会被编译到最终代码。

 

Trace常量是编译环境自定义的编译常量,我们也可以自定义编译常量,用于决定代码的片段是否被编译到程序集。与代码中if else的区别就在于条件编译是在编译是决定,而if else是在运行时决定。

 

相关知识可参考此处

你可能感兴趣的:(System.Diagnostics.Trace.WriteLine 不执行)