Laden...

System.BadImageFormatException: Could not load file or assembly

Erstellt von Jonas007 vor 2 Jahren Letzter Beitrag vor 2 Jahren 861 Views
J
Jonas007 Themenstarter:in
37 Beiträge seit 2020
vor 2 Jahren
System.BadImageFormatException: Could not load file or assembly

Hallo liebe Community,
ich bekomme folgende Exception: Unhandled exception. System.BadImageFormatException: Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (0x80131058)
File name: 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' ---> System.BadImageFormatException: Cannot load a reference assembly for execution.

Und zwar habe ich eine DLL, welche ich zuerst in einer Windows Forms-App benutzt habe jetzt in eine Konsolenprogramm eingebunden. Ohne die 'using.Windows.Forns' in einer Klasse meiner DLL funktioniert alles normal, jedoch benötige ich diese und ich weiß nicht, worin genau mein Fehler liegt. Ich habe bei der DLL bereits den bin-Ordner gelöscht und die DLL neu erstellt jedoch ändert das nichts. Aus der Microsoft-Dokumetation zu dieser Exception werde ich leider auch nicht schlau bzw. wüsste ich nicht, weshalb sie in meinem Fall genau ausgelöst wird.

LG Jonas und schonmal Danke im voraus 🙂

16.835 Beiträge seit 2008
vor 2 Jahren

BadImageFormatException heisst in 99,9% der Fälle die Bitness stimmt nicht. Das solltest Du auch der Microsoft Doku entnehmen können, genauso Google bzw. einfach die Forensuche.
Siehe Ursachenhinweise in BadImageFormatException Klasse (System)
Oder auch meine Grundlagenhinweise, wie das in .NET funktioniert, in In Applikation alternativ 32-bit oder 64-bit DLL verwenden

Deiner Beschreibung nach gehst Du aber allgemein mit Abhängigkeiten nicht unbedingt so um, wie man es tun sollte.
Man referenziert DLLs nicht direkt, sondern am besten über NuGet Pakete - außer Du hast unmanaged Assemblies, die nicht paketierbar sind.

Wenn Deine Klasse keine UI Aufgaben hat, dann sollte sie darüber hinaus niemals eine Referenz auf Windows.Forms haben (oder andere UI Technologien).
Siehe [Artikel] Drei-Schichten-Architektur