Когда необходимо использовать целевую платформу x86 или x64?

Я изучил информацию о создании приложений с различными вариантами целевых платформ в Visual Studio, но до сих пор не могу понять следующие вещи:

когда нам нужно установить цель x86 или x64?
Какие преимущества дает нам установка конкретной целевой платформы (x86 или x64) по сравнению с настройкой "любого процессора"?
не проще ли всегда установить "любой процессор"?

1 ответ

На данный момент в платформе есть три варианта. х86, х64, любой процессор. Чтобы усложнить ситуацию еще хуже, есть флажок "Предпочитать 32-битный".

Когда вы разрабатываете приложения, вы должны убедиться, что Any CPU включен и Prefer 32bit отключен для максимальной совместимости.

Однако иногда вы будете использовать нативные вызовы для платформы от определенных API (например, вы вызываете 32-битную нативную dll). После включения Any CPU ваше приложение будет работать как 64-битный процесс в 64-битной операционной системе. Это приведет к исключениям во время выполнения. Вы должны быть нацелены на платформу x86. То же самое касается 64-битных нативных вызовов, вы должны ориентироваться только на x64.

Давайте посмотрим, почему Prefer 32bit есть. В Windows появился новый целевой тип, называемый ARM (Windows 8 ARM 32bit на дату выпуска Prefer 32bit). Когда эта опция включена и выбран любой ЦП. Приложение.NET, скомпилированное для x86, не будет работать в системе ARM Windows, но приложение "Любой 32-битный процессор" будет успешно выполнено.

В дальнейшем отключите Prefer 32bit, поскольку никто не использовал Windows 8 ARM. Windows 10 ARM решили эту проблему.

Другие вопросы по тегам