Запуск 32-битного приложения C # на 64-битной машине
Вопрос
Как заставить мое приложение работать как 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-битные процессы