我试图写一个消息到输出窗口调试的目的。我搜索了一个类似Java的system.out.println("")的函数。我尝试了调试。写,控制台。Write和Trace.Write。它不会给出错误,但也不会打印任何东西。
“定义调试常量”和“定义跟踪常量”选项被选中。
菜单工具→选项→调试→“将所有输出窗口文本重定向到立即窗口”选项未选中。
配置:活动(调试)
注意:如果相关的话,我用向导创建了一个“Windows窗体应用程序”项目。我不知道去哪里找。
我试图写一个消息到输出窗口调试的目的。我搜索了一个类似Java的system.out.println("")的函数。我尝试了调试。写,控制台。Write和Trace.Write。它不会给出错误,但也不会打印任何东西。
“定义调试常量”和“定义跟踪常量”选项被选中。
菜单工具→选项→调试→“将所有输出窗口文本重定向到立即窗口”选项未选中。
配置:活动(调试)
注意:如果相关的话,我用向导创建了一个“Windows窗体应用程序”项目。我不知道去哪里找。
当前回答
你可能正在寻找
MessageBox.Show()
or
Debug.Writeline()
其他回答
Debug.WriteLine
就是你要找的。
如果没有,试着这样做:
菜单工具→选项→调试→取消勾选即时输出。
这不是对原来问题的回答。但是,由于我在搜索交互式转储对象数据的方法时发现了这个问题,我认为其他人可能会从提到这个非常有用的替代方法中受益。
我最终使用命令窗口并进入调试。打印命令,如下所示。这打印了一个内存对象的格式,可以复制为文本,这是我真正需要的。
> Debug.Print <item>
id: 1
idt: null
igad: 99
igbd: 99
gl_desc: "New #20"
te_num: "1-001-001-020"
这需要一个第三方框架,即Serilog,但我仍然发现它是一个非常流畅的体验,可以将输出输出到我可以看到的地方。
首先需要安装Serilog的Trace接收器。一旦安装,你需要像这样设置记录器:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
(您可以设置不同的最小级别,或者将其设置为配置值或任何正常的Serilog功能。您还可以将跟踪记录器设置为特定级别以覆盖配置,或者按照您希望的方式进行设置。)
然后你只是正常地记录消息,它们会显示在你的输出窗口中:
Logger.Information("Did stuff!");
这看起来没什么大不了的,所以让我来解释一些额外的好处。对我来说最大的一点是,我可以同时登录输出窗口和控制台:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
.CreateLogger();
This gave me great flexibility in terms of how I consumed output, without having to duplicate all my calls to Console.Write with Debug.Write. When writing the code, I could run my command line tool in Visual Studio without fear of losing my output when it exited. When I had deployed it and needed to debug something (and didn't have Visual Studio available), the console output was readily available for my consumption. The same messages can also be logged to a file (or any other kind of sink) when it's running as a scheduled task.
最重要的是,使用Serilog可以很容易地将消息转储到多个目的地,从而确保无论如何运行输出,我都可以随时访问输出。
它还需要非常少的设置和代码。
出于调试目的,System.Diagnostics.Debug.WriteLine()命令不会被编译到代码的发布版本中,除非您有调试侦听器。当在调试模式下运行时,它会写入所有跟踪侦听器,其中包括VS输出窗口。
对于控制台应用程序。Console.WriteLine()可以工作,但输出仍然会在二进制文件的发布版本中生成。
调试测试时,调试输出也应该出现在正常输出窗口中;然而,控制台。Writeline输出没有(但可以在测试输出窗口中找到)。
对于任何使用NCrunch的人来说,调试输出被重定向到NCrunch的“跟踪输出”窗口。