Pergunta

Como posso fazer minha compilação otimizada para o Windows de 64 bits?

Foi útil?

Solução

Um projeto gerenciado é automaticamente construído de acordo com a arquitetura selecionada => padrão projeto C # criado em AMD64 será AMD64, X86 no X86. A única nativa é sempre de 32 bits por padrão.

Para definir explicitamente uma plataforma:

1 abra o Gerenciador de soluções, selecione solução, clique-direito> Configuration Manager.

2 ir para 'Platform Solution activa', clique em Novo.

3 em diálogo 'Plataforma New Solution' que aparece, selecione a nova plataforma dizer Itanium. Definir 'Copiar configurações' para 'Qualquer CPU', que foi a configuração padrão da 'Plataforma Active Solution'.

4 Clique em OK.

Esta é a partir WebLog

Outras dicas

Você também pode querer fazer uma verificação em tempo de execução, só para ter certeza:

using System;
using System.Runtime.InteropServices;

class SystemChecker
{
    static bool Is64Bit
    {
        get { return Marshal.SizeOf(typeof(IntPtr)) == 8; }
    }
}

Como Patrick Desjardins disse, com um pouco disso.

Tenha cuidado se você tem DLL de terceiros que utiliza Interop e é compilado com 32 bit. Nesse caso, você vai especificamente tem que definir todas as suas montagens que usa-lo para usar x86 ou todos os tipos de coisas estranhas vão acontecer.

Você pode compilar para 64 bits através do /platform-bandeira. Note que visual studio Expresso não tem nenhuma definição 64bit compilação simples.

aqui para obter mais informação e aqui . Tirada da segunda fonte é a seguinte informação:

Em um sistema operacional Windows de 64 bits:

  • Assembléias compilados com /platform:x86 será executado no CLR de 32 bits em execução no WOW64.
  • executáveis ??compilados com o /platform:anycpu será executado no CLR de 64 bits.
  • DLLs compilados com o /platform:anycpu irá executar no mesmo CLR como o processo em que está a ser carregado.

Runtime Check:

Você pode verificar o ambiente bit de execução em tempo de execução através de um dos seguintes opções

bool is64BitProcess = IntPtr.Size == 8;
int bitProcess = IntPtr.Size*8;
//C# 4 provides System.Environment.Is64BitProcess
//TimothyP's solution:
bool is64BitProcess = Marshal.SizeOf(typeof(IntPtr)) == 8;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top