在64位计算机上以32位模式运行C#应用程序

10

我怎么才能让我的应用在64位计算机上以32位运行?

这段代码是用C#编写的。

6个回答

22

右键点击您的项目,然后选择属性。

在属性中,选择构建选项卡。在平台目标下,选择 x86。

按下 Ctrl+Shift+S 保存所有文件,右键单击解决方案并选择 "清理" 来删除旧二进制文件。此后任何构建都应该是 32 位的。


这样它只能在x86上运行,无法在ARM或其他架构上运行。 - phuclv

11

命令行格式:

corflags application.exe /32BIT+ 

8
这是我在无法将现有代码从“Any CPU”更改为“x86”的情况下,由于ClickOnce的限制,所采取的方法:
创建一个32位(在项目属性中必须勾选x86)的“启动器”应用程序(Windows应用程序但不是窗体):
static void Main(string[] args)
{
    // Load the assembly    
    string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    string assemblyName = Path.Combine(directory, "YourAnyCPUApplication.exe");
    Assembly assembly = Assembly.LoadFile(assemblyName);
    assembly.EntryPoint.Invoke(null, null);
}

将以下代码添加到 Any CPU 项目的 Main 方法中:

if (IntPtr.Size == 4)
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    // etc...
}
else
{
    // Launch application in 32-bit mode
    System.Diagnostics.Process.Start(Path.GetDirectoryName(Application.ExecutablePath)
                                     + @"\Your32BitApplicationLauncher.exe");
}

我希望这可以帮到你 :-)

5

如果你在Visual Studio中进入配置管理器,你可以将平台设置为x86或x64。


1
假设这是一个Winforms、控制台应用程序或Windows服务,您必须为x86构建exe而不是Any CPU。它在配置管理器中。

0

将项目设置为x86会防止文件在非x86平台上执行,例如ARM。自Visual Studio 11和.NET Framework 4.5以来,有一个名为 Any CPU 32-bit preferred 的新选项,这是默认选项。生成的代码将在任何平台上运行,但在64位平台上,它们将作为32位进程运行。

更多阅读

  • {{link2:Visual Studio中“ Prefer 32-bit”设置的目的是什么,它实际上如何工作?}}
  • {{link3:Visual Studio(C#,VB)中的“ Prefer 32-bit”编译器标志是什么意思?}}
  • {{link4:关于.NET 4.5和Visual Studio 11,“ AnyCPU”真正意味着什么}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接