C#编译器选项(目标平台)

用vs编译C#项目的设置中,“属性-生成-目标平台”有anycpu,x86,x64等选项。

  • anycpu(默认值)将编译程序集为使其在任意平台上都可以运行。 在任何可能的时候,应用程序作为 64 位进程运行;仅当该模式只可用时,才会回退到 32 位。
  • x86将程序集编译为由与 x86 兼容的 32 位公共语言运行时运行。
  • x64 将程序集编译成可由 64 位公共语言运行库在支持 AMD64 或 EM64T 指令集的计算机上运行。

在 64 位 Windows 操作系统上:

  • 用 /platform:x86 编译的程序集将在运行于 WOW64 下的 32 位 CLR 上执行。
  • 用 /platform:anycpu 编译的 DLL 将在加载该进程的同一 CLR 上执行。(例如:IIS应用程序池中,“启用32应用程序”为True时,则在32位CLR上执行,否则在64位CLR上执行)
  • 用 /platform:anycpu 编译的可执行文件将在 64 位 CLR 上执行。

详细参考:https://msdn.microsoft.com/zh-cn/library/zekwfyz4(v=vs.120).aspx

时间: 2024-10-15 06:26:21

C#编译器选项(目标平台)的相关文章

目标平台选项对生成的模块及运行时的影响

.NET程序在编译之前,修改目标平台唯一会影响到的就是编译之后的程序集.而对程序集的影响具体体现在哪里呢,下面就来说一说. 在生成的程序集中存在几部分,他们是程序集的组成部分,当然归根到底还是磁盘上的一部分空间而已.这里边有MS-DOS占位程序.COFF头.PE头等等(当然还包含很多,具体可以查相关资料).PE头的第一个字段标识的是Magic字段.也就是说,在编译之前修改的目标平台属性会导致生成的程序集的相应字段改变.这种改变体现在运行时的不同. 运行一个可执行文件,Windows会检查这个可执

关于.NET编译的目标平台(AnyCPU,x86,x64)

今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有DLL工程的目标平台全部指定成AnyCPU . 下面我们一起看看这个目标平台有什么作用,各选项有什么差别吧. 在VisualStudio中,在编译设置中有如下选项: x86: 将程序集编译为由兼容 x86 的 32 位公共语言运行库运行. x64: 将程序集编译为由支持 AMD64 或 EM64T 指令集的计算机上的 64 位公共语言运行库运行. anycpu:(默认值)将程序集编译为在任意平台上运行. Ita

.NET编译的目标平台(AnyCPU,x86,x64)

转载:http://blog.sina.com.cn/s/blog_78b94aa301014i8r.html 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有DLL工程的目标平台全部指定成AnyCPU . 下面我们一起看看这个目标平台有什么作用,各选项有什么差别吧. 在VisualStudio中,在编译设置中有如下选项: x86: 将程序集编译为由兼容 x86 的 32 位公共语言运行库运行. x64: 将程序集编译为由支持 AMD64 或 EM64T 指

编译器选项

将msdn上vs2013的编译器选项记载一下,我不创造文章,我只是大自然的搬运工: 1./STACK(堆栈分配) /STACK:reserve[,commit] /STACK 选项设置堆栈的大小(以字节为单位).此选项仅在生成 .exe 文件时使用. 该选项指定虚拟内存中的总的堆栈分配.默认堆栈大小为 1 MB.链接器将指定值向上舍入为最接近的 4 个字节. commit 取决于操作系统所作的解释.在 Windows NT 和 Windows 2000 中,它指定一次分配的物理内存量.提交的虚拟

关于.NET编译的目标平台(AnyCPU,x86,x64)(转)

今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有DLL工程的目标平台全部指定成AnyCPU . 下面我们一起看看这个目标平台有什么作用,各选项有什么差别吧. 在VisualStudio中,在编译设置中有如下选项: x86: 将程序集编译为由兼容 x86 的 32 位公共语言运行库运行. x64: 将程序集编译为由支持 AMD64 或 EM64T 指令集的计算机上的 64 位公共语言运行库运行. anycpu:(默认值)将程序集编译为在任意平台上运行. Ita

QT5.7.0在win10下使用visual studio 2015编译(目标平台 xp)

环境:win10+vs2015+QT5.7.0 目标:编译出能在windows xp上运行的QT 通过baidu和bing找不出来的结果没有一个能成功运行,大部分都能编译成功,并完美解决“exe不是有效的win32程序”,但是程序依旧没法正常显示窗口. 此时会有一个crash,具体位置是qwindows.dll,但是使用depends查看也没看出来qwindows.dll有问题,有些人会遇到qwindows.dll依赖的 kernel32.dll在xp下没有对应接口,具体接口不记得了,最后看到是

完美解决HALCON C#编程目标平台冲突问题

完美解决HALCON C#编程目标平台冲突问题 楼主# 更多发布于:2016-11-23 10:06 背景: 目标机器工控机使用11.0.1 32位Halcon 原因你懂的.开发环境Win10 X64 + VS2015  + Halcon 11.0.3 X64 & X86 问题1: 开发机器上开发Halcon程序,目标平台只能使用AnyCPU  或者 X64,使用X86就不行,程序会自动崩溃无提示.单步跟踪会在这里出错:             this.hWindowControl1 = ne

Visual C++ 编译器选项/MD、/ML、/MT、/LD

前段时间编译一个引用自己写的静态库的程序时老是出现链接时的多个重定义的错误,而自己的代码明明没有重定义这些东西,譬如:LIBCMT.lib(_file.obj) : error LNK2005: ___initstdio already defined in libc.lib(_file.obj)LIBCMT.lib(_file.obj) : error LNK2005: ___endstdio already defined in libc.lib(_file.obj)LIBCMT.lib(_

目标平台、活动平台 配置,出现未能加载文件或程序集“xxx”或它的某一个依赖项报错

今天在做动态加载程序集的时候,发现明明程序集存在的情况下,还是依然报“未能加载文件或程序集“xxx”或它的某一个依赖项报错”的错误,排除了程序和配置的错误后,怀疑是否是环境的问题,于是百度加msdn后,终于找打答案,这里记录下,避免以后其他人也遇到 如果你将应用程序生成x86而不是Any CPU时,在64位操作系统中不会出错错误,而在32位操作系统中可能会出现以下错误 “/xxxxx”应用程序中的服务器错误. -------------------------------------------