J'ai une solution VS avec de nombreux ensembles et utilitaires tiers. Je dois forcer l'application à s'exécuter en 32 bits lors de l'exécution sur une machine 64 bits. L'application fonctionne très bien sur une machine 32 bits. J'ai forcé le fichier .exe pour être 32 bits requis et lorsqu'il est exécuté sur la machine 64 bits, je reçois « une tentative a été faite pour charger un programme avec un format incorrect ». J'ai cru comprendre que changer l'exe forcerait tous les assemblages à charger en 32 bits. Que se passe-t-il?App avec de nombreux ensembles forçant 32 bits
Répondre
Je sais que c'est une vieille question; peut-être avez-vous déjà trouvé votre réponse.
Je ne suis pas familier avec la définition de ILONLY et 32BITREQUIRED ... en choisissant généralement x86 au lieu de ANYCPU dans la liste déroulante du compilateur avant que la compilation prenne soin de tout ce dont vous avez besoin. Vous pouvez également vérifier que toutes vos applications sont configurées sur x86 dans le gestionnaire de configuration. Il est fort probable que l'un de vos utilitaires tiers a installé une DLL 64 bits sur l'ordinateur 64 bits et que votre application 32 bits forcée tente de charger un 64 Bit DLL. Si une DLL tierce a une version 32 bits et 64 bits, il est probable que l'installateur soit assez intelligent pour savoir lequel installer.
Deux endroits où vous pouvez aller sur la machine 64 bits pour vérifier:
- Si le programme installé sur C: \ Program Files \, il est une DLL 64 bits; sinon il aurait été installé dans C: \ Program Files (x86) \
- Accédez au GAC de la ligne de commande: c: \ Windows \ assembly et regarder sous GAC_32 contre GAC_64. Si vous le trouvez sous GAC_64, vous essayez de charger la DLL 64 bits
HTH! James