Impossible de charger le fichier ou l'assembly ... Une tentative a été faite pour charger un programme avec un format incorrect (le Système.BadImageFormatException)
J'ai deux projets, ProjectA
et ProjectB
. ProjectB
est une application de console, qui dépend de l' ProjectA
. Hier, tout fonctionnait bien, mais tout à coup, aujourd'hui, quand je lance ProjectB
j'obtiens ceci:
BadImageFormatException était non gérée:
Impossible de charger le fichier ou l'assembly 'ProjectA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect.
Les deux sont de simples projets, sans dépendances sur un autre non-.Net projets. Les deux sont entièrement .Net - il n'y a pas de code natif, et non P/Invoke. J'ai d'autres projets qui dépendent de ProjectA
et fonctionnent toujours très bien.
Choses que j'ai essayé:
- Assurez-vous que les deux projets sont mis à "any CPU", avec la construire case cochée. Ils sont.
- Assurez-vous que les deux projets sont pour la même Cible Cadre (.Net 4.0 Client Profile).
- Sous Projetb --> Références --> ProjectA --> Propriétés, assurez-vous que "Copie Locale" est fixé à "Vrai" _ (j'ai vérifié que ProjectA.dll est en train d'être copiés correctement)
- Propre/Reconstruction de la solution. J'ai même essayé de supprimer manuellement le /bin et /obj dossiers dans les deux projets.
- Redémarrez Visual Studio. Redémarrer mon ordinateur.
- Découvrez une toute nouvelle copie du dépôt.
Mais j'obtiens 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?
- Si vous avez une version de l'histoire dans le référentiel, pourriez-vous vérifier si il ya des différences dans la csproj fichiers?
- Selon Mercurial, pas de changements autres que l'ajout de références à nouveau .fichiers cs
- Obtenez-vous le même comportement sur une autre machine? N'a rien d'autre changement sur la machine (par exemple, mise à jour de Windows, la dépendance des mises à jour, etc.)?
- Avez-vous essayé de revenir à ces nouvelles .fichiers cs?
- Cela a fonctionné pour moi............ stackoverflow.com/a/9419522/191403
- Comme un test de cohérence, dans l'Explorateur de solutions, cliquez
Refresh
. Cela m'a permis de sauver et reconstruire la solution. - poste - impossible de charger le fichier ou l'assembly 'xxx' ou une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect & impossible de charger le fichier ou l'assembly exception
Vous devez vous connecter pour publier un commentaire.
Je suis sûr que vous êtes d'avoir un 32-bit /64-bit conflit. Il semble que votre projet pourrait être mis à 32 bits alors que la classe de son référencement est réglé sur 64 bits. Essayez de regarder cette SORTE de question et celle-ci aussi. Entre les deux d'entre eux, vous devriez être en mesure de comprendre votre problème.
project-->properties-->build
- elle a été fixée pour x86; le réglage à "any CPU" résolu ce problème. J'ai toujours pensé que ce paramètre était la même que la "plate-forme cible" liste déroulante dans le gestionnaire de configuration, mais apparemment ce n'est pas (en fait, la "plate-forme cible" dans le gestionnaire de configuration ne semble pas faire quoi que ce soit!)<PlatformTarget>x86</PlatformTarget>
dans l'un des projets dépendants pour aucune raison du tout. Si je n'ai pas regardé dans le SVN, je n'aurais jamais compris pourquoi nos MVC application ne se lance pas.Peut-être vous êtes confrontés au problème avec votre site web après le déploiement sur le serveur.
Alors vous avez besoin d'ajuster votre pool d'applications pour Activer les Applications 32 Bits.
Étapes
De volet droit, cliquez sur Paramètres Avancés...
La case Activer les Applications 32 Bits True
didn't have
32-bit / 64-bitconflict
, et êtreusing this
réponse, monproblem has gone
Je viens d'avoir ce message d'erreur qui exécute IIS Express de Visual Studio 2015. Dans mon cas, j'avais besoin d'exécuter la version 64 bits de IIS Express:
Capture d'écran:
J'ai eu ce même problème. J'avais mis Un Projet de Plateforme "Cible" ("Projet"(Clic Droit)->Propriétés->Build->"Plate-forme Cible") pour x86, mais a gardé le Projet B est "any CPU". Réglage Projet B de "x86" fixé ce.
J'ai eu ce problème l'exécution de tests unitaires (xunit) dans Visual Studio 2015 et est venu à travers le correctif suivant:
Vous devrez peut-être modifier le Appication Piscine paramètre "Activer les Applications 32 bits" pour de VRAI dans IIS7 si vous avez au moins 1 32 bits dll\exe dans votre projet.
Tout d'abord j'ai eu ce en VS2017 avec un vieux projet que j'ai besoin de faire un minuscule changement et upraded tous les projets de cadre 4.7.
Plusieurs autres ont mentionné la sélection
Any CPU
pouvez résoudre ce problème.Il y a quelques endroits où vous devez vous faire, et il pourrait ne pas être aussi simple que de sélectionner à partir de la liste déroulante. Ce qu'il est corrigé pour moi:
1) Vous devez le faire ici:
2), Et aussi dans
Configuration Manager
(clic droit sur la solution)Mais que faire si il n'y est pas???
Puis cliquez sur
New
et choisissez les paramètres suivants: (merci @RckLN)J'ai eu le même problème avec plusieurs projets dans la même solution, j'ai fini par mettre tous les cadres de la cible pour .NET Framework 4 et x86 pour le PROCESSEUR cible et il a finalement été compilé avec succès.
Vous pouvez également voir ce problème si vous essayez de paquet 64 bits de projet avec un programme d'installation MSI VS. ("La raison en est que le natif de cale emballés avec le .msi fichier 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
Aucune de ces solutions n'a fonctionné pour moi - mais en supprimant le contenu du bin et obj dossiers tout était calme à nouveau.
J'ai obtenu ce lors de la construction d'un projet via Visual Studio Online (VSTS) Construire à l'aide de
Visual Studio Build
Étapes.La solution était:
J'ai rencontré le même problème. Il surgit à l'improviste et qui m'a paru étrange.
À l'Exception de l'instantané, de la FusionLog, j'ai vu la suivant dans son message:
... C:\Windows\Microsoft.NET\Framework64 ...
Plus au sujet de la fusion du journal: http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs. 110).aspx
Tous les projets ont un PROCESSEUR Cible de AnyCPU. J'ai changé le projet d'application (le projet qui fait référence à tous les autres projets) à une Cible PROCESSEUR x86. Il fonctionne maintenant.
Pas sûr de savoir comment le PROCESSEUR Cible mélanger eu lieu sans raison apparente, mais il l'a fait.
J'ai également confrontés à ce problème dans un projet, après quelques minutes, j'ai trouvé la solution,
ce problème est dû à la configuration de l'unité centrale,
Si vous utilisez Visual Studio 2010 ou VS 2013, juste goto projet propriétés puis sélectionnez Compiler à partir de la barre latérale et il y aura 5 déroulante, 5e déroulante sera du PROCESSEUR Cible:, vous devez le régler à x86 ou x64 en fonction de vos besoins au lieu de n'Importe quel CPU.
Mon problème a été résolu après l'avoir modifié pour x86.
Ceci peut également se produire tout en ayant de multiples prises en charge cadres définis dans le app.config fichier et, forçant l'application de s'exécuter dans un autre .NET framework autre que celui mentionné pour la première fois dans l'application.fichier de configuration.
Et aussi cela déclenche lorsque vous avez à la fois des cadres disponibles dans votre système.
Comme une solution de contournement, mettre en place le framework cible que vous allez utiliser pour le débogage dans l'application.config
ex: si vous essayez d'exécuter dans .NET 4, fichier de configuration devrait avoir quelque chose de similaire à cela,
Dans mon projet de C#, de propriétés du projet->[Build]->Plate-forme cible: une unité centrale,
et décochez la case Préfèrent 32 bits de laisser le compilateur de choisir automatiquement.
La Chilkat .NET 4.5 montage nécessite de VC++ 2012 ou 2013 de l'exécution pour être installé sur n'importe quel ordinateur sur lequel l'application s'exécute. La plupart des ordinateurs sont déjà installés. Votre ordinateur de développement, pour l'avoir parce que Visual Studio a été installé. Cependant, si pour le déploiement sur un ordinateur où le nécessaire VC++ runtime n'est pas disponible, l'erreur ci-dessus se produisent:
Installer tous les soufflet paquets
Visual C++ Redistributable Paquets pour Visual Studio 2013 - vcredist_x64
Visual C++ Redistributable Paquets pour Visual Studio 2013 - vcredist_x86
Visual C++ Redistributable Paquets pour Visual Studio 2012 - vcredist_x64
Visual C++ Redistributable Paquets pour Visual Studio 2012 - vcredist_x86
Si vous utilisez LibreOffice à partir de votre programme via l'interface cli .net de l'intégration comme moi, j'ai eu le même message d'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 vous suffit de désinstaller LibreOffice. J'ai trouvé la solution ici .NET de la CLI: impossible de charger le fichier ou l'assembly 'cli_cppuhelper'
Il peut être un peu drôle, mais j'ai eu le même problème avec la normale du code de travail. J'ai ajouté StreamWriter et StreamReader et il en a donné l'erreur.
La solution a été j'ai pris ce code dans les commentaires entre parenthèses puis n'a debug et il a commencé à travailler à nouveau
J'ai aussi eu ce problème de l'exécution des tests unitaires à l'aide de ReSharper sur Visual Studio 2017 et il fixe avec la configuration suivante:
Vous pouvez aussi changer la ReSharper run configuration de test:
https://resharper-support.jetbrains.com/hc/en-us/articles/207242715-How-to-run-MSTest-tests-using-x64-configuration
Dans mon cas, une dépendance qui manquait dans la dll qui a jeté cette exception. J'ai vérifié avec Dependency Walker, a ajouté la dll manquante et le problème a été résolu.
Plus précisément, j'ai en quelque sorte corrompu mon opencv_core340.dll par hasard en ajoutant SVN mots-clés, et donc ma dll ne pouvait plus l'utiliser. Cependant, je ne crois pas que la solution de ce problème dépend de si la dll est manquant ou endommagé. Je suis juste en ajoutant ceci pour le bien de donner une information complète.
Tirer! Je savais à propos de ce problème. Je pensais que je faisais tout droit jusqu'à ce que j'ai accidentellement vu 'x86' dans le VS de la fenêtre de sortie et c'est quand je suis en attente de la cause. Perdu à quelques minutes de cela aujourd'hui.
La configuration sous "Publier" de la fenêtre a été mis à 'x86'; tandis que, partout ailleurs, c'était x64'.
Assurez-vous qu'il est synchronisé à travers le gestionnaire de configuration de paramètres de publication, des configurations de solution, et les paramètres IIS (si c'est votre serveur web).
Veuillez également garder à l'esprit - VS est une application 32 bits et IIS est de 64 bits. Des applications 32 bits sont désactivés par défaut dans IIS.
Ma machine m'a montré une mise à jour du BIOS et je me demandais si cela a quelque chose à voir avec la soudaine popping-up de cette erreur. Et après j'ai fait la mise à jour, l'erreur a été résolue et la solution intégrée de l'amende.
Sont que vous essayez d'exécuter votre .exe fichier à partir de la cmd? Cela a été mon erreur. Il suffit de lancer le .exe fichier en double-cliquant dessus. Si c'est un .NET de Base SCD pour Windows 8.1/Windows Server 2012 R2 x64.