Wie kann ich eine eingebettete Ressource als Array von Bytes lesen, ohne sie auf die Festplatte zu schreiben?

In meiner Anwendung kompiliere ich ein anderes Programm aus der Datei source.cs mit CodeDom.Compiler und binde beim Kompilieren einige Ressourcen (exe- und dll-Dateien) ein mit:

<code> // .... rest of code

if (provider.Supports(GeneratorSupport.Resources))
{
    cp.EmbeddedResources.Add("MyFile.exe");
}
if (provider.Supports(GeneratorSupport.Resources))
{
    cp.EmbeddedResources.Add("New.dll");
}
// ....rest of code 
</code>

In der kompilierten Datei muss ich die eingebetteten Ressourcen als Array von Bytes lesen. Dazu extrahiere ich die Ressourcen mithilfe der folgenden Funktion und der Verwendung auf die Festplatte

<code>File.ReadAllBytes("extractedfile.exe");
File.ReadAllBytes("extracteddll.dll");
</code>

Ich mache das, nachdem ich die beiden Dateien mit dieser Funktion auf die Festplatte extrahiert habe:

<code>public static void ExtractSaveResource(String filename, String location)
{
    //  Assembly assembly = Assembly.GetExecutingAssembly();
    System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
    // Stream stream = assembly.GetManifestResourceStream("Installer.Properties.mydll.dll"); // or whatever 
    // string my_namespace = a.GetName().Name.ToString();
    Stream resFilestream = a.GetManifestResourceStream(filename);
    if (resFilestream != null)
    {
        BinaryReader br = new BinaryReader(resFilestream);
        FileStream fs = new FileStream(location, FileMode.Create); // say 
        BinaryWriter bw = new BinaryWriter(fs);
        byte[] ba = new byte[resFilestream.Length];
        resFilestream.Read(ba, 0, ba.Length);
        bw.Write(ba);
        br.Close();
        bw.Close();
        resFilestream.Close();
    }
    // this.Close(); 
}
</code>

Wie kann ich dasselbe tun (die eingebetteten Ressourcen als Array von Bytes abrufen), ohne etwas auf die Festplatte zu schreiben?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage