码迷,mamicode.com
首页 > Windows程序 > 详细

C#中内嵌资源的读取

时间:2017-12-20 18:02:07      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:getname   assembly   cti   pos   并且   manifest   string   英文版   length   

起因

作为一个从Cpper转到C#并且直接从事WPF开发的萌新来说,正式编码过程中碰到了不少问题,一路上磕磕碰碰的。因为软件设计需求上的要求,需要将一些配置文件(XML、INI等)内嵌到程序中,等需要时进行读取。找了不少资料,加上自己的连蒙带猜,终于搞定了。在此,乘着还热乎着赶紧记录下。本人用的是Visual Studio 2015 英文版,其实都差不多的。

实现步骤

执行程序中加入内嵌文件步骤

  1. 在执行程序中找到 Resources.resx 并双击,会进入项目属性的 Resources 选项卡中
  2. 在顶部的菜单项中,选择 Add Resource 下拉菜单,根据自己的实际情况新建文件进行编辑或者是加入已经存在的文件。
  3. 在工程中找到刚才新增的文件,选择 Properties ,找到 Build Action 属性,将类型改为 Embedded Resource,然后保存。
  4. 至此文件已经加入到了运行程序内部了。为了方便起见,我这里假设我在 Config 目录下添加了一个 Menus.xml 配置文件。

    编码读取资源

System.Reflection.Assembly Asmb = System.Reflection.Assembly.GetExecutingAssembly();
string strName = Asmb.GetName().Name + ".Config.Menus.xml";
System.IO.Stream ManifestStream = Asmb.GetManifestResourceStream(strName);

byte[] StreamData = new byte[ManifestStream.Length];
ManifestStream.Read(StreamData, 0, (int)ManifestStream.Length);       

这样,内嵌资源中的数据就被读取到了StreamData中,后续可以按照自己的需求进行处理了。

在类库动态库中读取内嵌文件步骤

类库默认是不包含 Resources.resx 文件的,只需要在该类库中添加一个 Resources.resx 文件,后续就可以跟执行程序一样的处理了。

总结

目前还没有用到纯粹资源动态库的方式,等以后用到了再来补充下这种用法的步骤。

C#中内嵌资源的读取

标签:getname   assembly   cti   pos   并且   manifest   string   英文版   length   

原文地址:http://www.cnblogs.com/sanghg/p/8074745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!