在DLL加载上复制资源图标

时间:2014-04-16 17:03:42

标签: c#

我有一个C#程序集,其中包含一个包含图标的资源文件。如何将每次加载的资源复制到调用者目录。当我编译程序集时,它复制正常...但我需要复制程序集的每个负载,以便调用可执行文件可以使用它。(可执行文件卸载时资源文件夹被删除)

1 个答案:

答案 0 :(得分:0)

您可以嵌入资源文件,并在每次加载程序集时将其写出来。 将资源文件设置为" Build Action"等于"嵌入式资源"在visual studio解决方案资源管理器的文件属性中。

然后你可以用这样的东西解压缩它:

        private static string _srvExePath;
        private static void UnpackFiles()
        {
            if (!Directory.Exists(_srvExePath))
            {
                Directory.CreateDirectory(_srvExePath);
            }

            Stream s1 = Assembly.GetExecutingAssembly().GetManifestResourceStream( assmblyname +"."+ resourcefile);
            byte[] b1 = new byte[s1.Length];
            s1.Read(b1, 0, (int)s1.Length);

            File.WriteAllBytes(_srvExePath + file, b1);
            //Console.WriteLine("unpacking: " + _srvExePath + file);
        }