我试过这个
using System;
using System.Diagnostics;
using System.IO;
public class Sample
{
public static void Main()
{
Stream traceText = File.Create("trace.txt");
TextWriterTraceListener textListener = new TextWriterTraceListener(traceText);
Trace.Listeners.Add(textListener);
Trace.Write("wth is goin on? I should be appearin in a txt file :(");
Trace.Flush();
}
}
并使用cmd编译, 但程序只是创建一个空的trace.txt文件..为什么?
btw我正在使用最新的.NET Framework版本,我使用的是notepad ++而不是VS
答案 0 :(得分:3)
大多数Trace
类方法(例如Write
)都标有[Conditional("TRACE")]
属性,这意味着编译器会删除对它们的调用,除非定义了相应的常量。
当您在visual studio中创建项目时,默认情况下通常会设置此常量,但是由于您是从命令行编译自己的 - 您需要自己定义它。
为此,要么放
#define TRACE
作为代码文件的第一行,或者从命令行编译时将/d:TRACE
选项传递给编译器。