223 votes

Quel est le but du paramètre "Préférer 32 bits" dans Visual Studio 2012 et comment fonctionne-t-il réellement?

entrez la description de l'image ici

Je ne vois pas comment le compilateur saura automatiquement compiler pour le 64 bits quand il le faudra. Comment sait-il quand il peut cibler en toute confiance 32 bits?

EDIT: J'aurais dû dire que je suis surtout curieux de savoir comment le compilateur sait quelle architecture cibler lors de la compilation. Est-ce qu'il analyse le code et prend une décision basée sur ce qu'il trouve?

234voto

Lex Li Points 18214

Il est donc étrange que personne n'liens vers le site web MSDN à l'entrée de blog Ce AnyCPU Vraiment Signifie Que De .NET 4.5 et Visual Studio 11:

Dans .NET 4.5 et Visual Studio 11 le fromage a été déplacé. L' par défaut pour la plupart .Projets NET est de nouveau AnyCPU, mais il n'y a plus de un sens à AnyCPU maintenant. Il y a une autre sous-type de AnyCPU, "Tout PROCESSEUR 32 bits préféré", qui est la nouvelle valeur par défaut (en général, il n'y sont maintenant cinq options pour le /la plate-forme C# commutateur de compilateur: x86, Itanium, x64, anycpu, et anycpu32bitpreferred). Lors de l'utilisation de cette la saveur de AnyCPU, la sémantique est la suivante:

  • Si le processus s'exécute sur un 32-bit de Windows, il fonctionne comme un processus 32 bits. IL est compilé pour x86 code machine.
  • Si le processus s'exécute sur un système Windows 64 bits, il s'exécute comme un processus 32 bits. IL est compilé pour x86 code machine.
  • Si le processus s'exécute sur un BRAS de système de Windows, il fonctionne comme un processus 32 bits. IL est compilé pour ARM code machine.

La différence, donc, entre "Tout PROCESSEUR 32 bits préféré" et "x86" est seulement ceci: un .NET application compilée pour x86 ne peut pas s'exécuter sur un BRAS de système de Windows, mais un "Tout PROCESSEUR 32 bits préféré" application exécuter avec succès.

-1voto

Peru Points 611

La raison est la suivante: dans le cas où vous ne souhaitez pas utiliser plus de mémoire de 64 bits applicatios. Ce qui signifie, si votre demande est AnyCPU, vous souhaitez exécuter en tant qu'32 bits.

Pour ajouter plus, le réglage Visual Studio cibles particulières CLR:

Visual Studio installe la version 32 bits de la CLR sur un ordinateur x86, et à la fois la version 32 bits et la version 64 bits de la CLR sur une version 64 bits de Windows de l'ordinateur. (Parce que Visual Studio est une application 32 bits, lorsqu'il est installé sur un système 64 bits, il s'exécute sous WOW64.)

Veuillez vous référer à l'article 64-bit Applications (MSDN).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X