2013-04-07 85 views
1

要记录输出我正在使用以下代码。在发布之前删除日志System.Diagnostics

System.Diagnostics.Debug.WriteLine("Hello"); 

现在,它总是建议在应用程序提交之前删除这些日志。

那么,我们是否必须删除这些行,然后才能将它提交给发布或隐式完成。

是否还有其他更好的方式来记录C#中的输出,当它释放时会将日志记录移除到控制台。我看到Log4Net就是其中之一。

回答

2

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?

1

您可以使用预处理指令:

#if DEBUG 
    System.Diagnostics.Debug.WriteLine("Hello"); 
#endif 

时,你会发现在发行构建配置构建应用程序这条线将被跳过。

+0

感谢。但是如果有100个我曾经使用过的地方,我需要在任何地方添加这个指令。 – weber67 2013-04-07 14:35:22

+1

你确定吗?我一直认为由于[ConditionalAttribute],Debug类的方法没有编译到Release版本中。这篇文章似乎说同样的事情http://stackoverflow.com/questions/1600985/system-diagnostics-debug-writeline-in-production-code – 2013-04-07 14:41:57

+0

@DavidHall多数民众赞成在这。 IDE隐式删除它以便发布。我确实检查过这个文件,但是我对这种语言很陌生,所以错过了这么小的东西。 – weber67 2013-04-07 14:55:26