首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CorFlags说我的.NET程序运行为64位,而DumpBin表示它是32位

CorFlags说我的.NET程序运行为64位,而DumpBin表示它是32位
EN

Stack Overflow用户
提问于 2016-08-05 13:33:16
回答 1查看 199关注 0票数 1

我创建了一个项目并将其编译为Any CPU。在x64-Windows上。由于我很难从代码中引用该程序集,所以我检查了运行时和目标平台:

如您所见,在x64-OS (作为我的)上运行时,目标平台是x64。我还检查了DumpBin

代码语言:javascript
复制
PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
             14C machine (x86)
               3 number of sections
        57A49000 time date stamp Fri Aug 05 15:09:20 2016
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
             102 characteristics
                   Executable
                   32 bit word machine

然而,当我运行CorFlags时,它给了我x64作为程序集的平台:

代码语言:javascript
复制
Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 9
ILONLY    : 1
32BIT     : 0
Signed    : 1

据我所知,当我选择Any CPU作为目标平台时,操作系统将选择如何执行程序集。在64位系统上,它将在64位上运行,在32位操作系统上分别作为32位运行。

所以我的问题是:我到底是什么版本? 32位还是64位?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-05 13:47:01

这完全是正常的。AnyCPU意味着它可以在任何cpu上运行,因此报头中的机器字段不相关。必须选择一些东西,它只是选择x86。使其与Win98和Win2k等古老的Windows版本兼容。

special heroics发生在64位操作系统上,操作系统加载程序需要帮助从32位可执行文件创建64位进程,这需要修补内部加载程序结构。mscoree.dll“装入器-shim”完成了链接文章中描述的工作。

因此,您不针对任何特定版本。它确实是AnyCPU。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38790620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档