预定义指令之debug

1)根据你必须知道的.NET一书,

#define DEBUG  

 class Program
{
static void Main(string[] args)
{
#if DEBUG
Console.WriteLine("debug mode");
#else
Console.WriteLine("release mode");
#endif
} }

代码很简单,但其实这段代码是有问题的。

原因出在,其实vs中内置了DEBUG,所以无需在开头再定义DEBUG。还是*这里讲得比较正确。

把第一行去掉后,编译选项选择debug/release的切换,就能切换编译的结果了。

2)关于ConditionAttribute

        class Test
{
static void Main()
{
Foo();
Console.Read();
}
[Conditional("DEBUG")]
static void Foo()
{
Console.WriteLine("debug mode");
} }

在DEBUG模式下,Foo能运行,否则编译时就会被跳过。

对上面的一点扩展:

#define mydefineSymbol
using System;
using ...
class Test
{
static void Main()
{
Foo(); Console.Read();
}
[Conditional("mydefineSymbol")]
static void Foo()
{
Console.WriteLine("debug mode");
} }

在第一行定义了mydefineSymbol之后,这样,Foo就会被编译器包括进来;否则则不被编译。

3)很多时候,我们需要在测试环境下一套逻辑,生产环境中用另一套,那么可以使用在项目属性对话框中,自定义条件编译符号,这样,不用在每个文件最上手动添加一个#define。

预定义指令之debug

代码是:

            static void Main()
{
#if !Produce Console.WriteLine("Produce");
#endif
Console.Read();
}

如果是Debug模式,则会编译该条件;如果是Release则会忽略。

注意:

1)DEBUG是大小写敏感的,写成Debug或debug是无用的。

2)写Release是没有用的。原因是只有DEBUG这个词在VS中被预定义了。

上一篇:mysql添加用户和用户权限


下一篇:CSS3 实现简单轮播图