Running a 32-bit C# application on a 64-bit machin

2019-01-19 13:57发布

How do I force my application to run as 32 bit on a 64 bit machine?

The code is written in C#.

6条回答
唯我独甜
2楼-- · 2019-01-19 14:07

Visual Studio 11 and .NET framwork 4.5 or above have an option for Any CPU 32-bit preferred and this was the default since then

The resulting code will run on any platforms but on 64-bit platforms they are run as 32-bit processes

查看更多
贪生不怕死
3楼-- · 2019-01-19 14:08

Command-line form:

corflags application.exe /32BIT+ 
查看更多
4楼-- · 2019-01-19 14:13

Right click your project, and select properties.

In properties, select the build tab. Under platform target, select x86.

Hit Ctrl+Shift+S to save all files, right click the solution and select "Clean" to get rid of old binaries. Any builds after that should be 32 bit

查看更多
Fickle 薄情
5楼-- · 2019-01-19 14:23

Assuming this is a Winforms, console app, or Windows service you have to build the exe for x86 instead of Any CPU. It's in the Configuration Manager.

查看更多
狗以群分
6楼-- · 2019-01-19 14:28

Here's how I did it when we couldn't change the existing code from Any CPU to x86 due to a ClickOnce limitation:

Create a 32-bit (x86 must be checked under project properties) 'launcher' application (Windows Application but not form):

    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);
    }

Add the following code to the Main method in the Any CPU project:

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

I hope this helps :-)

查看更多
我欲成王,谁敢阻挡
7楼-- · 2019-01-19 14:29

If you go to Configuration Manager in Visual Studio you can set the platform to x86 or x64.

查看更多
登录 后发表回答