在32位模式下在64位系统上运行ANYCPU Exe

时间:2014-02-20 14:47:51

标签: vb.net 64-bit exe 32-bit anycpu

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

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

感谢您的任何建议

2 个答案:

答案 0 :(得分:1)

如果您使用.NET Framework 4.5编译了应用程序,则可能。在此环境中,您可以选择首选32位以强制您的应用程序在32位模式下运行,当底层操作系统为64位时

Prefer 32 bit

这是相关部分of this article

在.NET 4.5和Visual Studio 11中,奶酪已被移动。大多数.NET项目的默认设置是AnyCPU,但现在AnyCPU有多个含义。还有一个额外的子类型AnyCPU,“任何CPU 32位首选”,这是新的默认值(总体而言,/ platform C#编译器交换机现在有五个选项:x86,Itanium,x64,anycpu和anycpu32bitpreferred )。使用AnyCPU的那种风格时,语义如下:

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

答案 1 :(得分: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>