Entwickler-Ecke

Sonstiges (.NET) - Eingebettete Resource als Datei speichern Fehler


PersisXS - So 01.08.10 02:07
Titel: Eingebettete Resource als Datei speichern Fehler

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Reflection;
using System.Deployment;
using System.Resources;
using System.Windows.Forms;

namespace DataExt
{
    class  Program
    {
        static void Main(string[] args)
        {

            using (FileStream outputStream = new FileStream(Path.GetTempPath() + "/File.Data", FileMode.Create, FileAccess.Write))
            {
                String pathToResource = "DataExt.Ressources.File.Data";
                System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
                Stream inputStream = a.GetManifestResourceStream(pathToResource);
                int cnt = 0;
                const int LEN = 4096;
                byte[] buffer = new byte[LEN];
                while ((cnt = inputStream.Read(buffer, 0, LEN)) != 0)
                    outputStream.Write(buffer, 0, cnt);


            }
            }
        }
    }


Hallo erstmal,
Könnte mir bitte einer sagen was hier oben falsch läuft?
Ich bekomme immer ein NullReferenceException an der While-Schleife!
Habe ich den falschen Resourcen-Pfad angegeben?
Danke im Vorraus,
Ich hoffe es geht klar, da das mein erster Beitrag ist.
Lg,


Th69 - So 01.08.10 09:30

Dann prüfe doch einfach im Debugger, welche Variable 'null' ist - ich tippe auf 'inputStream'.
Die MSDN sagt zum Rückgabewert von 'GetManifestResourceStream':
Zitat:

Ein Stream, der die Manifestressource darstellt; null (Nothing in Visual Basic), wenn während des Kompilierens keine Ressourcen angegeben wurden oder wenn die Ressource für den Aufrufer nicht sichtbar ist.


Könnte also dann wirklich ein falscher Pfad sein: "Resources" (im englischen nur mit einem s, im deutschen bzw. französischen dagegen mit 2 -)


PersisXS - So 01.08.10 12:07

Ja ist 'inputStream' aber ich habe schon jede logische Möglichkeit wie die Resource heißen könnte ausprobiert.
Bis jetzt leider ohne Erfolg.


Th69 - So 01.08.10 12:42

Schau einfach mal in die zugehörige 'Resources.Designer.cs'...


PersisXS - So 01.08.10 15:26

Jap jetzt läufts. Pfadangabe war falsch^^
Danke