Подтвердить что ты не робот

Есть ли разница между 32-битным .NET-приложением и 64-разрядным .NET-приложением?

Я понимаю, что приложение .NET не зависит от платформы, поэтому чистый .NET-код должен запускаться либо на x86, либо на 64-разрядной машине. Если ваш код .NET не вызывает собственный код, он зависит от платформы. Это правда?

4b9b3361

Ответ 1

.NET приложения могут быть скомпилированы как таргетинг на x86, x64 или "Both". Как правило, вы нацеливаете только одну платформу, если будете полагаться на элемент управления COM, который недоступен для другой платформы и т.д.

Ответ 2

Ваш код может быть скомпилирован, чтобы быть полностью независимым от платформы, или вы можете настроить таргетинг на определенную платформу. Стандартная рекомендация заключается в том, чтобы оставить библиотеки нейтральными по архитектуре (то есть "Любой процессор" ) и целевой x86 для исполняемых файлов. Причины, по которым Visual Studio 2010 использует этот подход по умолчанию, описаны здесь: Исполняемые файлы AnyCPU обычно больше проблем, чем их стоит:

  • Работа в двух разных режимах (x64 и x86) увеличивает сложность продукта и стоимость тестирования.
  • 32-битная скорость (в любом случае) быстрее.
  • Некоторые функции недоступны в x64.
  • Если было бы полезно использовать более 4-х адресное пространство GB, то правильная вещь - нацелить только x64 и избежать затрат на поддержку двух платформ.

Конечно, если вы просто нацеливаете x86, то ваш код все равно будет работать на x64 через WoW64.

Ответ 3

Да, вы говорите правду. Pure .NET код независим от платформы ( "Любой процессор" в Visual Studio), если только внешние библиотеки (COM и P/Invokes, насколько я знаю). Тогда ваша платформа должна соответствовать той, которая используется для создания внешних библиотек.