web-dev-qa-db-fra.com

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

Je viens d'extraire une révision de Subversion vers un nouveau dossier. A ouvert la solution et je l'obtiens à l'exécution:

Impossible de charger le fichier ou l'assembly 'xxxx' ou l'une de ses dépendances. Vous avez tenté de charger un programme avec un format incorrect.

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

181
PositiveGuy

On dirait qu’une partie du projet est construite pour x86 uniquement, tandis que le reste est construit pour n’importe quel processeur/x64. Cela m'a mordu aussi. Avez-vous un x64 (ou euh ... IA64)?

Vérifiez les propriétés du projet et assurez-vous que tout est construit pour "Tout processeur". Si vous êtes dans Visual Studio, vous pouvez tout vérifier en accédant au menu "x86" ou "Any CPU" (à côté du menu "Debug"/"Release") dans la barre d’outils en haut de l’écran et en cliquant sur "Panneau de configuration..."

240
Robert Fraser

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 le faire fonctionner.

174
Nick Whiu

J'ai eu cette erreur en essayant d'utiliser le terrible SDK Business Objects 4 for .Net.

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

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

 enter image description here

35
Mike Gledhill

inetmgr, puis accédez au pool d’applications-> Paramètres avancés de votre pool-> aura l'option "Activer les applications 32 bits" définie sur true; et redémarrez IIS . à nouveau.!

31
Muhammad Mubashir

Assurez-vous de vérifier le paramètre "Préférer 32 bits". Dans mon cas, Visual Studio 2012 avait ce paramètre coché par défaut. Essayer d’utiliser quoi que ce soit d’un DLL externe a échoué jusqu’à ce que je décoche la case "Préfère 32 bits"

enter image description here

6
danglund

L'exception BadImageFormatException sur une application exécutée sur IIS (mais pas à partir de VS, car Visual Studio corrige le problème en utilisant la construction de "Tout processeur") peut être provoqué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 le suivant:

  1. Changez le paramètre du projet "CPU cible" en "ANYCPU"
6
Rami Sarieddine

C'est certainement un problème avec certains des projets construits pour la compatibilité x86 au lieu de tout 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 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 se placent dans le dossier bin\x86\debug au lieu de bin\debug (ce qui correspond probablement à vos références).

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

4
Jaco Pretorius

si, alors que dans Visual Studio avec IIS Express fonctionnait et que sa publication avait échoué, essayez ceci:  enter image description here

0
asdf_enel_hak