是否可以强制使用“Any”架构标签编译的 C# 应用程序在 64 位 Windows 上作为 32 位应用程序运行?

是否可以强制使用“Any”架构标签编译的 C# 应用程序在 64 位 Windows 上作为 32 位应用程序运行?

我有一个用 C# 编写的 .Net 应用程序。该应用程序已使用“any”标志进行编译,允许它以 64 位和 32 位运行,具体取决于部署它的操作系统。

我想知道是否可以强制应用程序在 64 位版本的 Windows(任何 64 位版本的 Windows)上作为 32 位应用程序运行。

答案1

是的,使用国旗在可执行文件上设置 32BIT 标志。例如:

corflags.exe myapp.exe /32BIT+

这将修改您的 exe,因此您可能需要保留备份以防万一。您也可以使用以下命令恢复标志,/32BIT-而不是/32BIT+

答案2

更新信息:

在 Visual Studio 2012 及更高版本中构建 .NET 应用程序时,默认设置是 AnyCPU,并带有 AnyCPU 的附加子类型“首选 32 位任何 CPU”。这意味着以下内容:

  • 如果进程在 32 位 Windows 系统上运行,则它将作为 32 位进程运行。IL 被编译为 x86 机器代码。
  • 如果进程在 64 位 Windows 系统上运行,则它将作为 32 位进程运行。IL 被编译为 x86 机器代码。
  • 如果进程在 ARM Windows 系统上运行,则它将作为 32 位进程运行。IL 被编译为 ARM 机器代码。

来源:http://blogs.microsoft.co.il/sasha/2012/04/04/what-anycpu-really-means-as-of-net-45-and-visual-studio-11/

相关内容