web-dev-qa-db-fra.com

Quel est le but de la définition de la cible de plate-forme pour une application Visual Studio?

Pour tout projet de VS, il est possible de définir la cible de la plate-forme dans les propriétés de construction de ce projet. Vous pouvez définir ceci sur N'importe quel processeur, x86, x64 ou Itanium. Ma question est la suivante: si je règle cette valeur sur x86, cela signifie-t-il que je ne peux pas exécuter ce projet sur une machine x64? Si oui, pourquoi est-ce même utilisé? N’est-il pas préférable de toujours utiliser Any CPU?

27
Sachin Kainth

si je règle cette valeur sur x86, cela signifie-t-il que je ne peux pas exécuter ce projet sur une machine x64?

Non, les applications 32 bits (x86) fonctionnent parfaitement sous Windows 64 bits (x64). Toutes les versions 64 bits de Windows incluent une couche de compatibilité 32 bits appelée Windows sur Windows 64 (WOW64). C’est généralement ce que vous voulez, en fait, car la plupart des applications ne bénéficient pas de la conformité aux règles 64 bits.

Cependant, la compilation pour 64 bits (x64) signifie que signifie que votre application ne fonctionnera pas sur une machine 32 bits (x86). Vous pouvez aller en arrière (64 bits peut fonctionner en 32 bits), mais vous ne pouvez pas aller en avant (32 bits ne peuvent pas exécuter 64 bits).

Compiler pour Any CPU est toujours une option, comme vous le signalez. Cela permettra à l'application de s'exécuter en tant qu'application 32 bits (x86) sur un ordinateur 32 bits et en tant qu'application 64 bits (x64) sur un ordinateur 64 bits. Cela ressemble à une panacée, mais il y a des coûts. Vous devrez notamment tester votre application de manière approfondie dans les environnements deux 32 bits et 64 bits, alors que si vous ne ciblez que les environnements 32 bits (y compris les environnements 32 bits sur un hôte 64 bits) ), il vous suffit de tester une version. Et la charge de travail supplémentaire en vaut rarement la peine - la plupart des applications d'entreprise ne bénéficient pas de l'espace mémoire supplémentaire d'un environnement 64 bits et finissent probablement par vaincre les gains potentiels par la surcharge accrue des pointeurs 64 bits.

Visual Studio lui-même est un bon exemple d'application entièrement en 32 bits. Il n'y a pas de version 64 bits, mais il fonctionne correctement sur un hôte 64 bits. Cet article de blog permet de mieux comprendre pourquoi la décision a été prise de conserver VS 32 bits. Vous pourriez trouver le raisonnement utile pour prendre vous-même la décision.

De même, bien que Microsoft Office soit maintenant disponible dans un package 64 bits, Microsoft recommande toujours que la plupart clients reste avec la version 32 bits. Il y a des problèmes de compatibilité avec la version 64 bits et il n'y a simplement pas beaucoup d'avantages.

38
Cody Gray

Si vous ne spécifiez pas la plate-forme 32 bits, le toolkit de compatibilité des applications Microsoft ne peut pas déterminer si l'application est en 32 bits et ne vous permettra pas de créer un fichier de solution 32 bits pour permettre à une application de s'exécuter sans nécessiter d'informations d'identification d'administrateur lorsque le contrôle de compte d'utilisateur est activé.

1
Chris Daniels