编译为 AnyCPU 生成在 64 位机器上设置了 32BIT 标志的程序集

Compiling as AnyCPU produces assembly with 32BIT flag set on 64-bit machine

我在 Visual Studio 2013 年在 64 位机器上创建了一个全新的 .NET 4.5 WinForm 项目。编译后,我运行 corflags in the .exe and the 32BIT flag is set.

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 131075
ILONLY    : 1
32BIT     : 1
Signed    : 0

当我查看任务管理器时,它也被标记为 32 位进程。

我没有添加任何可能会强制它在 32 位模式下 运行 的引用。我查看了项目文件,也没有发现任何可疑的东西。

我可以 运行 corflags /32BIT- 在程序集上,它 运行 作为 64 位进程就好了。

什么可能导致它编译为 32 位可执行文件?

在项目中 属性 Pages 是一个名为 "Build" (A) 的页面。

"Platform Target" 字段 (B) 下是 "Prefer 32bit" 字段 (C)。

您可以切换它以从 corflags 中删除 32 位标志。

(图片来自 VS 2015)