查看.NET程序集生成面向的平台架构
引用于:http://www.cnblogs.com/shanyou/archive/2013/02/18/2915347.html
.NET Framework SDK中的一个工具程序: CorFlags.exe。(这个工具在命令行中启动)
开始菜单---》Microsoft Visual Studio 2010--》Visual Studio Tools---》Visual Studio Command Prompt (2010)
CorFlags.exe不但可查询.NET组件的平台目标设定,甚至能直接修改设定,省去重新编译的工夫。
先通过实验观察不同平台目标组件的下拉列表。在Visual Studio中依序调整PlatformTarget为Any CPU, x86及x64,分别编译成EventPingPongAny.exe, EventPingPongX86.exe, EventPingPongX64.exe三个程序集。
再使用corflags EventPingPong*.exe的方法检查相关属性,得到结果如下:
H:\Lab\EventPingPong\bin>corflags EventPingPongAny.exe (Any CPU版本)
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 1
ILONLY : 1
32BIT : 0
Signed : 0
H:\Lab\EventPingPong\bin>corflags EventPingPongx86.exe(x86版本)
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 3
ILONLY : 1
32BIT : 1 (x86生成的)
Signed : 0
H:\Lab\EventPingPong\bin>corflags EventPingPongx64.exe(x64版本)
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32+ (x64生成的,PE代表可移植执行体)
CorFlags : 1
ILONLY : 1
32BIT : 0
Signed : 0
PE, CorFlags, IONLY, 32BIT等属性的意义可以参考这篇文章(链接已经没有了)。若要将编译成Any CPU的程序目标平台改为限定x86,可使用以下指令:
CorFlags /32BIT+ EventPingPongAny.exe
将参数改为/32BIT-则可以再还原回Any CPU。至于纯x64目标平台的程序由于PE不同(为PE32+,与Any CPU, x86不同),故无法直接使用CorFlags切换,必须重新编译。
附录一:(摘录至百度知道)
PE等是指可执行程序(EXE或DLL)文件格式,每种文件格式都有一些该可执行文件加载到内存中所需要的信息(如程序入口点等),这些信息被组织为特定的数据结构,放在该可执行文件的开头部分,所以叫文件“头”。

浙公网安备 33010602011771号