【问题标题】:Run a ANYCPU Exe on 64bit System in 32 Bit Mode在 64 位系统上以 32 位模式运行 ANYCPU Exe
【发布时间】:2014-02-20 14:47:51
【问题描述】:

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

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

谢谢你的建议

【问题讨论】:

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


【解决方案1】:

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

这是相关部分of this article

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

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

【讨论】:

  • 如果可能,我希望应用程序以 64 位模式运行。就在那一台机器上,它应该以 32 位运行。本机有 64 位操作系统
  • 对不起,这是一个全有或全无的选择
  • 上面HansPassant提供的链接可能是你的答案,但是,我真的建议阅读这篇文章blogs.msdn.com/b/rmbyers/archive/2009/06/09/…
【解决方案2】:

是的!!

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

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

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

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

<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
   <Reference ...>....</Reference>
</ItemGroup>

【讨论】:

  • 对,但是如果您按原样运行 .exe 程序,它仍然会在 64 位 Windows 上以 64 位模式加载。
猜你喜欢
  • 2012-06-12
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
相关资源
最近更新 更多