Pergunta
Como posso fazer minha compilação otimizada para o Windows de 64 bits?
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;