У меня есть приложение .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.