C# 嵌入资源释放

public class Shifang
    {
        public Shifang()
        {
            if (!Directory.Exists(System.Environment.CurrentDirectory + "\\pkconfig\\"))
            {
                Directory.CreateDirectory(System.Environment.CurrentDirectory + "\\pkconfig\\");
                Assembly assembly = Assembly.GetExecutingAssembly();
                foreach (string item in assembly.GetManifestResourceNames())
                {
                    if (item.Contains("resources") || item.Contains("costura"))//过滤掉其他资源
                    {
                        continue;
                    }
                    using (FileStream fs = new FileStream(System.Environment.CurrentDirectory + "\\pkconfig\\" + item.Replace(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + ".pkconfig.", ""), FileMode.OpenOrCreate, FileAccess.ReadWrite))
                    {
                        try
                        {
                            byte[] by = new byte[assembly.GetManifestResourceStream(item).Length];
                            assembly.GetManifestResourceStream(item).Read(by, 0, by.Length);
                            fs.Write(by, 0, by.Length);
                            fs.Flush();
                            fs.Close();
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("释放资源错误");
                        }
                    }
                }
            }
        }
    }

嵌入资源1 可参考
https://blog.csdn.net/u013542549/article/details/52038274

    private void sfresources()
    {
        if (!File.Exists(System.Environment.CurrentDirectory + "\\System.Data.SQLite.dll"))
        {
            FileStream fs1 = new FileStream(System.Environment.CurrentDirectory + "\\System.Data.SQLite.dll", FileMode.Create, FileAccess.ReadWrite);
            try
            {
                fs1.Write(Resources.System_Data_SQLite, 0, Resources.System_Data_SQLite.Length);
                fs1.Flush();
                fs1.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
    }

嵌入资源2

    private Image _glassDownImg = GetImageFormResourceStream("ControlExs.QQControls.QQGlassButton.Image.glassbtn_down.png");
    public static Image GetImageFormResourceStream(string imagePath)
    {
        return Image.FromStream(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + imagePath));
    }

例子

    private void getresources()
    {
        String projectName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name.ToString();
        Stream stmFont = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(projectName + ".Resources" + ".楷体_GB2312.ttf");
        //“楷体_GB2312.ttf”的属性必须以 “嵌入的资源”作为资源文件。设置只需要在对应属性框设置就是了
    }

可参考
https://www.cnblogs.com/lonelyDog/archive/2012/02/16/2354407.html
https://blog.csdn.net/eit520/article/details/51025470

//动态遍历循环一

        ResourceManager resourceManager = new ResourceManager(typeof(Resources));
        ResourceSet resourceSet = resourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentUICulture, true, true);
        foreach (System.Collections.DictionaryEntry item in resourceSet)
        {
            if (item.Value.GetType().Name.Equals("Bitmap"))
            {
                string name = item.Key.ToString();
                object obj = item.Value;
                this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                this.pictureBox1.Image = (Bitmap)obj;
            }
        }

//动态遍历循环二

        //string imagepath = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + "ImageFile";
        Assembly assembly = Assembly.GetExecutingAssembly();
        foreach (string item in assembly.GetManifestResourceNames())
        {
            if (item.Substring(item.LastIndexOf(".") + 1).Equals("jpg"))
            {
                Image obj = Image.FromStream(assembly.GetManifestResourceStream(item));
                this.pictureBox1.Image = (Bitmap)obj;
            }
        }

//动态遍历循环三 类似方法二

        Assembly assembly = Assembly.Load(new System.Reflection.AssemblyName("内嵌资源动态释放"));
        foreach (var item in assembly.GetManifestResourceNames())
        {
            //"内嵌资源动态释放.ImageFile.1.jpg"
            if (item.Substring(item.LastIndexOf(".") + 1).Equals("jpg"))
            {
                Image obj = Image.FromStream(assembly.GetManifestResourceStream(item));
                this.pictureBox1.Image = (Bitmap)obj;
            }
        }
public static string GetCityID(string city)
{
    string retstr = string.Empty;
    //string name = Assembly.GetExecutingAssembly().GetName().Name;
    //string namespc = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace;
    Assembly asm = Assembly.GetExecutingAssembly();
    //var cdm = asm.GetManifestResourceNames();   
    foreach (string c in asm.GetManifestResourceNames() ) 
    {
        if (c.Contains("CityDataMobile.json"))
        {
           
            //var stream1 = asm.GetManifestResourceStream(MethodBase.GetCurrentMethod().DeclaringType.Namespace+ ".CityDataMobile.json");
            var stream2 = asm.GetManifestResourceStream(c);
            using (StreamReader sr = new StreamReader(stream2))
            {
                retstr = sr.ReadToEnd();   
            }
        }
    }
    //JObject.Parse
    return retstr;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
释放内嵌的资源文件到指定位置,你可以使用以下步骤: 1. 确保你的资源文件已经嵌入到了程序集中。可以在 Visual Studio 中的资源文件管理器中确认。 2. 使用 `Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)` 方法获取嵌入资源的流。其中 `resourceName` 是你的资源文件的完整名称,包括命名空间和文件名。 3. 创建一个新的文件流,指定你想要将资源文件释放到的位置。 4. 通过将嵌入资源的流复制到新的文件流中,将资源文件释放到指定位置。你可以使用 `Stream.CopyTo()` 方法来实现这一点。 下面是一个示例代码,展示了如何释放内嵌的资源文件到指定位置: ```csharp using System; using System.IO; using System.Reflection; public class ResourceManager { public static void ExtractResourceToFile(string resourceName, string targetPath) { using (Stream resourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { if (resourceStream == null) { throw new ArgumentException($"Resource '{resourceName}' not found."); } using (FileStream fileStream = File.Create(targetPath)) { resourceStream.CopyTo(fileStream); } } } } ``` 你可以调用 `ResourceManager.ExtractResourceToFile(resourceName, targetPath)` 方法,将资源文件释放到指定位置。其中 `resourceName` 是嵌入资源的完整名称,`targetPath` 是要释放到的目标位置的文件路径。 希望这能帮助到你!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值