Запуск 32-битного приложения C# на 64-битной машине

Как заставить мое приложение работать как 32-разрядное на 64-разрядном компьютере?

Код написан на C#.

6 ответов

Решение

Щелкните правой кнопкой мыши свой проект и выберите свойства.

В свойствах выберите вкладку сборки. Под целевой платформой выберите x86.

Нажмите Ctrl+Shift+S, чтобы сохранить все файлы, щелкните правой кнопкой мыши решение и выберите "Очистить", чтобы избавиться от старых двоичных файлов. Любые сборки после этого должны быть 32-битными

Форма командной строки:

corflags application.exe /32BIT+ 

Вот как я это сделал, когда мы не смогли изменить существующий код с 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);
    }

Добавьте следующий код в метод Main в проекте Any CPU:

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

Надеюсь, это поможет:-)

Если вы заходите в Configuration Manager в Visual Studio, вы можете установить платформу на x86 или x64.

Предполагая, что это Winforms, консольное приложение или служба Windows, вы должны создать exe для x86 вместо Any CPU. Это в диспетчере конфигурации.

Visual Studio 11 и.NET Framwork 4.5 или выше имеют возможность для Any CPU 32-bit preferred и это было по умолчанию с тех пор

Полученный код будет работать на любых платформах, но на 64-битных платформах они выполняются как 32-битные процессы

Другие вопросы по тегам