在我的应用程序中,我有很多Console#WriteLine
或Console#Write calls
。这太多了,应用程序的速度实际上要慢得多。
所以我正在寻找一种简单的方法来删除或至少禁用所有Console#WriteLine和Console#Write
来电。
实现这一目标的最简单方法是什么?
答案 0 :(得分:22)
这是我实施的更快捷的修复方法。
...
static int Main(String[] args)
{
...
#if !DEBUG
Console.SetOut(TextWriter.Null);
Console.SetError(TextWriter.Null);
#endif
...
}
HTH
答案 1 :(得分:3)
在任何代码编辑器中可能都有Find& Replace功能? 例如找到所有
Console.WriteLine
并替换为
//Console.WriteLine
答案 2 :(得分:3)
如果它们不是必需的(日志记录),那么您应该使用System.Diagnostics.Debug.Print()
开始。
幸运的是WriteLine()
与Debug.Print()
兼容,因此这是一个简单的S& R.并修复一些使用可能。
替换Console.Write()
可能有点棘手。
完成:可以使用项目|属性中的复选框打开/关闭Debug.Print()语句。
答案 3 :(得分:1)
使用简单的非正则表达式“查找/替换”对话框,并将每个Console.WriteLine(
替换为Debug.WriteLine(
。
然后,您可以跟踪以前直接输出到控制台窗口的内容,仍然可以在发布模式下优化性能。
答案 4 :(得分:1)
在Visual Studio中,使用Tools|Macros|Record temporary macro
选项记录执行Find of“Console.Write”的宏,并删除该行。那就是:
Ctrl + F查找“Console.Write” 然后按Ctrl + L删除该行。
保存宏,然后针对项目中包含有违规行的每个文件运行它。
大约需要两分钟。
但是,我建议您首先备份源代码。以防万一。答案 5 :(得分:0)
要在运行时临时使用
关闭 Console.WriteLine()输出,请使用
// backup the previous output handler connected to Console
TextWriter backupOut = Console.Out;
// activate a null handle
Console.SetOut(TextWriter.Null);
// this console output will be invisible
Console.WriteLine("Hidden output on Console.");
// restore the previous handle
Console.SetOut(backupOut);
// this console output will be visible
Console.WriteLine("Showing output on Console.");
类似地,您可以在运行时禁用程序 Debug.WriteLine()输出,也可以在调试模式下编译时,通过使用虚拟TextWriterTraceListener来禁用
using System.Diagnostics;
using System.IO;
//...
public class MyDummyListener: TextWriterTraceListener
{ }
// ......
[STAThread]
static void Main()
{
// Back up the old one
DefaultTraceListener[] debuglisteners = {(DefaultTraceListener) Debug.Listeners[0]};
// Plug in dummy listener
TextWriterTraceListener[] dummylisteners = {new MyDummyListener()};
Debug.Listeners.Clear();
Debug.Listeners.AddRange(dummylisteners);
// this is an invisible debug message
Debug.WriteLine("This one is invisible");
// ..
// to activate output again, plug in the previous listener
Debug.Listeners.Clear();
Debug.Listeners.AddRange(debuglisteners);
Debug.WriteLine("This one is visible again");
// ....
}
注意:我使用Winforms平台在Debug模式下在.NET Framework 4.7.2中测试了上述代码。