title: How to Read an embedded resource as array of bytes without writing it to disk?
body: <p>In my application I compile another program from source.cs file using CodeDom.Compiler and I embed some resources ( exe and dll files ) at compile time using :</p>
  
  <pre><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></pre>
  
  <p>In the compiled file, I need to read the embedded resources as array of bytes. Now I'm doing that by extracting the resources to disk using the function below and the use   </p>
  
  <pre><code>File.ReadAllBytes("extractedfile.exe");
  File.ReadAllBytes("extracteddll.dll");
  </code></pre>
  
  <p>I do this after extracting the two files to disk using this function : </p>
  
  <pre><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></pre>
  
  <p>How can I do the same thing (Get the embedded resources as array of bytes) but without writing anything to hard disk?</p>