C# - Kann Bilder aus einer DLL-Datei nicht laden
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
angabe
code
datei
dynamisch laden
erweiterung
file
folgendem problem
gegner
image
kleines spiel
lade
list
ordner
ressource
show
string
verzeichnis
vorhanden typen
zeile
zugreifen
-
Hallo. Ich stehe vor folgendem Problem. Ich habe ein kleines Spiel geschrieben, bei dem ich die Gegner jetzt dynamisch laden möchte. Ich durchsuche dazu einfach den Ordner "opponents" im eigenen Verzeichnis und hole mir die Gegner in Form von Dll-Dateien daraus. Sowit funktioniert auch, dass ich den Ordner durchsuche, die Dll-Dateien lade und die darin vorhanden Typen mir ausgeben lasse. Das Problem ist jetzt nur, dass ich mit dem ResourceManager nicht auf die Ressourcen zugreifen kann (sprich die Bilder des Gegners).
Hier ist mein Code:
List<string> files = ListFiles.GetFileList("opponents\\", ".dll", true, false); foreach (string dllFile in files) { try { Assembly assembly = Assembly.LoadFile(Application.StartupPath + "\\" + dllFile); Type[] types = assembly.GetTypes(); for (int i = 0; i < types.Length; i++) { string baseName = types[i].FullName.Substring(0, types[i].FullName.IndexOf('.')); ResourceManager rm = new ResourceManager(baseName, assembly); for (int s = 0; s <= MAX_STATE; s++) images.Add((Bitmap)rm.GetObject(baseName + "_" + Convert.ToString(s))); } } catch { MessageBox.Show("Catch"); } }
In der Zeile "images.Add((Bitmap ..." wir eine Exception geworfen und zwar die MissingManifestResourceException.
Was mache ich falsch? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Übersetz den Fehler doch einfach mal ins deutsche. Dann heisst er soviel, wie "Da fehlen noch Angaben, die eine eindeutige identifizieren der Ressource erst ermöglichen" bzw. soviel wie: Er weiss einfach immernoch nicht genau genug, welche Datei du denn nun haben möchtest. So wie ich das sehe, erfragst du mit dem rm auch nur den Dateinamen, ohne Erweiterung. D.h. es bliebe immernoch die Entscheidung offen, ob er nun eine *.bmp, eine *.gif oder eine *.png lädt. Diese Angabe musst du noch hinzufügen, dann sollte es gehen.
Die Zeile
ResourceManager rm = new ResourceManager(baseName, assembly);
würde ich also wie folgt abändern
ResourceManager rm = new ResourceManager(baseName + ".PNG", assembly);
um zB eine *.png-Datei zu laden, dann sollte es klappen.
Liebe Grüße
- VampireSilence -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage