Что означает флаг «Предпочитать 32-разрядный» для Visual Studio (C #, VB)? - PullRequest
27 голосов
/ 22 сентября 2011

Только что установлен предварительный просмотр для разработчика Visual Studio 11. Я вижу новую опцию в свойствах проекта, которая называется «Предпочитать 32-битный» при компиляции управляемого (C #, VB) приложения с указанной целью AnyCPU. Это не вариант для библиотек классов, просто приложения высшего уровня.

Что означает этот флаг?

Ответы [ 3 ]

13 голосов
/ 22 сентября 2011

Вероятно, это означает, что приложение является AnyCpu, но когда доступно 32 бита, оно должно работать как таковое. Это имеет смысл - 64-битные приложения используют больше памяти, а иногда вам просто не нужно пространство памяти;)

3 голосов
/ 13 декабря 2014

EDIT: Приложение, скомпилированное с «Любой 32-битный процессор», совместимо с x86, x64 и ARM, а x86 совместимо только с x86, x64 и не ARM. Подробнее см. это .

1 голос
/ 05 апреля 2016

Есть хорошая статья на Что на самом деле означает AnyCPU в .NET 4.5 и Visual Studio 11 .

Короткий ответ на ваш вопрос: «При использовании этого варианта AnyCPU,семантика следующая:

Если процесс выполняется в 32-разрядной системе Windows, он выполняется как 32-разрядный процесс. IL компилируется в машинный код x86. Если процесс выполняется в 64-разрядном режимеСистема Windows, она работает как 32-разрядный процесс. IL компилируется в машинный код x86. Если процесс выполняется в системе ARM Windows, он запускается как 32-разрядный процесс. IL компилируется в машинный код ARM.тогда между «Любой 32-битный процессор предпочтительнее» и «x86» только так: приложение .NET, скомпилированное для x86, не сможет работать в системе ARM Windows, но приложение «Любой 32-битный процессор» будет успешно запущено. "

...