Quel est le but du paramètre «Prefer 32-bit» 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 va automatiquement comstackr pour le 64-bit quand il le faut. Comment sait-il quand il peut en toute confiance cibler 32 bits?

Je suis principalement curieux de savoir comment le compilateur sait quelle architecture cibler lors de la compilation. Analyse-t-il le code et prend-il une décision en fonction de ce qu’il trouve?

Il est si étrange que personne ne se connecte à l’entrée de blog que AnyCPU signifie vraiment à partir de .NET 4.5 et de 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 AnyCPU a maintenant plus d’un sens. Il y a un sous-type supplémentaire d’AnyCPU, «Tout type de processeur préféré 32 bits», qui est le nouveau défaut (en général, il y a maintenant cinq options pour le commutateur de compilation / platform C #: x86, Itanium, x64, anycpu et anycpu32bitpreferred) ). Lorsque vous utilisez la variante “Préférer 32 bits” d’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é en code machine ARM.

La différence, alors, entre «N’importe quel processeur 32 bits préféré» et «x86» est uniquement la suivante: une application .NET compilée en x86 ne pourra pas s’exécuter sur un système Windows ARM, mais une application «Toute unité centrale préférée 32 bits» se déroulera avec succès.

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

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

Visual Studio installe la version 32 bits du CLR sur un ordinateur x86 et 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 installée sur un système 64 bits, elle s’exécute sous WOW64.)

Reportez-vous à l’article Applications 64 bits ( MSDN ).