Partilhar via


Aplicativos de 64 bits

Ao compilar um aplicativo, você pode especificar que ele deve ser executado em um sistema operacional Windows de 64 bits como um aplicativo nativo ou em WOW64 (Windows de 32 bits no Windows de 64 bits). O WOW64 é um ambiente de compatibilidade que permite que um aplicativo de 32 bits seja executado em um sistema de 64 bits. O WOW64 está incluído em todas as versões de 64 bits do sistema operacional Windows.

Executando aplicativos de 32 bits versus 64 bits no Windows

Aplicativos de 32 bits criados no .NET Framework 4 ou versões posteriores são executados em WOW64 em sistemas de 64 bits.

Visual Studio instala a versão de 32 bits do CLR em um computador x86 e a versão de 32 bits e a versão apropriada de 64 bits do CLR em um computador Windows de 64 bits. (Como o Visual Studio é um aplicativo de 32 bits, quando instalado em um sistema de 64 bits, ele é executado em WOW64.)

Nota

Devido ao design da emulação x86 e do subsistema WOW64 para a família de processadores Itanium, os aplicativos são restritos à execução em um processador. Esses fatores reduzem o desempenho e a escalabilidade de aplicativos .NET Framework de 32 bits executados em sistemas baseados em Itanium. Recomendamos que você use o .NET Framework 4, que inclui suporte nativo de 64 bits para sistemas baseados em Itanium, para aumentar o desempenho e a escalabilidade.

Por padrão, quando você executa um aplicativo gerenciado de 64 bits em um sistema operacional Windows de 64 bits, pode criar um objeto de no máximo 2 gigabytes (GB). No entanto, no .NET Framework 4.5, você pode aumentar esse limite. Para obter mais informações, consulte o <elemento gcAllowVeryLargeObjects>.

Muitos assemblies são executados de forma idêntica no CLR de 32 bits e no CLR de 64 bits. No entanto, alguns programas podem se comportar de forma diferente, dependendo do CLR, se contiverem um ou mais dos seguintes itens:

  • Estruturas que contêm membros que mudam de tamanho dependendo da plataforma (por exemplo, qualquer tipo de ponteiro).
  • Aritmética de ponteiro que inclui tamanhos constantes.
  • Invocação de plataforma incorreta ou declarações COM que usam Int32 para identificadores em vez de IntPtr.
  • Código que projeta IntPtr para Int32.

Para obter mais informações sobre como portar um aplicativo de 32 bits para ser executado no CLR de 64 bits, consulte Migrando código gerenciado de 32 bits para 64 bits.

Informações gerais sobre programação de 64 bits

Para obter informações gerais sobre programação de 64 bits, consulte os seguintes documentos:

Suporte de compilador para criar aplicativos de 64 bits

Por padrão, quando você usa o .NET Framework para criar um aplicativo em um computador de 32 bits ou 64 bits, o aplicativo será executado em um computador de 64 bits como um aplicativo nativo (ou seja, não em WOW64). A tabela a seguir lista documentos que explicam como usar compiladores do Visual Studio para criar aplicativos de 64 bits que serão executados como nativos, em WOW64 ou ambos.

Compilador Opção do compilador
Visual Basic -plataforma (Visual Basic)
Visual C# -platform (Opções do compilador C#)
Visual C++ Você pode criar aplicativos de linguagem intermediária comum (CIL) agnósticos à plataforma usando /clr:safe. Para obter mais informações, consulte -clr (Common Language Runtime Compilation).

Visual C++ inclui um compilador separado para cada sistema operacional de 64 bits. Para obter mais informações sobre como usar o Visual C++ para criar aplicativos nativos que são executados em um sistema operacional Windows de 64 bits, consulte Programação de 64 bits.

Determinando o status de um arquivo .exe ou .dll

Para determinar se um arquivo .exe ou .dll deve ser executado apenas em uma plataforma específica ou em WOW64, use CorFlags.exe (CorFlags Conversion Tool) sem opções. Você também pode usar CorFlags.exe para alterar o status da plataforma de um arquivo .exe ou .dll arquivo. O cabeçalho CLR de um assembly do Visual Studio tem o número de versão do tempo de execução principal definido como 2 e o número da versão do tempo de execução secundário definido como 5. Os aplicativos que têm a versão secundária de tempo de execução definida como 0 são tratados como aplicativos herdados e são sempre executados em WOW64.

Para consultar programaticamente um .exe ou .dll para ver se ele deve ser executado apenas em uma plataforma específica ou em WOW64, use o Module.GetPEKind método.