【问题标题】:Running a C# application as 32-bit on a 64-bit machine在 64 位机器上以 32 位运行 C# 应用程序
【发布时间】:2010-10-01 00:54:50
【问题描述】:

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

代码是用 C# 编写的。

【问题讨论】:

    标签: c# .net process x86 32bit-64bit


    【解决方案1】:

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

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

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

    【讨论】:

    • 这样只能在x86上运行,不能在ARM或其他架构上运行
    【解决方案2】:

    命令行形式:

    corflags application.exe /32BIT+ 
    

    【讨论】:

      【解决方案3】:

      由于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");
      }
      

      我希望这会有所帮助:-)

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            进一步阅读

            【讨论】:

              猜你喜欢
              • 2012-07-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-01-18
              • 1970-01-01
              • 2011-01-14
              • 2016-05-17
              • 2013-06-06
              相关资源
              最近更新 更多