C#目标平台×86、×64、Any CPU的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yue510/article/details/87452424

简单来说,
×86平台:
将程序集编译为由兼容×86的32位公共语言运行库运行。
×64平台:
将程序集编译为由支持AMD64或EM64T指令集的计算机上的64位公共语言运行库运行。
Any CPU:
(默认值)将程序集编译为在任意平台上运行。
ltanium:将程序集编译为由采用ltanium处理器的计算机上的64位公共语言运行库运行。
在这里插入图片描述
若你的启动项目,即主程序(编译出来的exe文件的)是×86平台下编译的,而它所依赖的一个项目(或动态链接库)是由×64位平台编译出来的,则会提示“未能加载文件或程序集……或它的某一个依赖性。视图加载格式不正确的程序。”之类的错误。这是因为32位程序不能加载64位的dll,更不能调用其他的类、方法和对象等。反之,若主程序是由×64平台编译出来的,而dll是×86的呢……当然也是不行的。所以,dll和主程序的生成平台要一致
若主程序是在Any CPU平台型编译的,那么编译dll的平台必须要和编译主程序的操作系统一致才行。若主程序是在×86或者×64平台下编译的,那么dll就必须要和主程序一致。

总的来说,
1.主程序是Any CPU、×86、×64平台编译的,依赖项目是Any CPU平台编译的。
2.主程序的编译平台和依赖项目的编译平台是一样的。

虽说Any CPU编译出来的程序取决于操作系统,但是由Any CPU编译出来dll则取决于调用它的主程序,即若主程序是32位的,那么dll也是32位的,若主程序是64位的,那么dll就是64位的。所以dll一般采用Any CPU平台编译,而主程序一般采用x86平台编译。

Debug和Release的区别?
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好的使用。所以一般都是用Release来打包发不程序,另外,Release打包出来的程序也相对来说会小一些。

猜你喜欢

转载自blog.csdn.net/Yue510/article/details/87452424
今日推荐