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()
{
//...
}
答案 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