C# 加载dll时复制资源图标

C# 加载dll时复制资源图标,c#,C#,我有一个C#程序集,其中有一个包含图标的资源文件。如何将每次加载时的资源复制到调用方目录。编译程序集时,它可以很好地复制…但我需要在每次加载程序集时进行复制,以便调用的可执行文件可以使用它。(可执行文件卸载时,资源文件夹会被删除)您可以嵌入资源文件,并在每次加载程序集时将其写入。 在visual studio解决方案资源管理器的文件属性中,将资源文件设置为具有等于“嵌入资源”的“生成操作” 然后你可以用这样的东西来解包: private static string _srvExe

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

您可以嵌入资源文件,并在每次加载程序集时将其写入。 在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);
        }

在以下位置获取null:Stream s1=Assembly.getExecutionGassembly().GetManifestResourceStream(assmblyname+“+resourcefile);添加:string[]resourceNames=Assembly.GetExecutionGassembly().GetManifestResourceNames();您需要将文件名的格式设置为“assemblyname.filename”,程序集名称上没有路径。您是否将资源文件属性设置为“嵌入式资源”?似乎找不到嵌入的文件。看看这里的所有设置…没有我的完整名称空间…感谢它的工作。你能选择它作为正确答案吗?谢谢