Hallo alle Zusammen,
ich habe folgendes Problem:
In meiner Projektmappe habe ich dort, wo auch alle anderen CS-Files liegen eine XML-Datei erstellt. Sie enthält einige Daten, die ich für den ablauf meines Programmes benötige. Ich möchte nun den Inhalt dieser Datei zur Laufzeit laden. In etwa so:
XmlDocument xml = new XmlDocument();
xml.Load("Config.xml");
Leider sucht VS dieses Dokument im bin/Debug Ordner, es soll aber als Resource mitgegeben werden (ähnlich wie Bilder oder icons, die man als Resource mitgeben kann). Ich möchte auch nicht, dass der Anwender mein Programm erst installieren muss, sondern die .exe-Datei ausreicht und keine weiteren dateien mitgeliefert werden müssen.
Ich habe schon versucht meine xml-datei als resource zu definieren, dass hatte aber leider keinen erfolg... hat jemand eine Idee wie ich das realisieren könnte?
mfg Cuin
Hallo,
du kannst unter den Dateieigenschaften bei Build-Action Embedded Resource einstellen oder in der vom Designer generierten Ressourcen-Datei das XML als Text hinterlegen.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Hallo gfoidl,
ich habe jetzt mal die datai aus dem Resourcenmanager gelöscht und so wie du gesagt hattest die build-action der file auf "eingebettet resource" gestellt. Wenn ich jetzt das programm starte, dann findet er die datei leider nicht, wenn ich aber die Einstellung: "InAusgabeverzeichniskopieren" auf "immer" einstelle, dann findet er die datei, aber dann habe ich neben meiner exe auch noch meine xml-datei liegen, was ich nicht so gut finde...
Und wenn ich mein xml-datei als txt datei hinterlege, dann habe ich das selber problem, also dass VS die datei dann in bin/debug sucht...
Gibts da noch eine möglichkeit oder mache ich was falsch?
mfg Cuin
Hallo,
der Zugriff auf eingebettete Ressourcen erfolgt ja dann auch über Assembly.GetManifestResourceStream
.
Bei Properties.Resources (also mit dem Designer) kann das XML als string eingebettet werden und das ist vllt. einfacher zu handhaben.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Hallo gfoidl,
vielen vielen Dank für deine Tipps^^
Ich habe es jetzt hingekriegt:
Assembly _assembly;
Stream _ConfigStream;
_assembly = Assembly.GetExecutingAssembly();
_ConfigStream = _assembly.GetManifestResourceStream("myNamespace.Config.xml");
xml.Load(_ConfigStream);
Diese Seite erklärt ziemlich gut wie es geht (wenn auch sehr schlecht übersetzt):