debugging 在客户端监视'Console.WriteLine()'消息,而不将进程附加到Visual Studio [duplicate]

2g32fytz  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(118)

此问题在此处已有答案

No output to console from a WPF application?(共10个答案)
两个月前关门了。
我有一个WPF应用程序,它是为了在64-GB-RAM/2-CPU-Core设备中脱机工作。我已经将输出目录交付给测试人员来测试应用程序...
应用程序正在使用不同的方法记录消息:Debug.WriteLine()Trace.WriteLine()Console.WriteLine()...我见过一些工具,如TraceSpy,它们可以显示调试和跟踪消息。
我想知道是否有一种简单的方法可以在测试设备上查看Console.WriteLine()消息?或者我必须将所有的Console.WriteLine()更改为Trace.WriteLine()

bprjcwpo

bprjcwpo1#

当你调试一个窗口应用程序时,控制台输出被重定向到Visual Studio输出窗口。也许这也适用于其他工具,比如TraceSpy。
否则,您可以使用Console.SetOut重定向控制台写入的位置:

class Program
{
    static void Main(string[] args)
    {
        Console.SetOut(new TraceWritter());
        Console.WriteLine("Log : Something happened!");
        ...
    }
}

您只需要实现一个自定义的TextWriter并只覆盖Write(char)方法:

实施人员注意事项

派生类必须至少实现Write(Char)方法才能生成有用的TextWriter示例。

public class TraceWritter : TextWriter
{
    public override Encoding Encoding => System.Text.Encoding.Default;

    public override void Write(char value)
    {
        Debug.Write(value);
    }
}

相关问题