如何添加调试代码?(应该去Debug,不应该去发布)

jav*_*red 4 .net c#

我需要在我的软件中记录大量信息以进行调试.但是我只在开发期间需要这个选项,我宁愿在Release中排除所有这些代码.

当然我可以用"if"包围我想调试的地方:

if (isDebugMode()) {
  Logger.log(blahblah);
}
Run Code Online (Sandbox Code Playgroud)

但是因为我的软件对时间要求很高,所以我想避免大量的unnesseray"if"测试.

即我认为我需要模拟c"#define #ifdef #ifndef".c#或.net中是否有任何技术可以轻松解决我的任务?

Bli*_*ndy 13

您可以[ConditionalAttribute("DEBUG")]Logger.log方法前使用,这样它只能在调试模式下编译,并在发布模式下完全删除.

这就是Debug类方法都被标记的方式.

与使用该#if方法相比,这种方法的好处是具有该Conditional属性的代码在运行时甚至不存在,并且所有对它的引用都被删除,而不是留在空体(或者你有条件地编译它).


Ed *_* S. 7

你为什么不改用这个DEBUG符号呢?

#if DEBUG
  // debug only code here
#endif
Run Code Online (Sandbox Code Playgroud)

这篇文章描述了C#中可用的所有预处理程序指令,您还可以在项目的属性菜单中定义自己的预处理程序变量.