Hallo, ich habe ein kleines problem, und zwar ich habe ressourcen eingebettet und möchte diese jetzt mittels File.Copy lokal copieren...
ich bekomme immer nur eine file not found exception...
Die Fehlermeldung ist eindeutig, du hast den Pfad nicht richtig angegeben. Dieser ist nämlich nicht im Programmordner. Ausserdem hängt das auch noch ab, wie du die Ressourcen speicherst (eingebetteteRessource, nicht eingebettete Ressource, etc).
die resource ist eingebettet:
string[] test = Assembly.GetCallingAssembly().GetManifestResourceNames();
File.Copy(test[0], @"C:\Users\user\Desktop\blabla.txt");
Was dir GetManifestResourceNames() liefert, sind Strings. Keine Dateinamen.
Versuchs mal mit GetManifestResourceStream().
ja, ich brauch ja auch Strings, weil ich über File.Copy die Ressourcen kopierne möchte, und da muss ich den alten pfad angeben (den, den ich jetzt gerne hätte) und den neuen
Hallo schillerdeluxe,
File.Copy ist einfach der falsche Befehl. Das sollte aber eigentlich schon aus dem Gesagten klar geworden sein. Die Alternative wurde auch schon genannt.
herbivore
Tatsächlich...
Lösung:
Stream inStream = Assembly.GetCallingAssembly().GetManifestResourceStream("SetupDatabase.DatabaseData."+fileName + ".txt");
string[] bla = Assembly.GetCallingAssembly().GetManifestResourceNames();
Stream outStream = File.Create(Path.GetTempPath()+fileName+".txt");
byte[] temp = new byte[100 * 1024];
for (int i = inStream.Read(temp, 0, temp.Length); i > 0; i = inStream.Read(temp, 0, temp.Length))
{
outStream.Write(temp, 0, i);
}
outStream.Close();
DANKE!