Jak mogę wyodrębnić plik z osadzonego zasobu i zapisać go na dysku?

Próbuję skompilować poniższy kod za pomocą CSharpCodeProvider. Plik został pomyślnie skompilowany, ale po kliknięciu wygenerowanego pliku EXE pojawia się błąd (system Windows szuka rozwiązania tego problemu) i nic się nie dzieje.

Kiedy kompiluję poniższy kod za pomocą CSharpCodeProvider, dodałemMySql.Data.dll jako osadzony plik zasobów przy użyciu tego wiersza kodu:

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

Plik został pomyślnie osadzony (ponieważ zauważyłem zwiększenie rozmiaru pliku).

W poniższym kodzie próbuję wyodrębnić osadzony plik DLL i zapisać go w System32, ale poniższy kod nie działa z jakiegoś powodu.

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();
            }
        }
    }
}

Jak mogę wyodrębnić plik DLL osadzony jako zasób i zapisać go w System32?

questionAnswers(6)

yourAnswerToTheQuestion