什么决定了面向 "AnyCpu" 平台的 .NET 应用程序是在 32 位还是 64 位上运行?

What determines if a .NET app that targets the "AnyCpu" platform runs at 32 or 64 bits?

我有一个 .NET 解决方案,里面有几个 .NET Framework 项目,其中两个生成可执行文件(一个是 Windows 服务,另一个是 WPF 应用程序)。

这两个项目都针对“任何 CPU”平台,并且没有在构建选项中打开“首选 32 位”标志。

但是,我通过任务管理器注意到,虽然 WPF 应用程序默认以 64 位模式启动,但服务却以 32 位模式启动。

我的问题是:为什么不同?什么决定了不针对特定平台的 .NET 可执行文件是在 32 位还是 64 位模式下启动?是因为它是专门的Windows服务吗?

编辑:重新开放,因为链接的所谓“重复”问题实际上并没有解释为什么服务会在 64 位机器上以 32 位模式启动。

感谢@canton7 为我指明了正确的方向。

事实证明“首选 32 位”标志仍然有效,即使我从 visual studio 禁用了它。可能是缓存问题,我关闭了 visual studio,删除了 bin 文件夹,重新打开并重建了解决方案,该服务现在可以在 64 位模式下正确启动。