以下C#程序(内置csc hello.cs)仅Hello via Console!在控制台和Hello via OutputDebugStringDebugView窗口中打印.但是,我看不到任何一个System.Diagnostics.*电话.这是为什么?
using System;
using System.Runtime.InteropServices;
class Hello {
[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
public static extern void OutputDebugString(string message);
static void Main() {
Console.Write( "Hello via Console!" );
System.Diagnostics.Debug.Write( "Hello via Debug!" );
System.Diagnostics.Trace.Write( "Hello via Trace!" );
OutputDebugString( "Hello via OutputDebugString" );
}
}
Run Code Online (Sandbox Code Playgroud)
是否需要一些特殊的命令行开关csc?
我没有使用Visual Studio进行任何开发,这是纯粹的命令行.
配置文件:
<system.diagnostics>
<trace>
<listeners>
<add name="Console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false"></add>
<add name="Text" type="System.Diagnostics.TextWriterTraceListener" initializeData="D:\uat\logs\bifit.log" traceOutputOptions="DateTime"></add>
</listeners>
</trace>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
代码:
static void Main(string[] args)
{
try
{
Trace.WriteLine("Running BiFit Test Server.");
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在cosole窗口看到文字.并创建文件,但它是空的.我记得某处有Autoflush属性吗?
我正在运行代码,我希望我的调试输出写入文本文件.这是如何运作的?我试着写:
TextWriterTraceListener[] listeners = new TextWriterTraceListener[] {
new TextWriterTraceListener("W:\\C.txt"),
new TextWriterTraceListener(Console.Out)};
Debug.Listeners.AddRange(listeners);
Debug.WriteLine("Some Value", "Some Category");
Run Code Online (Sandbox Code Playgroud)
但它仍然写入输出窗口......我该怎么办?谢谢.