.Net编译环境x86,x64,anycpu的区别
一、定义
二、选择不同后的行为
三、AnyCPU(Prefer 32-bit)(看了waterlv,大水哥的博文)
这是在右击属性,选择首选32位才会使用的方法,必须使用 .net framework 4.5 以上才可以使用。在这个编译下,程序运行都是 32 位。

在 32 位系统下,运行 32 位程序
在 64 位系统下,运行 32 位程序,但是可以获得 4G 内存
在 ARM 下,运行 32 位程序
如果使用 AnyCPU 那么编译为 IL 是不需要加平台,程序在机器运行才判断机器平台,自动编译为机器可以运行的程序。
那么 AnyCPU(Prefer 32-bit) 和 x86 有什么区别?实际上在 ARM 系统,只能使用 AnyCPU(Prefer 32-bit) 运行 32 位程序,如果选择 x86 就无法运行。
为什么需要在 64 位的设备使用 AnyCPU(Prefer 32-bit),因为如果存在一些库只能在 32位程序运行,那么就需要运行的程序是 32 位,所以需要使用这个方法。
如果在运行的时候,如何判断当前的系统版本?
可以使用 Environment 来判断,Environment.Is64BitProcess
可以判断当前的程序运行的是 32 还是 64 ,通过 Environment.Is64BitOperatingSystem
可以判断系统
那么如何判断一个 dll 是 x86 还是 any cpu?
可以打开开发者命令,然后输入 corflags 判断,开发者命令一般如果是安装 vs2017 就是Developer Command Prompt for VS 2017
,通过开始就可以找到。
corflags lindexi.dll
看输出,就可以知道这个库是什么
Any CPU:
PE: PE32 32BIT: 0
x86:
PE: PE32 32BIT: 1
x64:
PE: PE32+ 32BIT: 0
四、其他编译选择
- anycpu 默认的编译
- anycpu32bitpreferred 在 .NET Framework 4.5 和以上才可以使用
- ARM 程序编译为 ARM 运行
- x64
- x86
- Itanium
如果使用命令编译,那么可以使用platform
和字符串
csc /platform:anycpu filename.cs
.Net编译环境x86,x64,anycpu的区别的更多相关文章
- vs2010 编译平台 X86 X64 anycpu
X86既32位程序,X64既64位程序,anycpu会根据当前的操作系统位数决定 但是如果应用程序编译成anycpu,会由操作系统位数决定,如果是dll之类的,会由调用dll的主程序位数决定 所以一般 ...
- 『开源重编译』System.Data.SQLite.dll 自适应 x86 x64 AnyCPU 重编译
背景: > System.Data.SQLite.dll 程序集 不能良好的支持 AngCPU 格式 System.Data.SQLite.dll 在 适应 x86 和 x64 有三个方案: & ...
- x86/x64/AnyCPU之间的区别
原文链接 http://blog.csdn.net/lordwish/article/details/52312015 x86操作系统 目标平台 程序类型 运行结果 x86 应用程序exe 在32位C ...
- C# 关于X86/X64/AnyCpu 的关系
电脑硬件CPU可以分为x86与x64, x86的机器只能安装32位的操作系统,如XP, WIN7_86, x64的机器既可以安装32位的系统,又可以安装64位的系统,只是在x64的机器上安装32位的系 ...
- x86,x64,Any CPU区别
https://blog.csdn.net/zuguangboy/article/details/51509670 1,即主程序(编译出来是exe文件的)是x86平台下编译的,而它所依赖的一个项目(或 ...
- X86 X64 X86_64 AMD64 区别
X86:32位(一般i386是32位CPU的统称) X64:64位(代表CPU:IA64,现在几乎没有这样纯粹的64位CPU,都是兼容32位的64位CPU,如下) X86_64:兼容32位的64位CP ...
- Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法
Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法跟Ubuntu 12.04 - 13.10 以及jellybean编译环境配置没多大区别, 顺便记录下而已: Ub ...
- windows下安装python的C扩展编译环境(解决“Unable to find vcvarsall.bat”)
个人文章除注明转载外,均为个人原创或者翻译. 个人文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本文链接:http://www.cnblogs.com/f ...
- .NET编译的目标平台(AnyCPU,x86,x64)
转载:http://blog.sina.com.cn/s/blog_78b94aa301014i8r.html 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有D ...
随机推荐
- NVIDIA Jetson™ TX1 Module
NVIDIA® Jetson TX1 是一台模块式计算机,代表了视觉计算领域近20年的研发成就,其尺寸仅有信用卡大小.Jetson TX1 基于NVIDIA Maxwell™ 架构,配有256个 NV ...
- 使用macOS苹方替换Windows 10微软雅黑
关于微软雅黑 Windows从Vista开始用到现在的”微软雅黑”十多年以来基本没什么大改动,而大家的显示器从CRT进化到了IPS高分屏,十年前看着还OK的字体现在在绝大多数屏幕上可能就是这个样子的: ...
- Sass函数:数字函数-ceil()函数
ceil() 函数将一个数转换成最接近于自己的整数,会将一个大于自身的任何小数转换成大于本身 1 的整数.也就是只做入,不做舍的计算: >> ceil(2.0) 2 >> ce ...
- Linux --忘记root密码/su: Authentication failure
如果忘记了root用户的密码,或者su root的时候,提示:su: Authentication failure 那么,可以通过以下的方式来重新设置密码,而后,再尝试,那么就可以顺利su root了 ...
- 外包项目测试工作量评估指南&外包项目测试验收流程
## ### 外包项目测试工作量评估指南 1.目的 编写本指导书的目的旨在为我公司进行测试外包服务工作进行指导,帮助项目经理和相关人员编写测试方案.评估工作量.制定测试计划和测试策略等, ...
- spring Boot 简单的登录功能,利用了jdbcTemplate.class完成sql语句的执行,无需service层、dao层和.xml文件
1.搭建SpringBoot项目首先我们先在IDEA上创建一个SpringBoot的Web项目(1)file ——> new ——> project——> Spring Initia ...
- ImageField 字段的使用
Django模型中的ImageField和FileField的upload_to选项是必填项,其存储路径是相对于MEIDA_ROOT而来的.
- FMXUI ANDROID下连续按多次返回出现异常
在ANDROID下,按返回键后,默认是关闭当前Frame,但连接按返回键,会对当前Frame执行多次关闭动作,因为已经释放过对象,再次关闭会出现异常错误,解决办法:定义一个标识如FClosed: ...
- spring-boot整合mybaits多数据源动态切换案例
1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...
- STM32时钟设置
一.使用外部时钟,并设置为72MHz void SetSysClockToHSE(void) { ErrorStatus HSEStartUpStatus; /* SYSCLK, HCLK, PCLK ...