Ich habe gerade eine Revision von Subversion in einen neuen Ordner ausgecheckt. Öffnete die Lösung und ich bekomme diese beim Ausführen:
Datei oder Assembly 'xxxx' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Es wurde versucht, ein Programm mit einem falschen Format zu laden.
Dies ist derselbe Code, den ich vor einiger Zeit eingecheckt hatte. Warum macht es das jetzt? Ich sehe jetzt auch ein Debug x86 anstatt nur Debug im bin-Ordner des xxx-Projekts. Was ist Debug x86 und warum habe ich Debug nicht einfach so, wie ich es früher im bin-Ordner getan habe?
1.
Datei kann nicht geladen werden oder Montag ... Es wurde versucht, ein Programm mit einem falschen Format (System.BadImageFormatException) zu laden ,2.
kann nicht geladen wird Datei oder Assembly Ausnahme &3.
„Es wurde versucht, ein Programm mit einem falschen Format zu laden“ auch wenn die Plattformen gleich sindAntworten:
Klingt so, als würde ein Teil des Projekts nur für x86 erstellt, während der Rest für jede CPU / x64 erstellt wird. Das hat mich auch gebissen. Laufen Sie mit einem x64 (oder ähm ... IA64)?
Überprüfen Sie die Projekteigenschaften und stellen Sie sicher, dass alles für "Beliebige CPU" erstellt wird. Wenn Sie sich in Visual Studio befinden, können Sie nach allem suchen, indem Sie im Menü "x86" oder "Beliebige CPU" (neben dem Menü "Debug" / "Release") in der Symbolleiste oben auf dem Bildschirm auf klicken "Konfigurationsmanager..."
quelle
Wenn Sie diesen Fehler erhalten, während Sie die Site in IIS 7+ auf 64-Bit-Servern ausführen, haben Sie möglicherweise Assemblys mit 32 Bit, und in Ihrem Anwendungspool ist die Option "32-Bit-Anwendungen aktivieren" auf "Falsch" gesetzt. Setzen Sie dies auf true und starten Sie die Site neu, damit sie funktioniert.
quelle
Ich hatte diesen Fehler beim Versuch, das schreckliche Business Objects 4 für .Net SDK zu verwenden.
Sie liefern fünf BusinessObjects * .dll-Dateien aus, aber alle sind 64-Bit.
Um meine Webseite laden zu können, musste ich auf Extras \ Optionen klicken und diese Einstellung in VS2013 ändern:
quelle
inetmgr dann kommen Sie zu Anwendungspool-> Erweiterte Einstellung Ihres Pools-> hat die Option "32-Bit-Anwendungen aktivieren" auf true gesetzt; und starten Sie IIS neu. erneut überprüfen.!
quelle
Die BadImageFormatException in einer Anwendung, die unter IIS ausgeführt wird (nicht unter VS, da Visual Studio das Problem mithilfe des Builds für "Beliebige CPU" behebt), kann folgende Ursachen haben:
Die Site ist ein Server mit x64 und die Standardeinstellung des Anwendungspools für 32-Bit-Anwendungen aktivieren war False. und Sie haben 32-Bit-Assemblys
Auf der Ebene von Visual Studio lautet der Fix:
quelle
Stellen Sie sicher, dass Sie Ihre Einstellung für "32-Bit bevorzugen" überprüfen. In meinem Fall wurde diese Einstellung in Visual Studio 2012 standardmäßig aktiviert. Der Versuch, etwas von einer externen DLL zu verwenden, schlug fehl, bis ich "32-Bit bevorzugen" deaktivierte .
quelle
Es ist definitiv ein Problem, wenn einige Projekte aus Gründen der x86-Kompatibilität anstelle einer CPU erstellt werden. Wenn ich raten müsste, würde ich sagen, dass einige der Referenzen zwischen Ihren Projekten wahrscheinlich auf die DLLs in einigen der Ordner bin \ debug verweisen, anstatt Projektreferenzen zu sein.
Wenn ein Projekt für x86 anstelle von 'Beliebige CPU' kompiliert wird, werden die DLLs in den Ordner bin \ x86 \ debug anstatt in bin \ debug verschoben (wo wahrscheinlich Ihre Referenzen suchen).
In jedem Fall sollten Sie jedoch Projektreferenzen zwischen Ihren Projekten verwenden.
quelle
Wenn im Visual Studio mit IIS Express funktioniert und wenn die Veröffentlichung fehlgeschlagen ist, versuchen Sie Folgendes:
quelle