我有一个用 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 机器代码。