Запуск 32-битного приложения C# на 64-битной машине
Как заставить мое приложение работать как 32-разрядное на 64-разрядном компьютере?
Код написан на C#.
6 ответов
Щелкните правой кнопкой мыши свой проект и выберите свойства.
В свойствах выберите вкладку сборки. Под целевой платформой выберите x86.
Нажмите Ctrl+Shift+S, чтобы сохранить все файлы, щелкните правой кнопкой мыши решение и выберите "Очистить", чтобы избавиться от старых двоичных файлов. Любые сборки после этого должны быть 32-битными
Вот как я это сделал, когда мы не смогли изменить существующий код с 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-битные процессы