263 votes

System.BadImageFormatException : Impossible de charger le fichier ou l'assemblage

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe C:\_PRODUKCIJA\D
ebug\DynamicHtmlTool.exe
Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Exception occurred while initializing the installation:
System.BadImageFormatException: Could not load file or assembly 'file:///C:\_PRO
DUKCIJA\Debug\DynamicHtmlTool.exe' or one of its dependencies. An attempt was ma
de to load a program with an incorrect format..

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>

Le service est compilé en x86 même si les deux ordinateurs sont en x64 et cela fonctionne sur mon ordinateur. Dans le serveur où se trouve Win 2008, j'obtiens cette erreur.

J'ai essayé les solutions de google mais aucune ne fonctionne.

Comme écrit ici, j'ai un projet x86 http://www.davesquared.net/2008/12/systembadimageformatexception-on-64-bit.html

0 votes

J'ai fait un clean build puis un build et l'erreur a disparu.

307voto

madd0 Points 4836

Il semble que vous utilisiez la version 64 bits de l'outil pour installer une application à architecture 32 bits/x86. Recherchez la version 32 bits de l'outil ici :

C:\Windows\Microsoft.NET\Framework\v4.0.30319

et il devrait installer votre application 32 bits sans problème.

63 votes

Ou changez dans Visual Studio (paramètres du compilateur) la cible de "X86" à "Any CPU".

0 votes

@TimSchmelter J'aurais aimé le voir ici en premier. C'est ce que j'ai fait et ça a marché (j'ai changé la cible de Any CPU dans mon cas pour qu'elle corresponde à mon projet référencé - x64).

1 votes

Pour moi, j'avais sélectionné x86 pour ma cible de débogage... deux fois (je blâme ma dyslexie)

160voto

David Points 3506

Essayez de configurer les paramètres de vos projets, cela est généralement dû à des problèmes d'architecture x86/x64 :

Allez-y et définissez votre choix comme indiqué :

1 votes

Merci ! C'était en effet un problème avec mes projets.

1 votes

Merci, j'ai même rencontré le même problème sur l'ensemble de mes projets.

0 votes

C'était aussi le cas pour moi.

133voto

Joseph Snow Points 537

J'ai trouvé une autre solution à ce problème. Apparemment, le mode 32 bits de mon IIS 7 n'était pas activé par défaut dans mon pool d'applications.

Pour activer le mode 32 bits, ouvrez IIS et sélectionnez votre pool d'applications. Le mien s'appelle "ASP.NET v4.0".
Faites un clic droit, allez dans "Paramètres avancés" et changez la section nommée : "Activer les applications 32 bits" à true.

Redémarrez votre serveur web et réessayez.

J'ai trouvé le correctif à partir de cette référence de blog : http://darrell.mozingo.net/2009/01/17/running-iis-7-in-32-bit-mode/

En outre, vous pouvez modifier les paramètres de Visual Studio. Dans mon cas, je suis allé à Tools > Options > Projects and Solutions > Web Projects et a vérifié Use the 64 bit version of IIS Express for web sites and projects - C'était sur VS Pro 2015. Rien d'autre ne l'a résolu que ceci.

0 votes

Merci, cela m'a rappelé comment résoudre un problème similaire !

0 votes

Pouvez-vous coller ceci sur stackoverflow.com/questions/323140/ (mais qualifiez-le très clairement en disant que ce n'est pas un cas d'installutil, juste la même exception)

0 votes

C'était mon cas, merci beaucoup.

6voto

woony Points 141

J'ai eu la même exception en installant le cadre correct.

Ma solution a été d'exécuter cmd en tant qu'administrateur .... puis cela a fonctionné correctement.

0 votes

C'est étrange, si vous avez plus de détails ou une justification, il n'y a pas de mal à l'ajouter. stackoverflow.com/questions/323140/ (Mais je le déclasserais à moins qu'il y ait une justification car cela n'a pas de sens pour moi :P)

0 votes

Je n'ai jamais dit que je pouvais expliquer pourquoi, parce que je ne peux pas. Mes points .... ont peut-être indiqué le fait que cela n'avait pas de sens pour moi non plus. Mais d'après mon expérience, ce n'est pas rare d'utiliser tout ce qui est microsoft.

0 votes

Je trouve normalement que les choses qui n'ont pas de sens n'ont pas de sens pour une raison et le PEIMS est plus facile que le PEBKAC. J'affirme que vous avez fait plus que cette seule chose différente car cela n'a aucun sens. L'erreur est un conflit 64/32 bits et le fait de fonctionner en tant qu'administrateur ne peut pas influencer cela sans que des redirections de chemin folles ou des profils ne brouillent les choses. Mais c'est hautement improbable donc je ne pense pas que ce soit une réponse utile pour quiconque donc -1

3voto

Davut Gürbüz Points 1609

Ma cause est différente : j'ai référencé un service web puis j'ai obtenu ce message.

Puis j'ai changé ma cible .Net Framework 4.0 à .Net Framework 2.0 et de renvoyer mon webservice. Après quelques modifications, le problème est résolu. Il n'y a pas d'erreur, tout fonctionne bien.

J'espère que cela vous aidera !

10 votes

Quels sont les quelques des changements ?

0 votes

@MichaelFreidgeim c'était un vieux problème pour moi. Mais pour autant que je me souvienne, lorsque j'ai changé de framework, le proxy généré a changé et j'ai donc procédé à une refonte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X