.NET目标平台×86、×64、AnyCUP的区别
2021/6/28 23:50:38
本文主要是介绍.NET目标平台×86、×64、AnyCUP的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
https://www.zhihu.com/question/63040129?sort=created
在敲七层的时候出现一个错误:“未能加载文件或程序集 或它的某一个依赖性,上百度查说要把项目的目标平台改成×86,虽然改了问题也没有解决,但也顺便来学习一下目标平台×86、×64、AnyCUP的区别。
×86平台:
强制生成的软件为32位软件,不管操作系统是32位还是64位都是以32位模式运行。
×64平台:
强制生成的软件为64位软件,只能在64位模式运行
AnyCUP:
编译出来的exe或dll是兼容的,取决于当前的操作系统,若操作系统是32位的,则编译出来的程序会以32位的软件模式运行,而在64位操作系统下则以64位的软件模式运行。
具体行为如下:
在64位Windows操作系统上:
用×86编译的程序集将在WOW64下运行的32位CLR上执行。
用×64编译的程序集将在64位CLR上执行。
用Any CPU编译的可执行文件将在64位CLR上执行。
用Any CPU编译的DLL将在与加载它的进程相同的CLR上执行。
在32位Windows操作系统上:
用×86或Any CPU编译的程序集将在32位CLR上执行。
用×64编译的程序集无法运行。
若是程序平台选用不当,可能会报的一个错误是:“未能加载文件或程序集”下边来实践怎么才能选对。
出现这个错误是因为32位程序不能加载64位的dll,更不能调用其中的类、方法和对象等。即你有可能主程序(启动项目)是×86平台下编译的,是32位程序,依赖的项目是×64平台编译出来的,是64位dll文件。或者是主程序是×64平台编译,依赖项目是×86平台编译。(Any CPU编译出来的程序取决于操作系统,编译出来的dll取决于调用它的主程序。)
所以我们可以知道,在可编译的前提下,只要dll和主程序的生成平台一致就可以。如以下几种情况:
1、主程序是Any CPU、×86、×64平台编译的,依赖项目是Any CPU平台编译的。
2、主程序的编译平台和依赖项目的编译平台一样。
综上来说,一般情况下,dll常采用Any CPU平台编译,而主程序则看你的操作系统是多少位而选择×64或×86.
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/syx8821/article/details/80876837
这篇关于.NET目标平台×86、×64、AnyCUP的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#