繁体   English   中英

如何引入仅在调试模式下执行的句子和代码行?

[英]How can I introduce sentences and lines of code that will only be executed in debug mode?

我有一个应用程序,我需要几乎所有时间进行代码更改(更改加密程序等等),所以我的想法是每次进行更改时都激活所有调试参数和变量。 我不想一直评论和取消注释代码,所以我的问题是指仅在调试模式下执行的简单代码行。 ¿我怎样才能实现这一目标?

您可以使用条件代码部分:

#if DEBUG
    //Your code goes here.
#endif

或者,您可以使用[Conditional("DEBUG")]属性将发布版本中的整个函数清零。

如:

[Conditional("DEBUG")]
private void YourFunction()
{
}

这是一个很好的参考。

http://www.csharphelp.com/archives/archive36.html

从源头上看,这是一个很好的例子:

#if DEBUG
         Console.WriteLine("DEBUG is defined");
      #else
         Console.WriteLine("DEBUG is not defined");
      #endif

两个主要的解决方案是预处理器指令和条件属性 相关的预处理器指令的工作原理如下:

#if DEBUG
// Lines here are only compiled if DEBUG is defined, like in a Debug build.

#else

// Lines here are only compiled if DEBUG is not defined, like in a Release build.

#endif

Conditional属性应用于方法:

[Conditional("DEBUG")]
public void DoDebugOnly()
{
    // Whatever
}

然后,只有在定义了DEBUG时才会编译所有对DoDebugOnly()的调用

这两种方法也适用于任何其他预处理程序标识符。 TRACE是集成到Visual Studio中的另一个示例,但您定义的任何预处理程序标识符都可以:

#define FOO

#if FOO
// Lines here are only compiled if FOO is defined.

#endif

根据您尝试执行的操作,您可能需要考虑日志框架,例如log4netLogging Application Block 这些将允许您在代码中保留调试消息,但只在外部配置文件说明时才输出它们。

但是,如果要添加/删除实际执行逻辑的代码,请使用其他答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM