Je pense que la plupart des choses importantes ont été dites, mais je pensais juste ajouter une chose : si vous compilez en tant que Toute unité centrale et exécuté sur une plate-forme x64, vous ne pourrez pas charger les fichiers DLL 32 bits, car votre application n'a pas été lancée en format WoW64 mais ces fichiers DLL doivent y être exécutés.
Si vous compilez en x86, le système x64 exécutera votre application en WoW64, et vous pourrez charger des fichiers DLL 32 bits.
Je pense donc que vous devriez choisir "Any CPU" si vos dépendances peuvent fonctionner dans l'un ou l'autre environnement, mais choisir x86 si vous avez des dépendances 32 bits. Cet article de Microsoft explique un peu cela :
/CLRIMAGETYPE (Spécifiez le type d'image CLR)
Incidemment, cette autre documentation Microsoft convient que l'architecture x86 est généralement un choix plus portable :
Choisir x86 est généralement la configuration la plus sûre pour un paquetage d'applications car il fonctionnera sur presque tous les appareils. Sur certains périphériques, un paquet d'applications avec la configuration x86 ne fonctionnera pas, comme la Xbox ou certains appareils appareils IoT Core. Cependant, pour un PC, un paquet x86 est le choix le plus sûr et choix le plus sûr et a la plus grande portée pour le déploiement de périphériques. Une partie importante Une partie importante des appareils Windows 10 continue d'exécuter la version x86 de Windows.
4 votes
Une dernière chose à prendre en compte pour décider de la cible de la plateforme à utiliser : si la cible de la Projet de démarrage est
Any CPU
et que vous travaillez sur un système d'exploitation 64 bits, vous perdez la capacité à Modifier et poursuivre pendant le débogage. (Vous déboguez effectivement un processus 64 bits). Vous pouvez faire en sorte que le Projet de démarrage ciblex86
pour contourner ce problème lors du débogage. (Les assemblages référencés à partir du projet de démarrage peuvent continuer à cibler les éléments suivantsAny CPU
.10 votes
@CristiDiaconescu Avec VS2013, il est maintenant possible d'éditer et de continuer.
2 votes
Je pense qu'il faudrait préciser ici si le projet est une application ou une bibliothèque de classes, car la définition du bitness cible pour cette dernière peut avoir un impact sur sa disponibilité pour les applications consommatrices en fonction de la plate-forme. J'ai rencontré ce problème avec une
x86
consommée par une bibliothèqueAnyCPU
où je devais définirPrefer 32-bit
pour éviter une erreur de chargement.