要记录输出我正在使用以下代码。在发布之前删除日志System.Diagnostics
System.Diagnostics.Debug.WriteLine("Hello");
现在,它总是建议在应用程序提交之前删除这些日志。
那么,我们是否必须删除这些行,然后才能将它提交给发布或隐式完成。
是否还有其他更好的方式来记录C#中的输出,当它释放时会将日志记录移除到控制台。我看到Log4Net就是其中之一。
要记录输出我正在使用以下代码。在发布之前删除日志System.Diagnostics
System.Diagnostics.Debug.WriteLine("Hello");
现在,它总是建议在应用程序提交之前删除这些日志。
那么,我们是否必须删除这些行,然后才能将它提交给发布或隐式完成。
是否还有其他更好的方式来记录C#中的输出,当它释放时会将日志记录移除到控制台。我看到Log4Net就是其中之一。
System.Diagnostics.Debug类中的所有方法都有ConditionalAttribute,所以在大多数编译器中,它们不会被编译到Release版本中(除非您在发行版本中定义DEBUG属性)。
对于Visual Studio中的编译器来说,这当然是正确的。
关于log4Net的第二个问题实际上是相反的,如果您决定开始使用log4Net - log4Net调试调用,则需要注意的事项包含在调试构建中,并且如果您将记录器设置为调试跟踪级别(通常使用运行时配置完成)。
1. MSDN的网页实际上是(IMO)有点不清楚,但这些所谓的职位与我的解释一致:
System.Diagnostics.Debug.WriteLine in production code
C# Do Debug statements get compiled out when running in Release mode?
您可以使用预处理指令:
#if DEBUG
System.Diagnostics.Debug.WriteLine("Hello");
#endif
时,你会发现在发行构建配置构建应用程序这条线将被跳过。
感谢。但是如果有100个我曾经使用过的地方,我需要在任何地方添加这个指令。 – weber67 2013-04-07 14:35:22
你确定吗?我一直认为由于[ConditionalAttribute],Debug类的方法没有编译到Release版本中。这篇文章似乎说同样的事情http://stackoverflow.com/questions/1600985/system-diagnostics-debug-writeline-in-production-code – 2013-04-07 14:41:57
@DavidHall多数民众赞成在这。 IDE隐式删除它以便发布。我确实检查过这个文件,但是我对这种语言很陌生,所以错过了这么小的东西。 – weber67 2013-04-07 14:55:26