Компиляция C# для 32/64 бит или для любого процессора? [дубликат]


Возможные Дубликаты:
цель Visual Studio "любой процессор"

Я заметил, что при компиляции кода C# в VS обычно есть варианты компиляции для 32/64-битных систем, а также для компиляции для любого процессора.

в чем разница между двумя вариантами? Делает ли выбор любого процессора только компиляцию до промежуточного байтового кода, в то время как первый вариант компилируется до машинного кода (это звучит маловероятно для меня)? Или что-то еще?

2 57

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-битном режиме.