Visual Studio中Debug与Release的区别:程序员
在Visual Studio中,编译模式有2种:Debug与Release。这也是默认的两种方式,在新建一个project的时候,就已经存在这两种模式供选择。优化
Debug一般称为调试版本,它包含调试信息,而且不做任何优化,便于程序员调试程序。
Release称为发布版本,它每每是进行了各类优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。spa
SO:
通常都是用Release来打包发布程序,由于Release作了更多的优化,运行速度更快,适合在项目完成后部署,另外,Release打包出来的程序文件也相对来讲会小一些。而Debug模式更适合在开发调试的时候使用。即:开发调试的时候使用Debug模式,打包发布程序用Release模式。操作系统
Visual Studio中x8六、x6四、Any CPU的区别:调试
一、简单的说,它们之间最直接的区别就是:x86平台编译出来的exe(可执行文件)或dll(动态连接库)都是32位的。x64对应的则是64位的。而Any CPU则是取决于当前的操做系统,若操做系统是32位的,则编译出来的程序就是32位的,若操做系统是64位的,编译出来的就是64位程序。对象
二、若你的启动项目,即主程序(编译出来是exe文件的)是x86平台下编译的,而它所依赖的一个项目(或动态连接库)是由x64位平台编译出来的,则会提示“未能加载文件或程序集…或它的某一个依赖性。试图加载格式不正确的程序。”之类的错误。这是由于32位程序不能加载64位的dll,更不能调用其中的类、方法和对象等。
反之,若主程序是由x64平台编译出来的,而dll是x86的呢?答案。。也是不行的!
说到这里,基本上能够肯定一点:dll和主程序的生成平台只要一致就能够。
那么问题来了!若主程序是Any CPU编译的,而dll是由x86或者x64平台编译的,又或者,主程序是x86或者x64平台编译的,而dll是由Any CPU编译的呢?正确答案就是二者在“特殊状况”下都是可行的。为何说是“特殊状况”下呢?由于第一点也提到了,Any CPU取决于操做系统,而结合第二点提到的只要dll和主程序的生成平台一致,那么也是可行的。因此,由上可知:若主程序是在Any CPU平台下编译的,那么编译dll的平台必需要和编译主程序的操做系统一致才行。若主程序是在x86或者x64平台下编译的,那么dll就必需要和主程序一致。不过有个特例:若dll由Any CPU编译的,那么这个dll就能够被32位和64位的主程序调用。这是为何呢?请看第三点。
三、虽然说Any CPU编译出来的程序取决于操做系统,可是由Any CPU编译出来dll则取决于调用它的主程序,即若主程序是32位的,那么dll也是32位的,若主程序是64位的,那么dll就是64位的。因此dll通常采用Any CPU平台编译,而主程序(exe)通常采用x86平台编译。
总结:了解了它们的区别以后,咱们打包程序的时候就知道如何取舍了。通常来讲,在不清楚客户的电脑是什么类型的操做系统的状况下,或者二者都有的时候,则主程序采用x86平台编译,dll采用Any CPU平台编译。若清楚的知道是64位操做系统,那么就能够都按x64平台编译了。开发