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

Обновлен: Ноябрь 2007

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

Примечания

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

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

ms241064.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

  • Приведение типа IntPtr к типу Int32.

Дополнительные сведения о переносе 32-разрядных приложений для выполнения в 64-разрядной среде CLR см. в разделе https://msdn.microsoft.com/library/?url=/library/en-us/dndotnet/html/64migrate.asp.

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

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

Сведения о поддержке создания 64-разрядных приложений в среде разработки Visual Studio см. в разделе Поддержка 64-разрядной среды разработки Visual Studio.

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

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

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

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

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

См. также

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

Windows-приложения, компоненты и службы