2017-10-08 2 views
1

Ich habe ein Problem mit einer Klassenbibliothek; Ich bereite eine Bibliothek mit einer Schnittstelle vor, die eine spezifische Datenspeichersignatur darstellt. Der Zweck besteht darin, die Schnittstelle als Grundlage für die Implementierung einer Reihe spezifischer Klassen zu verwenden, die Konfigurationsinformationen in verschiedenen Formaten (Textdateien, XML-Dateien usw.) speichern, während das gleiche Nutzungsprofil für die Anwendung beibehalten wird. Ich habe ein Problem. In diesem Fall versuche ich, eine XML-Datei als Ressource einzubetten - diese Datei ist eine Art von Format zum Speichern von Konfigurationsdaten. Die Datei befindet sich als eingebettete Ressource in einem Unterordner des Projekts, wie in der folgenden Abbildung dargestellt.Erstellen einer eingebetteten Ressource in der C# -Klassenbibliothek, wenn sie nicht existiert

enter image description here

Im folgenden Code-Snippet wird gezeigt, wie ich die Funktionalität bisher umgesetzt haben.

Im Abschnitt "XML vorbereiten" versuche ich einen Stream von der eingebetteten Ressource zu lesen. Nach dem Lesen wird getestet, ob tatsächlich ein Stream erstellt wurde. Wenn die Datei gefunden wird, enthält der manifestResourceStream die XML-Daten - soweit so gut. Das Problem tritt auf, wenn die Datei aus irgendeinem Grund versehentlich gelöscht wurde - in diesem Fall möchte ich eine neue Datei als eingebettete Ressource erstellen, um die gelöschte Datei zu ersetzen. Das soll im bedingten Teil in dem Teil geschehen, der als "???" angezeigt wird.

Ich habe alles versucht, was ich denken konnte, suchte Google nach Antworten, usw. - ohne Erfolg.

Hat jemand eine Ahnung, wie dies erreicht wird? Jede Hilfe wird sehr geschätzt.

Vielen Dank im Voraus.

Mit freundlichen Grüßen.

+1

Die Prämisse einer gelöschten eingebetteten Ressource scheint lächerlich. Eingebettete Ressourcen sind Teil der DLL und niemand sollte die DLL bearbeiten. Einer der Gründe für das Einbetten von Ressourcen, anstatt sie als separate Dateien bereitzustellen, besteht darin, zu verhindern, dass Benutzer sie ändern oder löschen. Warum sind Sie besorgt über die Möglichkeit, dass die Ressource gelöscht wird? Ich würde diese Möglichkeit einfach ignorieren. – BlueMonkMN

Antwort

1

Wenn Sie eine eingebettete Ressource haben, ist es in Ihre Binärdateien integriert. Es ist keine physische Datei, sondern etwas, das in der gebauten Datei (DLL in diesem Fall) vorhanden ist. Also, sobald es enthalten ist, tue ich denke nicht, dass es jemals gelöscht werden kann. Nach meinem Wissen kann die eingebettete Ressource nur beim Erstellen der Projektbinärdateien festgelegt werden, und Sie können dies nicht explizit zur Laufzeit tun, da sie aus den oben genannten Gründen nicht benötigt wird.

+0

Danke an alle für diese Klarstellung. Der visuelle Eindruck aus dem Projektbaum, in dem die Ressource wie eine Datei erscheint, verwirrte mich. –

Verwandte Themen