关于c#:写入Visual Studio的输出窗口?

Writing to output window of Visual Studio?

为了调试的目的,我正在尝试将消息写入输出窗口。我搜索了一个函数,比如Java的EDCOX1,0。我试过Debug.WriteConsole.WriteTrace.Write。它不会给出错误,但也不会打印任何内容。

选中"define debug constant"和"define trace constant"选项。

菜单工具→选项→调试→"将所有输出窗口文本重定向到即时窗口"选项未选中。

配置:活动(调试)

注意:如果相关的话,我创建了一个向导为"Windows窗体应用程序"的项目。我不知道该去哪儿看看。


添加System.Diagnostics名称空间,然后可以使用Debug.WriteLine()将消息快速打印到IDE的输出窗口。有关详细信息,请参阅以下内容:

  • 如何在Visual C中跟踪和调试#
  • 关于使用调试类和跟踪类(包括异常处理)的论述


这将写入调试输出窗口:

1
2
3
using System.Diagnostics;

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


用途:

1
System.Diagnostics.Debug.WriteLine("your message here");

1
    Debug.WriteLine

就是你要找的。

如果没有,请尝试执行以下操作:

菜单工具→选项→调试→取消选中将输出发送到即时消息。


对于我来说,只有跟踪命名空间而不是调试命名空间起作用:

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

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


你可能在找

1
MessageBox.Show()

1
Debug.Writeline()


呼叫

1
System.Diagnostics.Debug.WriteLine("message");

使用.NET核心时失败(v 1.0或1.1)。

我们应该从Microsoft.Extensions.Logging创建和使用一个记录器,但该日志只显示在dotnet.exe弹出控制台窗口中,而不显示在Visual Studio的输出窗口中。


这需要一个第三方框架,即serilog,但我仍然发现它是一个非常顺利的经验,可以将输出发送到我能看到的某个地方。

首先需要安装serilog的跟踪接收器。安装后,您需要如下设置记录器:

1
2
3
4
Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

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

然后,您只需正常记录消息,它们就会显示在输出窗口中:

1
Logger.Information("Did stuff!");

这似乎不是什么大问题,所以让我解释一下其他的优点。对我来说最大的一个是我可以同时登录到输出窗口和控制台:

1
2
3
4
5
Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

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

最后一点是,使用serilog来实现这一点使得将消息转储到多个目的地变得非常容易,从而确保无论如何运行输出,我都可以随时访问输出。

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


这不是原始问题的答案。但是,由于我在搜索交互转储对象数据的方法时发现了这个问题,我认为其他人可能会从提到这个非常有用的替代方法中获益。

我最终使用了命令窗口并输入了Debug.Print命令,如下所示。它以一种可以作为文本复制的格式打印了一个内存对象,这正是我真正需要的。

1
2
3
4
5
6
7
8
> Debug.Print <item>

  id: 1
  idt: null
  igad: 99
  igbd: 99
  gl_desc:"New #20"
  te_num:"1-001-001-020"

以下是我在Visual Studio 2015工作的:

1
OutputDebugStringW(L"Write this to Output window in VS14.");

在此处阅读OutputDebugStringW的文档。

enter image description here注意,只有在调试代码(debug mode时,此方法才有效。


打印到Visual Studio的输出窗口:

1
Debug.Writeline();