写入Visual Studio的输出窗口

我正在尝试向输出窗口写入一条消息以进行调试。我搜索了Java的system.out.println("")之类的函数。我尝试了Debug.WriteConsole.WriteTrace.Write。它不会给出错误,但也不会打印任何内容。

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

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

配置:活动(调试)

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

837421 次浏览
Debug.WriteLine

就是你要找的。

如果没有,尝试这样做:

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

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

您可能正在寻找

MessageBox.Show()

Debug.Writeline()

这将写入调试输出窗口:

using System.Diagnostics;


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

对我来说,只有Trace命名空间而不是Debug命名空间有效:

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

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

那个电话

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

使用. NET Core(V 1.0或1.1)时失败。

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

以下内容适用于我在Visual Studio 2015中:

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

读取Output DebugStringW这里的留档。

在此处输入图片描述 请注意,此方法仅在调试代码时有效(debug mode

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

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

> Debug.Print <item>


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

这需要第三方框架,即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可以很容易地将消息转储到多个目的地,确保无论我如何运行它,我都可以随时访问输出。

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

出于调试目的,除非您有调试侦听器,否则System.Diagnostics.Debug.WriteLine()命令不会编译到代码的发布版本中。在调试模式下运行时,它会写入所有跟踪侦听器,其中包括VS输出窗口。

对于控制台应用程序。Console.WriteLine()可以工作,但输出仍将在二进制文件的发布版本中生成。

调试测试时,调试输出也应该出现在正常输出窗口中;然而,console.writeline输出不会(但可以在测试输出窗口中找到)。

Debug.Print("text here")

Console.WriteLine("text here")

对于使用NCrunch的任何人,调试输出将重定向到NCrunch“跟踪输出”窗口。