Поделиться через


64-разрядные приложения

При компиляции можно указать, будет ли приложение запускаться в 64-разрядной операционной системе Windows в качестве собственного приложения или в эмуляторе WOW64. Эмулятор WOW64 является совместимой средой, которая позволяет выполнять 32-разрядное приложение в 64-разрядной операционной системе. Эмулятор WOW64 включен в систему.

Примечания

Все приложения, построенные на платформе .NET Framework версий 1.0 и 1.1, обрабатываются как 32-разрядные приложения и всегда запускаются в эмуляторе WOW64 в 32-разрядной среде CLR в 64-разрядной операционной системе. Кроме того, 32-разрядные приложения, построенные на платформе .NET Framework 4, будут выполняться в эмуляторе WOW64 в 64-разрядных системах.

Visual Studio устанавливает на компьютер с архитектурой x86 32-разрядную версию среды CLR, а на компьютер с 64-разрядной ОС Windows — 32-разрядную и соответствующую 64-разрядную версию среды CLR. (Поскольку Visual Studio 2010 является 32-разрядным приложением, то после установки в 64-разрядной операционной системе выполняется в эмуляторе WOW64.)

ПримечаниеПримечание

Из-за особенностей разработки эмуляции x86 и подсистемы WOW64 для процессоров семейства Itanium выполнение приложений ограничено одним процессором.Эти факторы снижают производительность и масштабируемость 32-разрядных приложений .NET Framework, выполняемых в системах на базе Itanium.Версию 1.1 платформы .NET Framework рекомендуется использовать для интерактивных клиентских приложений, но не для приложений, требующих высокой производительности и масштабируемости, таких как высокопроизводительные приложения ASP.NET.По возможности рекомендуется использовать платформу .NET Framework 4, которая имеет собственную 64-разрядную поддержку для систем на базе Itanium, увеличивающую производительность и масштабируемость.

Размер объекта, создаваемого при выполнении 64-разрядного управляемого приложения в 64-разрядной операционной системе Windows, ограничен 2 ГБ.

Во многих случаях выполнение сборок в 32-разрядной и в 64-разрядной среде CLR пройдет одинаково. В зависимости от версии среды CLR работа некоторых программ может отличаться по одной из следующих причин:

  • структуры, содержащие члены, которые изменяют размер в зависимости от платформы, такие как любой тип указателя;

  • арифметические операции над указателями, содержащие размеры констант;

  • неправильный платформенный вызов или COM-объявление, которое использует Int32 для дескрипторов вместо IntPtr;

  • приведение IntPtr к Int32.

Дополнительные сведения о переносе 32-разрядного приложения в 64-разрядную среду CLR см. в разделе Миграция 32-разрядного управляемого кода в 64-разрядный на веб-сайте MSDN.

Общие сведения о 64-разрядном программировании

Общие сведения о 64-разрядном программировании см. в следующих материалах:

Поддержка компилятором создания 64-разрядных приложений

Приложение, построенное с помощью .NET Framework 2.0 на 32- или 64-разрядном компьютере, по умолчанию на 64-разрядном компьютере выполняется как собственное приложение (не в эмуляторе WOW64). В следующей таблице перечислены обучающие материалы по использованию компиляторов Visual Studio для создания 64-разрядных приложений, которые будут выполняться как собственные, в эмуляторе WOW64 или обоими способами.

Компилятор

Параметр компилятора

Visual Basic

/platform (Visual Basic)

Visual C#

/platform (параметры компилятора C#)

Visual C++

Существует возможность создавать платформенно-независимые приложения MSIL с помощью /clr:safe. Дополнительные сведения см. в разделе /clr (компиляция CLR).

Visual C++ содержит отдельные компиляторы для каждой 64-разрядной операционной системы. Дополнительные сведения об использовании Visual C++ для создания приложений, выполняемых как собственные в 64-разрядной операционной системе Windows см. в разделе Программирование для 64-разрядных систем на Visual C++.

JScript

/platform (Visual Studio — JScript)

Определение состояния EXE- или DLL-файлов

Воспользуйтесь программой командной строки corflags.exe, чтобы определить, будет ли EXE- или DLL-файл выполняться только на определенной платформе или в эмуляторе WOW64. Кроме того, программа corflags.exe используется для изменения состояния платформы EXE- или DLL-файла. Дополнительные сведения см. в разделе CorFlags.exe (средство преобразования CorFlags). В заголовке среды CLR (или заголовке среды выполнения COM+) сборки Visual Studio основной номер версии среды выполнения имеет значение 2, а дополнительный номер версии среды выполнения — значение 5 (в сборках Visual Studio .NET 2003 — значение 0). Приложения, у которых дополнительный номер версии среды выполнения имеет значение 0, обрабатываются как приложения прежних версий и всегда запускаются в эмуляторе WOW64.

Метод GetPEKind используется для программного запроса, чтобы определить, будет ли EXE- или DLL-файл выполняться на определенной платформе или в эмуляторе WOW64.

См. также

Другие ресурсы

Windows-Based Applications and Components

Журнал изменений

Дата

Журнал

Причина

Август 2010

Обновлены ссылки и номера версий.

Улучшение информации.