2

在 64 位操作系统上运行一个 EXE 女巫是否可以编译为 ANYCPU,但在 32 位模式下?

有没有办法配置启动模式?

谢谢你的任何建议

4

2 回答 2

1

如果您使用 NET Framework 4.5 编译了您的应用程序,则可以这样做。在这种环境下,您可以选择 Prefer 32 bit 来强制您的应用在 32 位模式下运行,即使底层操作系统是 64 位

首选 32 位

这是本文的相关部分:

在 .NET 4.5 和 Visual Studio 11 中,奶酪已被移动。大多数 .NET 项目的默认值还是 AnyCPU,但现在 AnyCPU 的含义不止一种。AnyCPU 有一个额外的子类型,“Any CPU 32-bit Preferred”,这是新的默认值(总体而言,现在 /platform C# 编译器开关有五个选项:x86、Itanium、x64、anycpu 和 anycpu32bitpreferred )。当使用这种风格的 AnyCPU 时,语义如下:

  • 如果进程在 32 位 Windows 系统上运行,则它作为 32 位进程运行。IL 被编译成 x86 机器码。
  • 如果进程在 64 位 Windows 系统上运行,则它作为 32 位进程运行。IL 被编译成 x86 机器码。
  • 如果进程在 ARM Windows 系统上运行,它将作为 32 位进程运行。IL 被编译为 ARM 机器码。
于 2014-02-20T14:59:53.973 回答
0

是的 !!

当你说“AnyCPU”时, JIT会处理这个问题,当它被加载到 64 位进程中时它会加载 64 位库,或者当它被加载到 32 位进程中时会加载 32 位库。

由于您尚未指定使用的 Visual Studio 版本,您可以手动编辑项目文件以强制您的应用程序在 32 位上运行。

<Reference Include="Filename, ..., processorArchitecture=x86">
  <HintPath>C:\..\x86\DLL</HintPath>
</Reference>

并在所需区域更改平台值。

<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
   <Reference ...>....</Reference>
</ItemGroup>
于 2014-02-20T14:55:20.273 回答