10

如何强制我的应用程序在 64 位机器上以 32 位运行?

代码是用 C# 编写的。

4

6 回答 6

22

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

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

点击Ctrl++Shift保存S所有文件,右键单击解决方案并选择“清理”以摆脱旧的二进制文件。之后的任何构建都应该是 32 位

于 2009-01-12T22:32:58.793 回答
11

命令行形式:

corflags application.exe /32BIT+ 
于 2010-01-15T02:33:25.950 回答
8

由于ClickOnce限制,我们无法将现有代码从Any CPU更改为x86时,我是这样做的:

创建一个 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");
}

我希望这有帮助 :-)

于 2010-01-15T02:15:10.963 回答
5

如果您转到 Visual Studio 中的配置管理器,您可以将平台设置为 x86 或 x64。

于 2009-01-12T22:32:39.637 回答
1

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

于 2009-01-12T22:31:39.313 回答
0

将项目设置为 x86 将阻止文件在 ARM 等非 x86 平台上执行。从 Visual Studio 11 和 .NET 框架 4.5 开始,有一个名为的新选项Any CPU 32-bit preferred,从那时起这是默认选项。生成的代码将在任何平台上运行,但在 64 位平台上它们作为 32 位进程运行

进一步阅读

于 2014-05-10T02:34:16.093 回答