Impossible de charger le fichier ou l'assemblage ... une tentative a été faite pour charger un programme avec un format incorrect (système.BadImageFormatException)

J'ai deux projets, ProjectA et ProjectB. ProjectB est une application console, qui dépend de ProjectA. Hier, tout fonctionnait bien, mais soudainement aujourd'hui quand je cours ProjectB je reçois ceci:

BadImageFormatException n'a pas été gérée :
Impossible de charger le fichier ou l'assembly 'ProjectA, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' ou l'une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.

Les deux sont juste projets réguliers, sans dépendances sur aucun autre non-.Net projets. Les deux sont entièrement. net - il n'y a pas de code natif, et pas de P / Invoke. J'ai d'autres projets qui dépendent de ProjectA et fonctionnent toujours très bien.

Ce que j'ai essayé:

  • assurez-vous que les deux projets sont définis sur "N'importe quel CPU", avec la case à cocher build cochée. Elles le sont.
  • assurez-vous que les deux projets sont pour le même Framework cible (. Net 4.0 Client Profile).
  • Sous Projetb --> Références --> ProjectA --> Propriétés, assurez - "Copie Locale" est définie sur "Vrai" _ (j'ai vérifié que ProjectA.la dll est copiée correctement)
  • nettoyer / reconstruire la solution. J'ai même essayé de supprimer manuellement les dossiers / bin et / obj dans les deux projets.
  • Redémarrez Visual Studio. Redémarrez mon ordinateur.
  • découvrez une copie entièrement nouvelle du référentiel.

Mais je reçois toujours la même erreur. Je n'ai aucune idée de ce que j'ai fait cause de cela, ni comment le résoudre. Des idées?

302
demandé sur BlueRaja - Danny Pflughoeft 2012-07-07 02:14:38

21 réponses

Je suis sûr que vous avez un conflit 32 bits / 64 bits. Il semble que votre projet principal puisse être défini sur 32 bits alors que la classe dont il fait référence est définie sur 64 bits. Essayez de regarder cette question SO et celle-ci aussi. Entre les deux d'entre eux, vous devriez être en mesure de comprendre votre problème.

481
répondu Icemanind 2017-05-23 11:33:32

Peut-être que vous rencontrez le problème avec votre site web après le déploiement sur le serveur.

Ensuite, vous devez ajuster votre pool d'applications pour activer les Applications 32 bits.

Étapes:

  1. ouvrir le Gestionnaire IIS
  2. Cliquez sur Pools D'Applications
  3. Sélectionnez le pool d'applications que vous utilisez
  4. dans le volet de droite, cliquez sur Paramètres avancés...
  5. définissez activer les Applications 32 bits sur True

entrez la description de l'image ici

153
répondu Ali Adravi 2014-11-13 14:38:03

Je viens d'avoir ce message d'erreur exécutant IIS Express Dans Visual Studio 2015. Dans mon cas, j'avais besoin d'exécuter la version 64 bits D'IIS Express:

Outils -> Options -> projets et Solutions - > projets Web
Cochez la case cela dit " Utilisez la version 64 bits D'IIS Express pour les sites web et projet".

Capture d'écran:

Capture D'écran des options VS pour le projet Web.

87
répondu TTT 2016-06-06 20:09:37

J'ai eu le même problème. J'avais défini la "cible de la plate-forme" du projet A ("projet A"(clic droit)->Propriétés->Build - >"cible de la plate-forme") sur x86 mais gardé le projet B à "N'importe quel CPU". Définir le projet B sur " x86 " a corrigé cela.

23
répondu 2013-04-18 16:23:37

J'ai eu ce problème en exécutant des tests unitaires (xunit) dans Visual Studio 2015 et je suis tombé sur le correctif suivant:

Menu Bar -> Test -> Test Settings -> Default Processor Architecture -> X64
10
répondu mkaj 2017-01-30 22:01:47

Vous devrez peut-être modifier le paramètre appication Pool "Activer les Applications 32 bits" sur TRUE dans IIS7 si vous avez au moins 1 dll\exe 32 bits dans votre projet.

6
répondu fergal303 2013-12-06 16:31:06

J'ai eu le même problème avec plusieurs projets dans la même solution, j'ai fini par définir tous les frameworks cibles sur. NET Framework 4 et x86 pour le processeur cible et il a finalement été compilé avec succès.

2
répondu Flood Techs 2013-08-07 01:24:37

Vous pouvez également voir ce problème si vous essayez d'empaqueter un projet 64 bits avec un programme D'installation MSI dans VS. ("La raison en est que la cale native est empaquetée avec le .le fichier msi est un exécutable 32 bits.")

Voir ici pour plus de détails: http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx

2
répondu G88 2015-10-14 16:31:40

AUCUNE de ces solutions n'a fonctionné pour moi-mais en supprimant le contenu des dossiers bin et obj, tout était cool à nouveau.

2
répondu saille 2017-06-29 04:55:08

Je l'ai eu lors de la construction d'un projet via Visual Studio Online (VSTS) en utilisant les étapes Visual Studio Build.

La solution était:

  • supprimer le dossier source existant
  • définissez explicitement "N'importe quel processeur" dans la plate-forme pour toutes les versions de Visual Studio, y compris les dépendances (voir capture d'écran ci-dessous).
  • relancez la construction

Capture D'écran VSO

2
répondu HockeyJ 2017-09-15 10:50:04

J'ai rencontré le même problème. Il est apparu hors du bleu et qui me semblait étrange.

Dans L'instantané D'Exception, pour le FusionLog, j'ai vu ce qui suit dans son message:

... C:\Windows\Microsoft.NET\Framework64 ...

Plus sur le journal de fusion: http://msdn.microsoft.com/en-us/library/e74a18c4 (v=vs. 110).aspx

Tous les projets avaient un processeur cible de AnyCPU. J'ai changé le projet d'application (le projet qui fait référence à tous les autres projets) à un processeur cible de x86. Il fonctionne maintenant.

Je ne sais pas comment le mélange de CPU cible s'est produit sans raison apparente, mais c'est le cas.

1
répondu Jeremy Ray Brown 2013-11-08 15:41:47

Je suis également confronté à ce problème dans un projet, après quelques minutes, j'ai trouvé la solution, ce problème est dû à la configuration du processeur, Si vous utilisez Visual Studio 2010 ou VS 2013 , allez simplement aux propriétés du projet , puis sélectionnez Compiledans la barre latérale et il y aura 5 déroulants, 5 déroulants seront CPU Cible:, vous devriez le définir sur x86 ou x64 selon vos besoins au lieu de N'importe quel CPU.

Mon problème a été résolu après avoir changé il à x86.

1
répondu Jawad Nadeem 2015-09-11 10:12:14

Cela peut également se produire simplement en ayant plusieurs frameworks pris en charge définis dans l'application .config fichier et, forçant l'application à s'exécuter dans un. net framework différent de celui mentionné en premier dans l'application.fichier de configuration .

Et aussi cela se déclenche lorsque vous avez les deux frameworks mentionnés disponibles dans votre système.

Comme solution de contournement, faites apparaître le cadre cible que vous allez utiliser pour le débogage dans l'application.config

Ex: si vous essayer de fonctionner dans. NET 4, le fichier de configuration devrait avoir quelque chose de similaire à ceci,

<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
1
répondu kuma DK 2016-08-30 10:18:38

Dans mon projet pour C#, propriété du projet->[Build]- > cible de la plate-forme: tout CPU, et décochez la case préférer 32 bits pour laisser le compilateur choisir automatiquement.

1
répondu bruce 2017-01-03 01:58:16

L'assembly Chilkat. net 4.5 nécessite L'installation du runtime VC++ 2012 ou 2013 sur n'importe quel ordinateur sur lequel votre application s'exécute. La plupart des ordinateurs l'auront déjà installé. Votre ordinateur de développement l'aura car Visual Studio a été installé. Cependant, si le déploiement sur un ordinateur où le runtime VC++ requis n'est pas disponible, l'erreur ci-dessus se produira:

Installez tous les paquets ci-dessous

Packages redistribuables Visual C++ pour Visual Studio 2013-vcredist_x64

Packages redistribuables Visual C++ pour Visual Studio 2013-vcredist_x86

Packages redistribuables Visual C++ pour Visual Studio 2012-vcredist_x64

Packages redistribuables Visual C++ pour Visual Studio 2012-vcredist_x86

1
répondu Sukesh Chand 2017-12-11 10:43:44

Tout d'abord, j'ai eu cela dans VS2017 avec un ancien projet dont j'avais besoin pour faire un minuscule changement et upraded tous les projets à framework 4.7.


Plusieurs autres ont mentionné que la sélection de {[0] } peut résoudre ce problème.

Il y a quelques endroits où vous devez le faire, et ce n'est peut-être pas aussi simple que de sélectionner dans la liste déroulante. Cela l'a réparé pour moi:

1) vous devez le faire à la fois ici:

entrez la description de l'image ici

2) et aussi dans Configuration Manager (clic droit sur la solution)

entrez la description de l'image ici

Mais si elle n'est pas là???

Puis cliquez sur New et choisissez ces paramètres: (Merci @ Rckrn )

entrez la description de l'image ici

1
répondu Simon_Weaver 2018-03-02 06:18:02

Si vous utilisez LibreOffice à partir de votre programme via l'intégration cli. net comme moi, j'ai eu la même erreur. J'utilise l'ancienne version de LibreOffice sur l'environnement de production sur mon PC j'ai installé une version plus récente qui était en conflit. Il suffit de désinstaller LibreOffice. j'ai trouvé la solution ici . NET CLI: impossible de charger le fichier ou l'assemblage 'cli_cppuhelper'

1
répondu Jan Sršeň 2018-04-17 08:55:53

Cela peut être un peu drôle, mais j'ai eu le même problème avec le code de travail normal. J'ai ajouté StreamWriter et StreamReader et cela a donné cette erreur. La solution était que j'ai pris ce code dans des parenthèses de commentaire puis j'ai débogué et il a commencé à fonctionner à nouveau

0
répondu Hovhannes Babayan 2015-10-21 18:55:12

J'ai également eu ce problème en exécutant des tests unitaires en utilisant ReSharper sur Visual Studio 2017 et l'ai corrigé avec la configuration suivante:

entrez la description de l'image ici

Vous pouvez également modifier le paramètre run test du ReSharper: https://resharper-support.jetbrains.com/hc/en-us/articles/207242715-How-to-run-MSTest-tests-using-x64-configuration

0
répondu Feiyu Zhou 2018-01-31 05:32:25

Ma machine m'a montré une mise à jour du BIOS et je me suis demandé si cela avait quelque chose à voir avec l'apparition soudaine de cette erreur. Et après avoir fait la mise à jour, l'erreur a été résolue et la solution s'est bien construite.

-1
répondu radkan 2017-01-31 19:45:21

Essayez-vous d'exécuter votre .exe fichier à partir de la cmd? Cela a été mon erreur. Il suffit de lancer le .fichier exe en double-cliquant dessus. Si c'est un.net Core SCD Pour Windows 8.1/Windows Server 2012 R2 x64.

-1
répondu Tadej 2018-03-27 07:29:16