首页 > 解决方案 > 禁用“首选 32 位”的目标“任何 CPU”无论如何都会使用 32 位首选项进行编译

问题描述

我将目标设置为“任何 CPU”,禁用“首选 32 位”。

在此处输入图像描述

我想知道为什么我的进程仍然在 64 位系统上以 32 位运行,所以我检查了 CorFlags。它确认,我的可执行文件是在启用 32BITPREF 的情况下编译的。

在此处输入图像描述

什么会导致这个?

标签: c#.netcorflags

解决方案


我检查了项目文件以查看<Prefer32Bit>实际设置的内容,但奇怪的是它根本没有明确指定。

所以 VS 显然默认为<Prefer32Bit>iftrue标记不存在,这与What AnyCPU 的真正含义 As Of .NET 4.5 和 Visual Studio 11一致:

在 .NET 4.5 和 Visual Studio 11 中,奶酪已被移动。大多数 .NET 项目的默认值还是 AnyCPU,但现在 AnyCPU 的含义不止一种。AnyCPU 有一个额外的子类型,“任何 CPU 32 位首选”,这是新的默认...

<Prefer32Bit>false</Prefer32Bit>手动添加解决了这个问题。

不知道为什么标签首先丢失了。也许该项目是从 .Net Framework 4.5 之前的版本更新的,而 VS 在执行项目更新时错过了添加?

但是,当标签丢失时不设置“首选 32 位”复选框似乎是 VS 的疏忽。


推荐阅读