C# .NET Anwendung: Eigene Dateien mitliefern

Nick_SMI

Ensign
Registriert
Sep. 2015
Beiträge
153
Hallo zusammen!

Wie kann ich Dateien mitliefern, beispielsweise eine einfache .txt Datei, die ich dann mit
Code:
AppDomain.CurrentDomain.BaseDirectory, "xy.txt"
verwenden kann?

Grüße und danke im Voraus!
 
Ich würde sagen ganz einfach dem Projekt ein neues Element hinzufügen und dort unter Allgemein 'Textdatei' auswählen.

PS: Die Filename Extension lässt sich natürlich beliebig ändern :)

PPS: ggf. in den Dateieigenschaften noch auf 'Immer kopieren' umstellen, damit es auch im Ausgabeverzeichnis landet.

Grüße Kruzifix
 
Zuletzt bearbeitet:
Hm, leider wird dies trz. nicht mitgeliefert... :/

Ps. Nach wie vor nicht, trz. immer kopieren... :/
 
Zuletzt bearbeitet:
Ein recht gängiger Weg, solche Dateien mitzuliefern, ist mittel resx-Dateien. In eine solche Ressourcendatei lassen sich Bilder, Texte, Icons und vieles mehr einbetten und einfach abrufen. Einfach mal danach googlen.

edit:
Ich habe mal ein Beispiel-Projekt angehängt. Die Text-Datei wird beim Kompilieren mit ins Ausgabeverzeichnis (bin) kopiert und die 2. Variante ist in der exe an sich enthalten. Löscht man also die Text-Datei aus dem Ausgabeverzeichnis, dann wird immer noch 1x "Hallo Welt!" ausgegeben.
 

Anhänge

Zuletzt bearbeitet:
pvc-junkie schrieb:
Ein recht gängiger Weg, solche Dateien mitzuliefern, ist mittel resx-Dateien. In eine solche Ressourcendatei lassen sich Bilder, Texte, Icons und vieles mehr einbetten und einfach abrufen. Einfach mal danach googlen.

edit:
Ich habe mal ein Beispiel-Projekt angehängt. Die Text-Datei wird beim Kompilieren mit ins Ausgabeverzeichnis (bin) kopiert und die 2. Variante ist in der exe an sich enthalten. Löscht man also die Text-Datei aus dem Ausgabeverzeichnis, dann wird immer noch 1x "Hallo Welt!" ausgegeben.

Es funktioniert zwar (mit der resx) aber ich kann Sie nicht verwenden zum zugreifen bei der Pfadangabe von Excel
 
Du kannst die Datei(en) ja im Temp-Verzeichnis erzeugen und den Pfad dann Excel o.ä übergeben:
Code:
        private static String WritefileToTemp(String fileName, byte[] data) {
            AssemblyName assemblyName = Assembly.GetExecutingAssembly().GetName();
            String dirName = Path.Combine(Path.GetTempPath(), assemblyName.Name + assemblyName.Version.ToString());
            if (!Directory.Exists(dirName))
                Directory.CreateDirectory(dirName);
            String strReturn = Path.Combine(dirName, fileName);

            using (Stream stm = new MemoryStream(data)) {
                try {
                    using (Stream outFile = File.Create(strReturn)) {
                        const int sz = 4096;
                        byte[] buf = new byte[sz];
                        while (true) {
                            int nRead = stm.Read(buf, 0, sz);
                            if (nRead < 1)
                                break;
                            outFile.Write(buf, 0, nRead);
                        }
                    }
                }
                catch {
                }
            }

            return strReturn;
        }

Aufruf dann:
String fileName = WritefileToTemp("meinedatei.txt", global::<MeinProjekt>.Properties.Resources.<MeineResource>);
<MeinProjekt> & <MeineResource> musst du natürlich noch entsprechend anpassen.
 

Ähnliche Themen

Zurück
Oben