Компиляция C# для 32/64 бит или для любого процессора? [дубликат]
Возможные Дубликаты:
цель Visual Studio "любой процессор"
Я заметил, что при компиляции кода C# в VS обычно есть варианты компиляции для 32/64-битных систем, а также для компиляции для любого процессора.
в чем разница между двумя вариантами? Делает ли выбор любого процессора только компиляцию до промежуточного байтового кода, в то время как первый вариант компилируется до машинного кода (это звучит маловероятно для меня)? Или что-то еще?
2 ответа:
на 32-бит машина:
любой ЦП: работает как 32-разрядный процесс, может загрузить любой ЦП и x86 сборки, получим
BadImageFormatException
если он пытается загрузить x64 сборка.x86: то же самое, что любой ЦП.
x64:
BadImageFormatException
всегда.на 64-бит машина:
любой ЦП: работает как 64-битный процесс, может загрузить любой ЦП и x64 сборки, получим
BadImageFormatException
если он пытается загрузить x86 сборка.x86: работает как 32-разрядный процесс, может загрузить любой ЦП и x86 сборки, получим
BadImageFormatException
если он пытается загрузить x64 собрание.x64: то же самое, что любой ЦП.
это JIT-компилятор который генерирует код сборки, совместимый с запрошенным целевым объектом на основе этого флага.
x86-ваше программное обеспечение всегда будет работать в 32-битном режиме, как на 32-битных системах, так и на 64-битных системах.
x64-ваше программное обеспечение всегда будет работать в 64-битном режиме, будет работать на 64-битной системе, но не будет работать на 32-битной системе.
любой процессор-ваше программное обеспечение будет работать в соответствии с вашей ОС. если у вас 32-битная ОС, ваш код будет работать в 32-битном режиме, если у вас 64-битная ОС, ваш код будет работать в 64-битном режиме.