Impossible de charger le fichier ou l'assembly 'xxx' ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect


188

Je viens de récupérer une révision de Subversion vers un nouveau dossier. J'ai ouvert la solution et j'obtiens ceci lors de l'exécution:

Impossible de charger le fichier ou l'assembly 'xxxx' ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.

C'est le même code que j'avais enregistré il y a quelque temps. Pourquoi fait-il cela maintenant? Je vois maintenant aussi un débogage x86 au lieu de simplement déboguer dans le dossier bin de ce projet xxx. Qu'est-ce que Debug x86 et pourquoi n'ai-je pas simplement Debug comme avant dans le dossier bin?


2
Avez-vous essayé de tout reconstruire? Parfois, cela résout d'étranges problèmes de dépendance pour moi ...
mezoid

Réponses:


246

On dirait qu'une partie du projet est en cours de construction pour x86 uniquement tandis que le reste est en cours de construction pour n'importe quel processeur / x64. Cela m'a mordu aussi. Utilisez-vous un x64 (ou euh ... IA64)?

Vérifiez les propriétés du projet et assurez-vous que tout est en cours de construction pour "Any CPU". Si vous êtes dans Visual Studio, vous pouvez tout vérifier en allant dans le menu "x86" ou "Tout processeur" (à côté du menu "Déboguer" / "Libérer") dans la barre d'outils en haut de l'écran et en cliquant sur "Panneau de configuration..."


1
C'est également dans Projet-> Propriétés-> Construire ou Déboguer-> Propriétés-> Construire. Vient de mettre à jour VS2015, version 14.0.25123.00 Update 2. Cette mise à jour vient de sortir le 10/05/16 (hier!). J'ai trouvé la cible de plate-forme définie sur x64, ce qui a causé l'erreur notée. Le réglage sur "Any CPU" l'a corrigé.
Michael D. O'Connor

179

Si vous obtenez cette erreur lors de l'exécution du site dans IIS 7+ sur des serveurs 64 bits, vous pouvez avoir des assemblys 32 bits et votre pool d'applications aura l'option «Activer les applications 32 bits» définie sur False; Définissez ceci sur true et redémarrez le site pour qu'il fonctionne.


5
@ Mayhem50 Même chose ici. Cela dépend de l'endroit où l'erreur se produit. Si c'est via le serveur Web Visual Studio & Cassini, Fraser a raison. Si cela se produit dans IIS7 +, la réponse Nicks est probablement la solution la plus probable.
Carl Heinrich Hancke

C'était la réponse parfaite pour moi (déplacé un site d'IIS6 sur x86 vers IIS 7 sur x64)
DrStalker

Oui, cela l'a fait. J'ai déplacé un site d'IIS6 sur x86 vers IIS 7 sur x64. Merci beaucoup!
Lukas

40

J'ai eu cette erreur en essayant d'utiliser les redoutables Business Objects 4 pour .Net SDK.

Ils livrent cinq fichiers BusinessObjects * .dll, mais tous sont 64 bits.

Pour charger ma page Web, je devais cliquer sur Outils \ Options , puis modifier ce paramètre dans VS2013:

entrez la description de l'image ici


Cette option n'existe pas pour moi. La seule option sur cet écran pour moi sous Visual Studio 2010 est «Utiliser IIS Express pour les nouveaux sites Web et projets basés sur des fichiers»
Drew Chapin

J'ai cette option dans VS 2017 Professional
SKCS Kamal

33

inetmgr puis venez dans Application pool-> Paramètres avancés de votre pool-> aura l'option "Enable 32-Bit Applications" définie sur true; et redémarrez IIS. revérifier.!


Deuxième ceci. J'ai créé un nouveau pool d'applications pour mon site et j'avais oublié de basculer ce paramètre.
AlbatrossCafe

1
Cela a aussi résolu le problème pour moi. La seule autre chose que j'avais besoin de changer était de changer le pipeline en intégré, car cela m'a également donné une erreur après l'application du correctif ci-dessus.
AxleWack

7

L'exception BadImageFormatException sur une application exécutée sur IIS (qui ne s'exécute pas à partir de VS, puisque Visual Studio résout le problème en utilisant la version pour «Any CPU») peut être causée par les éléments suivants:

Le site est un serveur x64 et le paramètre par défaut du pool d'applications pour Activer les applications 32 bits était False. et vous avez des assemblages 32 bits

Au niveau de Visual Studio, le correctif est:

  1. Remplacez le paramètre de projet "CPU cible" par "ANYCPU"

7

Assurez-vous de vérifier votre paramètre pour "Préférer 32 bits". Dans mon cas, Visual Studio 2012 avait ce paramètre vérifié par défaut. Essayer d'utiliser quoi que ce soit à partir d'une DLL externe a échoué jusqu'à ce que je décoché "Préférer 32 bits" .

entrez la description de l'image ici


4

C'est certainement un problème avec certains des projets en cours de construction pour la compatibilité x86 au lieu de n'importe quel processeur. Si je devais deviner, je dirais que certaines des références entre vos projets font probablement référence aux DLL dans certains des dossiers bin \ debug au lieu d'être des références de projet.

Lorsqu'un projet est compilé pour x86 au lieu de 'Any CPU', les dll vont dans le dossier bin \ x86 \ debug au lieu de bin \ debug (qui est probablement là où vos références sont recherchées).

Mais dans tous les cas, vous devriez utiliser des références de projet entre vos projets.


0

si en studio visuel avec IIS express fonctionnant et lorsque la publication a échoué, essayez ceci:entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.