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

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

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

Ответы [ 6 ]

22 голосов
/ 13 января 2009

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

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

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

10 голосов
/ 15 января 2010

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

corflags application.exe /32BIT+ 
7 голосов
/ 15 января 2010

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

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

5 голосов
/ 13 января 2009

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

1 голос
/ 13 января 2009

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

0 голосов
/ 10 мая 2014

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

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

...