Ответ 1
В Microsoft есть запись в блоге, что на самом деле означает AnyCPU, начиная с.NET 4.5 и Visual Studio 11:
В.NET 4.5 и Visual Studio 11 сыр был перемещен. По умолчанию для большинства проектов.NET снова используется AnyCPU, но для AnyCPU теперь имеется более одного значения. Существует дополнительный подтип AnyCPU, "Любой 32-битный процессор", который является новым по умолчанию (в целом, теперь есть пять опций для переключателя компилятора/платформа С#: 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-битный процессор". будет работать успешно