Visual Studio中Debug与Release编译模式的区别以及Preprocesor directives的使用

Visual Studio中,最基础的编译模式有2中,DebugRelease.这也是默认的两种方式,在新建一个project的时候,这两种模式就已经存在。

Visual Studio中Debug与Release编译模式的区别以及Preprocesor directives的使用_第1张图片


我们也可以点击那个Configuration Manager按钮,去自己创建一个新的编译模式。在创建这个编译模式的时候,会问你是否要继承自现在已有的某个,可以选择Debug或者Release,也可以什么都不选,这个继承指的是一些编译的方式,比如说是否要优化代码什么的。


那么DebugRelease编译模式到底有着什么样的区别?我们可以到Project的属性中查看。在Build选项卡,我们可以看到Debug模式的具体的内容。最主要的是那个Optimize code选项没有勾选,这样就没有压缩dll,也就是说这里还是含有一个调试信息的,可以对程序进行调试。如果选择了Release模式,默认是勾选了这个选项,就会对dll进行压缩,这样之后的dll会变得很小,但是就不能调试了。(当然也可以把Release模式下的压缩dll选项取消,这样做可以,但是没有任何意义了,因为Release模式本应该就是要压缩的,干嘛把默认的取消,非要逆着正常人思维做事。)

Visual Studio中Debug与Release编译模式的区别以及Preprocesor directives的使用_第2张图片 


 

看上边这个选项页,还有就是定义了DEBUGTRACE的常量,这个常量是给Preprocessor使用的,也就是在VS中常见的#开头的那些东西。这里是定义了DEBUG这个常量,那么在Debug模式下编译这个程序,也就是说在Start那个框后边选择了Debug之后,下边的这句Console.WriteLine才会被编译到dll中,才会被CLR执行。如果是Release模式,就不会被编译与执行。

 

#ifDEBUG
    Console.WriteLine("Debugversion");
#endif

 

这是MSDN中所有的Preprocessor的列表:https://msdn.microsoft.com/en-us/library/ed8yd1ha.aspx

 

如果是一个Website的项目,在项目publish的时候,也会涉及到DebugRelease,或者其他自定义的模式,比如说DeployToQA(继承自Release),因为创建VS的一键部署的时候,需要选择一种模式,这样VS才知道把哪种编译的dll放到server上边。

Visual Studio中Debug与Release编译模式的区别以及Preprocesor directives的使用_第3张图片

 

而且,VS最新推出了一种Web.configtransform语法方式,你选择了何种编译模式,就要到Web.config的同一目录下边,找到Web.DeliveryInDev.config文件,然后用相应的语法来编写这个文件,大致意思就是,以Web.config为模板,不过替换其中一些节点的内容,比如说,把database改为QA的数据库的地址等。


你可能感兴趣的:(Visual,Studio)