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

StackOverflow https://stackoverflow.com/questions/437271

  •  22-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

corflags application.exe /32BIT+ 

Вот как я это сделал, когда мы не смогли изменить существующий код с Любой процессор на 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 или более поздней версии есть опция для Предпочитается любой 32-разрядный процессор и это было по умолчанию с тех пор

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top