Há considerações necessárias a serem tomadas executando o seu programa de .net em x64 vs x86?

StackOverflow https://stackoverflow.com/questions/145026

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu acredito que o tipo de arquitetura (x86 vs x64) é abstraída para você ao fazer programas .Net, mas existem outras considerações que podem causar problemas?

Foi útil?

Solução

Cuidado com as bibliotecas COM de terceiros ou bibliotecas de terceiros .NET que secretamente fazer chamadas Win32. É aí que tivemos nossos maiores dores de cabeça.

Outras dicas

A partir da MSDN doco , entre outras considerações:

Em muitos casos, os conjuntos será executado o mesmo no CLR de 32 bits ou 64 bits. Algumas das razões para um programa a se comportar de forma diferente quando executados pelo CLR 64-bit incluem:

  • Structs que contêm membros que alterar o tamanho dependendo da plataforma, tal como qualquer tipo de ponteiro.

  • A aritmética de ponteiro que inclui tamanhos constantes.

  • plataforma chamar incorreto ou COM declarações que usam Int32 para lida em vez de IntPtr.

  • Fundição IntPtr para Int32

Além disso, locais de arquivo padrão.

Este artigo tem um monte de boas questões para estar ciente de: http://osnews.com/story/20330/Windows_x64_Watch_List

Pessoalmente, o meu patrão tem um computador Vista 64-bit, e um programa de I em um modo de 32 bits. Fizemos as seguintes questões:

  • Registro para 32 aplicativos bit fica escondido (tipo de) em uma pasta Wow6432Node. Nem todos os aplicativos que você está acostumado a encontrar um caminho para no registro estará em que nó (SQL Server não vai, por exemplo).

  • SysWow64 no C:. \ Windows pode causar problemas de DLLs não ser onde eles são necessários (tivemos este problema w / a componente 3o partido licenciamento)

  • Às vezes, os arquivos que você precisa está em "C: \ Program Files (x86)", em vez de "C: \ Program Files". Suga também.

  • leitura e escrita para 64 valores bits não é thread-safe em uma plataforma de 32 bits. Lendo um valor de 64 bits leva duas operações que poderiam ser interrompidos por uma mudança de contexto. Consulte o artigo MSDN sobre Threading.Interlocked.Read para mais informações.

  • Também concordo inteiramente com torial 's respostas ! : -)

MSDN tinha colocado um pouco de papel em relação às questões de portar aplicações de 32 bits ao longo de ambiente de execução de 64 bits.

http://msdn.microsoft.com/en-us/library /ms973190.aspx

Dois outros blogueiros tinha anteriormente escreveu sobre o desenvolvimento de 64 bits quando estavam trabalhando na equipe CLR

x64 lhe permitirá endereçar mais memória, mas dado o mesmo código, ele irá usar mais memória do que x86.

Na minha experiência, portando uma aplicação Asp.NET era basicamente sem falhas. Executado na máquina de 32 bits e de 64 bits e não há problema acontece, além de ter mais memória disponível. Isso acontece porque muitos dos problemas já mencionados (registro, segmentação e assim por diante) têm sido geridos por Asp.NET e você precisa corrigi-los adequadamente para executar no ambiente Asp.NET.

lado do cliente (janelas formar) o mesmo aconteceu, mas se você já usou algumas APIs "inseguros" para obter pastas especiais ou acesso ao registro, em seguida, algum problema pode acontecer, como já apontado.

Saudações Massimo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top