写入Visual Studio的输出窗口?
我试图写一个消息到输出窗口进行debugging。 我search了一个像Java的system.out.println("")
这样的函数。 我试过Debug.Write
, Console.Write
和Trace.Write
。 它不会给出错误,但它也不会打印任何内容。
检查“定义DEBUG常量”和“定义TRACE常量”选项。
菜单工具 → 选项 → debugging → “将所有输出窗口文本redirect到立即窗口”选项未被选中。
configuration:活动(debugging)
注意:如果相关,我使用向导创build了一个项目为“Windows窗体应用程序”。 我不知道在哪里看。
添加System.Diagnostics
命名空间,然后可以使用Debug.WriteLine()
快速将消息打印到IDE的输出窗口。 有关更多详情,请参阅以下内容:
- 如何在Visual C#中跟踪和debugging
- 讨论使用debugging和跟踪类,包括exception处理
这将写入debugging输出窗口:
using System.Diagnostics; Debug.WriteLine("Send to debug output.");
使用:
System.Diagnostics.Debug.WriteLine("your message here");
Debug.WriteLine
是你在找什么。
如果没有,请尝试这样做:
菜单工具 → 选项 → debugging →取消选中发送输出到立即 。
对我来说,只有Trace命名空间,而不是debugging的工作:
System.Diagnostics.Trace.WriteLine("message");
我正在Visual Studio 2010下的C#项目中工作。
你可能正在寻找
MessageBox.Show()
要么
Debug.Writeline()
电话
System.Diagnostics.Debug.WriteLine("message");
使用.NET Core (V 1.0或1.1)时失败。
我们应该从Microsoft.Extensions.Logging
创build和使用一个logging器,但该logging只出现在dotnet.exepopup控制台窗口中,而不是在Visual Studio的“输出”窗口中。
这需要一个第三方框架,即Serilog ,但我仍然发现它是一个非常顺利的经验,获得输出到某个地方,我可以看到它。
你首先需要安装Serilog的跟踪接收器 。 一旦安装,你需要像这样设置logging器:
Logger = new LoggerConfiguration() .MinimumLevel.Verbose() .WriteTo.Trace() .CreateLogger();
(您可以设置不同的最低级别或将其设置为configuration值或任何正常的Serilogfunction,也可以将Trace
logging器设置为特定级别来覆盖configuration,或者您想要这样做。
然后,您只需正常logging消息,并在“输出”窗口中显示即可:
Logger.Information("Did stuff!");
这似乎不是什么大不了的事情,所以让我解释一些额外的优点。 对我来说最大的一个问题是,我可以同时login到输出窗口和控制台 :
Logger = new LoggerConfiguration() .MinimumLevel.Verbose() .WriteTo.Trace() .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error) .CreateLogger();
这给了我很大的灵活性,我怎么消耗输出,而不必重复所有我的调用Console.Write
与Debug.Write
。 编写代码时,我可以在Visual Studio中运行我的命令行工具,而不必担心在退出时丢失输出。 当我部署了它并且需要debugging某些东西(并且没有Visual Studio可用)时,控制台输出已经可以供我使用了。 作为计划任务运行时,也可以将相同的消息logging到文件(或任何其他types的接收器)中。
最重要的是,使用Serilog来做到这一点使得将消息转储到多个目的地非常容易,确保我可以随时访问输出,而不pipe我如何运行它。
它也需要非常less的设置和代码。
打印到Visual Studio的输出窗口:
Debug.Writeline();
以下在Visual Studio 2015
为我工作:
OutputDebugStringW(L"Write this to Output window in VS14.");
在这里阅读OutputDebugStringW的文档。
请注意,此方法只适用于您正在debugging您的代码( debug mode
)
这不是对原始问题的回答。 但是,由于我在find一个交互式转储对象数据的方法时发现了这个问题,我想其他人可能会从提到这个非常有用的select中受益。
我最终使用了命令窗口并input了Debug.Print
命令,如下所示。 这将打印一个内存对象的格式,可以复制为文本,这是我真正需要的。
> Debug.Print <item> id: 1 idt: null igad: 99 igbd: 99 gl_desc: "New #20" te_num: "1-001-001-020"