[C#] 写入Visual Studio的输出窗口?


Answers

这将写入调试输出窗口:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");
Question

我试图写出一条消息到输出窗口进行调试。 我搜索了一个像Java的system.out.println("")这样的函数。 我试过Debug.WriteConsole.WriteTrace.Write 。 它不会给出错误,但它也不会打印任何内容。

选中“定义DEBUG常量”和“定义TRACE常量”选项。

菜单工具选项调试“将所有输出窗口文本重定向到立即窗口”选项未被选中。

配置:活动(调试)

注意:如果相关,我使用向导创建了一个项目作为“Windows窗体应用程序”。 我不知道在哪里看。




打印到Visual Studio的输出窗口:

Debug.Writeline();



对我来说,只有Trace命名空间而不是调试的工作:

System.Diagnostics.Trace.WriteLine("message");

我正在Visual Studio 2010下的C#项目中工作。




这需要第三方框架,即Serilog ,但我仍然认为它是一种非常流畅的体验,可以将输出传输到我可以看到的某个位置。

您首先需要安装Serilog的跟踪接收器 。 安装完成后,您需要像这样设置记录器:

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

(您可以设置不同的最低级别或将其设置为配置值或任何正常的Serilog功能。您还可以将Trace记录器设置为特定级别以覆盖配置,或者您想这样做。)

然后,您只需正常记录消息并将它们显示在“输出”窗口中:

Logger.Information("Did stuff!");

这看起来不是什么大不了的,所以让我解释一些额外的优点。 对我来说最大的问题是我可以同时登录到输出窗口和控制台

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

这给了我很大的灵活性,就如何消费输出而言,无需使用Debug.Write将所有调用重复到Console.Write 。 在编写代码时,我可以在Visual Studio中运行我的命令行工具,而不必担心在退出时丢失输出。 当我部署它并且需要调试某些东西(并且没有Visual Studio可用)时,控制台输出可以随时用于我的使用。 当它作为计划任务运行时,也可以将相同的消息记录到文件(或任何其他类型的接收器)中。

最重要的是,使用Serilog来做到这一点使得将消息转储到多个目的地非常容易,确保我可以随时访问输出,而不管我如何运行它。

它还需要非常少的设置和代码。




    Debug.WriteLine

是你在找什么。

如果没有,请尝试这样做:

菜单工具选项调试 →取消选中发送输出到立即