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-разрядной версии среды CLR на компьютере с 64-разрядной ОС Windows см. в разделе Центр разработчиков .NET Framework на веб-сайте MSDN;
в документации SDK для Windows см. раздел Руководство по программированию для 64-разрядных версий Windows;
дополнительные сведения о том, как загрузить 64-разрядную версию среды CLR, см. в разделе загрузок в центре разработчиков .NET Framework на веб-сайте MSDN;
сведения о поддержке создания 64-разрядных приложений в Visual Studio см. в разделе Поддержка 64-разрядной среды разработки Visual Studio.
Поддержка компилятором создания 64-разрядных приложений
Приложение, построенное с помощью .NET Framework 2.0 на 32- или 64-разрядном компьютере, по умолчанию на 64-разрядном компьютере выполняется как собственное приложение (не в эмуляторе WOW64). В следующей таблице перечислены обучающие материалы по использованию компиляторов Visual Studio для создания 64-разрядных приложений, которые будут выполняться как собственные, в эмуляторе WOW64 или обоими способами.
Компилятор |
Параметр компилятора |
---|---|
Visual Basic |
|
Visual C# |
|
Visual C++ |
Существует возможность создавать платформенно-независимые приложения MSIL с помощью /clr:safe. Дополнительные сведения см. в разделе /clr (компиляция CLR). Visual C++ содержит отдельные компиляторы для каждой 64-разрядной операционной системы. Дополнительные сведения об использовании Visual C++ для создания приложений, выполняемых как собственные в 64-разрядной операционной системе Windows см. в разделе Программирование для 64-разрядных систем на Visual C++. |
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 |
Обновлены ссылки и номера версий. |
Улучшение информации. |