В .NET 4.5 и Visual Studio 11 сыр был перемещен. По умолчанию для большинства проектов .NET снова используется AnyCPU, но теперь для AnyCPU имеется более одного значения. Существует дополнительный подтип AnyCPU, «Любой 32-битный процессор», который является новым по умолчанию (в общем, теперь есть пять опций для переключателя компилятора / платформы C #: x86, Itanium, x64, anycpu и anycpu32bitpreferred ). При использовании варианта «Предпочитать 32-разрядный» AnyCPU семантика выглядит следующим образом:
- Если процесс выполняется в 32-разрядной системе Windows, он выполняется как 32-разрядный процесс. IL скомпилирован в машинный код x86.
- Если процесс выполняется в 64-разрядной системе Windows, он выполняется как 32-разрядный процесс. IL скомпилирован в машинный код x86.
- Если процесс выполняется в системе ARM Windows, он выполняется как 32-разрядный процесс. IL скомпилирован в машинный код ARM.
Таким образом, разница между «Любой 32-битный процессор предпочтительнее» и «x86» заключается только в следующем: приложение .NET, скомпилированное для x86, не будет работать в системе ARM Windows, но приложение «Любой 32-битный процессор». будет работать успешно