C#条件相当于!DEBUG

时间:2014-08-18 10:27:34

标签: c# conditional debug-symbols

C#System.Diagnostics.Conditional相当于#if (!DEBUG)是什么?

如果尚未在DEBUG模式下编译,我想加密控制台应用程序的app.config文件的一部分。这是这样实现的:

public static void Main(string[] args)
{
    #if (!DEBUG)
    ConfigEncryption.EncryptAppSettings();
    #endif
    //...
}

但不知何故,我更喜欢使用条件属性来装饰加密方法:

[Conditional("!DEBUG")]
internal static void EncryptAppSettings()
{
    //...
}

然而这会让编译器感到悲伤:The argument to the 'System.Diagnostics.ConditionalAttribute' attribute must be a valid identifier...

否定条件参数的正确语法是什么?

修改 感谢@Gusdor,我使用了这个(我更喜欢保持Program.cs文件不含if / else调试逻辑):

#if !DEBUG
#define ENCRYPT_CONFIG
#endif

[Conditional("ENCRYPT_CONFIG")]
internal static void EncryptAppSettings()
{
    //...
}

2 个答案:

答案 0 :(得分:4)

使用该属性将是一个黑客攻击,但它可以完成。

#if DEBUG
//you have nothing to do here but c# requires it
#else
#define NOT_DEBUG //define a symbol specifying a non debug environment
#endif

[Conditional("NOT_DEBUG")]
internal static void EncryptAppSettings()
{
    //...
}

答案 1 :(得分:1)

#if DEBUG
    // do nothing
#else
   //your code here
#endif