提问人:previous_developer 提问时间:2/27/2012 最后编辑:Peter Mortensenprevious_developer 更新时间:5/10/2021 访问量:898137
写入 Visual Studio 的输出窗口
Writing to output window of Visual Studio
问:
我正在尝试将消息写入输出窗口以进行调试。我搜索了像 Java 这样的函数。我试过了 , , 和 .它不会给出错误,但也不会打印任何内容。system.out.println("")
Debug.Write
Console.Write
Trace.Write
选中“定义 DEBUG 常量”和“定义 TRACE 常量”选项。
调试→菜单工具→选项→未选中“将所有输出窗口文本重定向到即时窗口”选项。
配置:活动(调试)
注意:如果相关,我使用向导创建了一个项目,称为“Windows 窗体应用程序”。我不知道该去哪里看。
答:
Debug.WriteLine
就是你要找的。
如果没有,请尝试这样做:
菜单“工具”→“选项”→“调试”→取消选中“将输出发送到立即”。
评论
Tools|Options|Debugging uncheck Send Output to Immediate
添加命名空间,然后可以使用将消息快速打印到 IDE 的输出窗口。详情请参阅:System.Diagnostics
Debug.WriteLine()
评论
您可能正在寻找
MessageBox.Show("A message")
或
Debug.WriteLine("A message")
评论
MessageBox.Show()
当您想为调试目的编写多个值时,可能会非常烦人。
MessageBox.Show
这将写入调试输出窗口:
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)时失败。
我们应该从 创建和使用记录器,但该日志仅显示在 dotnet.exe 弹出控制台窗口中,而不显示在 Visual Studio 的“输出”窗口中。Microsoft.Extensions.Logging
评论
以下内容在 Visual Studio 2015 中对我有用:
OutputDebugStringW(L"Write this to Output window in VS14.");
在此处阅读 OutputDebugStringW 的文档。
评论
/*using System.Runtime.InteropServices;*/ [DllImport("Kernel32.dll", CharSet = CharSet.Unicode)] static extern void OutputDebugStringW(string lpOutputString);
System.Diagnostics.Debug.WriteLine()
这不是对原始问题的回答。但是,由于我在搜索交互式转储对象数据的方法时发现了这个问题,因此我认为其他人可能会从提及这个非常有用的替代方案中受益。
我最终使用了命令窗口并输入了命令,如下所示。这以可以复制为文本的格式打印了一个内存对象,这就是我真正需要的。Debug.Print
> Debug.Print <item>
id: 1
idt: null
igad: 99
igbd: 99
gl_desc: "New #20"
te_num: "1-001-001-020"
评论
System.Diagnostics.Debug.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(response));
这需要第三方框架,即 Serilog,但我仍然发现它是一种非常流畅的体验,可以将输出到我可以看到它的地方。
首先需要安装 Serilog 的 Trace 接收器。安装后,您需要像这样设置记录器:
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();
这为我提供了极大的灵活性,使我能够灵活地使用输出,而不必重复对 with 的所有调用。编写代码时,我可以在 Visual Studio 中运行命令行工具,而不必担心在退出时丢失输出。当我部署了它并需要调试某些内容(并且没有可用的 Visual Studio)时,控制台输出随时可供我使用。当文件作为计划任务运行时,也可以将相同的消息记录到文件(或任何其他类型的接收器)中。Console.Write
Debug.Write
最重要的是,使用 Serilog 来做到这一点可以非常轻松地将消息转储到多个目的地,确保无论我如何运行它,我都可以随时访问输出。
它还需要非常少的设置和代码。
评论
出于调试目的,除非您有调试侦听器,否则该命令不会编译到代码的发布版本中。在调试模式下运行时,它会写入所有跟踪侦听器,其中包括 VS 输出窗口。System.Diagnostics.Debug.WriteLine()
对于控制台应用程序。 将起作用,但输出仍将在二进制文件的发布版本中生成。Console.WriteLine()
调试测试时,调试输出也应出现在正常输出窗口中;而 console.writeline 输出没有(但可以在测试输出窗口中找到。
Debug.Print("text here")
或
Console.WriteLine("text here")
对于使用 NCrunch 的任何人,调试输出将重定向到 NCrunch 的“跟踪输出”窗口。
评论
Debug.Write
Trace.Write