我知道,如果我有一个代码块,我不想在发布模式下编译,我可以将该代码块包装在:
#if DEBUG
while(true)
{ Console.WriteLine("StackOverflow rules"); }
#endif
这将阻止此代码块在除
DEBUG
之外的任何模式下编译。
我知道有一个属性可以放置在整个方法上,它会执行相同的操作,但我一辈子都不记得该属性是什么。我相信它位于
System.Diagnostics
命名空间下,但我不太确定。
顺便说一句:我正在使用 .NET 4,但我知道这个属性存在于 .NET 2 中,因为我在旧项目中使用过。
谢谢
向编译器表明一个方法 应忽略调用或属性 除非指定条件 编译符号已定义。
您应该将其定义为
[Conditional("DEBUG")]
并确保 DEBUG 常量未在发布模式下定义。
除了 ConditionalAttribute,您还可以简单地使用:
#if (!DEBUG)
使用 ConditionalAttribute 时,请记住它不能用于返回除 void 之外的任何内容或采用输出参数作为参数的函数。引用参数很好,因为该变量在方法调用之前实例化。
[Conditional("DEBUG")]
public void Success1(string param)
[Conditional("DEBUG")]
public void Success2(ref string param)
[Conditional("DEBUG")] // out parameter
public void CompileErrorCS0685(out string param)
[Conditional("DEBUG")] // non-void function
public bool CompileErrorCS0578(string param)