Для любого проекта VS можно установить целевую платформу в свойствах сборки этого проекта. Вы можете установить это в любой процессор, x86, x64 или Itanium. Мой вопрос: если я установил это значение в x86, значит ли это, что я не могу запустить этот проект на машине x64? Если да, то почему это даже используется? Не лучше ли всегда использовать любой процессор?
Какова цель установки целевой платформы для приложения Visual Studio?
Ответ 1
если я устанавливаю это значение на x86, значит ли это, что я не могу запустить этот проект на машине x64?
Нет, 32-разрядные приложения (x86) отлично работают на 64-разрядной Windows (x64). Все 64-разрядные версии Windows включают 32-разрядный уровень совместимости под Windows под Windows 64 (WOW64). Это, как правило, то, что вы хотите, по сути, поскольку большинство приложений не могут быть выполнены для 64-разрядных.
Однако компиляция для 64-битного (x64) означает, что ваше приложение не будет запускаться на 32-разрядной (x86) машине. Вы можете вернуться назад (64-разрядный может работать 32-разрядный), но вы не можете идти вперед (32-разрядный не может работать 64-разрядный).
Компиляция для Any CPU
всегда является опцией, как вы указываете. Это позволит приложению работать как 32-разрядное приложение (x86) на 32-битной машине и как 64-разрядное приложение (x64) на 64-разрядной машине. Это звучит как панацея, но есть затраты. Прежде всего, вам нужно будет тщательно протестировать ваше приложение в 32-разрядной и 64-разрядной средах, тогда как если вы ориентируетесь только на 32-разрядные среды (включая 32-разрядные среды на 64-разрядном хосте), вам нужно будет только протестировать одну сборку. И дополнительная рабочая нагрузка редко стоит того, что большинство бизнес-приложений не извлекают выгоду из дополнительного пространства памяти в 64-битной среде и, вероятно, в конечном итоге победят любые потенциальные выгоды за счет увеличения накладных расходов 64-разрядных указателей.
Visual Studio сама по себе является хорошим примером приложения, которое полностью 32-битное. 64-битной версии нет, но она отлично работает на 64-битном хосте. Этот пост в блоге помогает пролить свет на то, почему было принято решение сохранить VS 32-бит. Вы можете найти обоснование, полезное для принятия решения самостоятельно.
Аналогично, хотя Microsoft Office теперь доступен в 64-разрядном пакете, Microsoft по-прежнему рекомендует большинству клиентов придерживаться 32-разрядной версии. Есть проблемы совместимости с 64-битной версией, и там не так много пользы.
Ответ 2
Если вы не укажете 32-битную платформу, инструментарий совместимости приложений Microsoft не сможет определить, что приложение 32 бит и не позволит вам создать 32-битный файл решения, позволяющий запускать приложение, не требуя учетных данных администратора, когда управление учетной записью пользователя включен