Ich speichere ein PNG als eingebettete Ressource in einer Assembly. Aus derselben Assembly heraus habe ich folgenden Code:
Bitmap image = new Bitmap(typeof(MyClass), "Resources.file.png");
Die Datei mit dem Namen "file.png" wird im Ordner "Resources" (in Visual Studio) gespeichert und als eingebettete Ressource markiert.
Der Code schlägt mit einer Ausnahme fehl, die besagt:
Die Ressource MyNamespace.Resources.file.png kann nicht in der Klasse MyNamespace.MyClass gefunden werden
Ich habe identischen Code (in einer anderen Assembly, Laden einer anderen Ressource), der funktioniert. Ich weiß also, dass die Technik solide ist. Mein Problem ist, dass ich am Ende viel Zeit damit verbringe, herauszufinden, was der richtige Weg ist. Wenn ich einfach (z. B. im Debugger) die Assembly abfragen könnte, um den richtigen Pfad zu finden, würde mir das eine Menge Kopfschmerzen ersparen.
Ich vergesse jedes Mal, wie man das macht, also wickle ich einfach die zwei Einzeiler, die ich brauche, in eine kleine Klasse:
quelle
Ich vermute, dass sich Ihre Klasse in einem anderen Namespace befindet. Der kanonische Weg, dies zu lösen, wäre die Verwendung der Ressourcenklasse und einer stark typisierten Ressource:
Verwenden Sie den Ressourcenmanager der IDE, um Ressourcen hinzuzufügen.
quelle
Ich verwende die folgende Methode, um eingebettete Ressourcen zu erfassen:
Ich nenne das dann mit dem Pfad im Projekt:
quelle
Der Name der Ressource ist der Namensraum plus der "Pseudo" -Namensraum des Pfads zur Datei. Der "Pseudo" -Namensraum wird von der Unterordnerstruktur mit \ (Backslashes) anstelle von erstellt. (Punkte).
Der folgende Aufruf:
gibt den Stream von my.xml zurück, der sich in der Ordnerstruktur resources \ xml im Namensraum befindet: my.namespace.
quelle