Wie kann ich eine Datei aus einer eingebetteten Ressource extrahieren und auf Festplatte speichern?

Ich versuche, den code zu kompilieren unter Verwendung von CSharpCodeProvider. Die Datei wird erfolgreich kompiliert, aber wenn ich auf die generierte EXE Datei, bekomme ich eine Fehlermeldung (Windows ist auf der Suche nach einer Lösung für dieses problem) und nichts passiert.

Wenn ich den code kompilieren unter Verwendung von CSharpCodeProvider, die ich Hinzugefügt habe, die MySql.Data.dll als eingebettete Ressource-Datei mit dieser Zeile code:

if (provider.Supports(GeneratorSupport.Resources))
    cp.EmbeddedResources.Add("MySql.Data.dll");

Die Datei ist erfolgreich eingebettet werden (da bemerkte ich die Größe der Datei erhöht).

Im folgenden code versuche ich zu extrahieren der eingebetteten DLL-Datei und speichern Sie es auf System32, aber der code unten funktioniert nicht aus irgendeinem Grund.

namespace ConsoleApplication1
{
    class Program
    {
        public static void ExtractSaveResource(String filename, String location)
        {
            //Assembly assembly = Assembly.GetExecutingAssembly();
            Assembly a = .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();
        }

        static void Main(string[] args)
        {
            try
            {
                string systemDir = Environment.SystemDirectory;
                ExtractSaveResource("MySql.Data.dll", systemDir);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadKey();
            }
        }
    }
}

Wie kann ich extrahieren Sie die DLL-Datei eingebettet ist, als eine Ressource, und speichern Sie es in System32?

Kommentar zu dem Problem - Öffnen
Rafik, sollten Sie prüfen, Thomas Sapp ' s Antworten, weil es absolut besser als die, die Sie akzeptiert. Kommentarautor: motoDrizzt

InformationsquelleAutor der Frage Rafik Bari | 2012-10-23

Schreibe einen Kommentar