web-dev-qa-db-fra.com

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

Enter image description here

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?

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?

190
Aaron

Microsoft a une entrée de blog ce que AnyCPU signifie vraiment de .NET 4.5 et Visual Studio 11:

Dans .NET 4.5 et Visual Studio 11, le fromage a été déplacé. La valeur par défaut pour la plupart des projets .NET est à nouveau AnyCPU, mais il y a maintenant plus d'une signification pour AnyCPU. Il existe un sous-type supplémentaire de AnyCPU, "Tout processeur préféré 32 bits", qui est le nouveau paramètre par défaut (dans l’ensemble, il existe maintenant cinq options pour le commutateur du compilateur/platform C #: x86, Itanium, x64, anycpu et anycpu32bitpreferred ). Lorsque vous utilisez la version "Préférer 32 bits" de AnyCPU, la sémantique est la suivante:

  • Si le processus s'exécute sur un système Windows 32 bits, il s'exécute en tant que processus 32 bits. IL est compilé en code machine x86.
  • Si le processus s'exécute sur un système Windows 64 bits, il s'exécute en tant que processus 32 bits. IL est compilé en code machine x86.
  • Si le processus s'exécute sur un système Windows ARM, il s'exécute en tant que processus 32 bits. IL est compilé pour ARM.

La différence entre "Tout processeur préféré 32 bits" et "x86" n’est donc que cela: une application .NET compilée en x86 ne pourra pas s’exécuter sur un ARM système Windows, mais une application "Toutes les CPU préférées" s’exécutera avec succès.

208
Lex Li

La raison est la suivante: si vous ne souhaitez pas utiliser plus de mémoire avec les applications 64 bits. Ce qui signifie que si votre application est AnyCPU , vous voulez exécuter 32 bits.

Pour ajouter plus, le paramètre dans Visual Studio cible le CLR particulier:

Visual Studio installe la version 32 bits du CLR sur un ordinateur x86, ainsi que la version 32 bits et la version 64 bits appropriée du CLR sur un ordinateur Windows 64 bits. (Visual Studio étant 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 Applications 64 bits ( MSDN ).

0
Peru