Назад | Перейти на главную страницу

Можно ли заставить приложение C #, скомпилированное с архитектурным тегом «Any», запускаться как 32-битное приложение в 64-битных окнах?

У меня есть приложение .Net, скомпилированное с установленным флагом «Any» для типа архитектуры.

Мне интересно, можно ли заставить приложение запускаться как 32-разрядное приложение в (любой) 64-разрядной версии Windows без перекомпиляции приложения в 32-разрядный исполняемый файл.

Да, если вы явно настроите свойства проекта на использование 32-разрядной версии (я думаю, x86), он всегда будет работать в этом режиме. У нас была эта проблема при использовании поставщика SQLite ADO.Net (он искал только 32-разрядную версию, которая не могла загружаться при запуске в системе x64).

Вы можете использовать corflags, чтобы установить 32-битный (ха-ха) флаг для исполняемого файла. Вот пример. Короче, вы запустите:

corflags /32BIT+ assembly.exe-or.dll

Вы найдете corflags.exe установленным с SDK с Visual Studio. (installed in C:\Program Files\Microsoft SDK\6.0a or 7.0\bin) или вы можете получить его из Microsoft Windows SDK для Windows 7 и .NET Framework 3.5 SP1.