pre*_*per 576 c# debugging visual-studio-2010 visual-studio
我正在尝试将一条消息写入输出窗口以进行调试.我搜索了像Java这样的函数system.out.println("")
.我想Debug.Write
,Console.Write
和Trace.Write
.它不会出错,但也不会打印任何内容.
选中"定义DEBUG常量"和"定义TRACE常量"选项.
菜单工具 → 选项 → 调试 → "将所有输出窗口文本重定向到立即窗口"选项未选中.
配置:活动(调试)
注意:如果相关,我创建了一个项目,向导为"Windows窗体应用程序".我不知道在哪里看.
Bha*_*hat 712
添加System.Diagnostics
命名空间,然后您可以使用Debug.WriteLine()
快速打印消息到IDE的输出窗口.有关详细信息,请参阅以下内容:
vei*_*ght 149
这将写入调试输出窗口:
using System.Diagnostics;
Debug.WriteLine("Send to debug output.");
Run Code Online (Sandbox Code Playgroud)
Luq*_*man 79
使用:
System.Diagnostics.Debug.WriteLine("your message here");
Run Code Online (Sandbox Code Playgroud)
Mic*_*out 54
Debug.WriteLine
Run Code Online (Sandbox Code Playgroud)
是你在找什么.
如果没有,请尝试这样做:
菜单工具 → 选项 → 调试 →取消选中将输出发送到立即.
Zac*_*Zac 21
对我来说,只有Trace命名空间而不是Debug工作:
System.Diagnostics.Trace.WriteLine("message");
Run Code Online (Sandbox Code Playgroud)
我在Visual Studio 2010下的C#项目中工作.
dan*_*u11 15
你可能正在寻找
MessageBox.Show()
Run Code Online (Sandbox Code Playgroud)
要么
Debug.Writeline()
Run Code Online (Sandbox Code Playgroud)
电话
System.Diagnostics.Debug.WriteLine("message");
Run Code Online (Sandbox Code Playgroud)
使用.NET Core(V 1.0或1.1)时失败.
我们应该创建并使用记录器Microsoft.Extensions.Logging
,但该日志只出现在dotnet.exe弹出控制台窗口中,而不是出现在Visual Studio的"输出"窗口中.
出于调试目的,System.Diagnostics.Debug.WriteLine()
除非您有调试侦听器,否则该命令不会编译到代码的发布版本中。当在调试模式下运行时,它会写入所有跟踪侦听器,其中包括 VS 输出窗口。
对于控制台应用程序。Console.WriteLine()
可以工作,但输出仍然会在二进制文件的发行版本中生成。
调试测试时,调试输出也应该出现在正常输出窗口中;而 console.writeline 输出则不然(但可以在测试输出窗口中找到。)
这需要第三方框架,即Serilog,但我仍然发现将输出输出到我可以看到的地方是一种非常流畅的体验。
您首先需要安装 Serilog 的Trace sink。安装后,您需要像这样设置记录器:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
(您可以设置不同的最低级别或将其设置为配置值或任何正常的 Serilog 功能。您还可以设置 Trace
记录器设置为特定级别以覆盖配置,或者您想这样做。)
然后您只需正常记录消息,它们就会显示在您的输出窗口中:
Logger.Information("Did stuff!");
Run Code Online (Sandbox Code Playgroud)
这似乎没什么大不了的,所以让我解释一些额外的优势。对我来说最大的一个是我可以同时登录到输出窗口和控制台:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
这在我如何使用输出方面给了我很大的灵活性,而不必重复我对Console.Write
with 的所有调用Debug.Write
。编写代码时,我可以在 Visual Studio 中运行我的命令行工具,而不必担心退出时会丢失输出。当我部署它并需要调试某些东西时(并且没有可用的 Visual Studio),控制台输出随时可供我使用。当它作为计划任务运行时,也可以将相同的消息记录到文件(或任何其他类型的接收器)中。
最重要的是,使用 Serilog 执行此操作可以非常轻松地将消息转储到多个目的地,确保我始终可以轻松访问输出,无论我如何运行它。
它还需要非常少的设置和代码。