起因

作为一个从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#中内嵌资源的读取的更多相关文章

  1. ABP官方文档翻译 6.5 内嵌资源文件

    内嵌资源文件 介绍 创建内嵌文件 xproj/project.json形式 csproj形式 添加内嵌资源管理器 使用内嵌视图 使用内嵌资源 ASP.NET Core 配置 忽略文件 重写内嵌文件 介 ...

  2. spring 5.x 系列第20篇 ——spring简单邮件、附件邮件、内嵌资源邮件、模板邮件发送 (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 邮件发送配置类为com.heibaiyin ...

  3. spring 5.x 系列第19篇 ——spring简单邮件、附件邮件、内嵌资源邮件、模板邮件发送 (xml配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 邮件发送配置文件为springApplic ...

  4. [VSTO] 区分MAILITEM的ATTACHMENT是真正的附件还是内嵌资源

    在遍历MailItem的Attachments集合的时候发现,不管是真正的附件还是内嵌资源,比如邮件内容中内嵌的图片(Embedded Image),都是Attachments集合的元素,通过查看at ...

  5. 【转】WebResource实现在自定义控件中内嵌JS文件

    在类库中的资源  其他项目中要使用 需要嵌入才行 参考文献:WebResource实现在自定义控件中内嵌JS文件 1. WebResource简介 ASP.NET(1.0/1.1)给我们提供了一个开发 ...

  6. APP中内嵌H5页面为什么不能下载?

    在APP中内嵌H5页面,若页面上存在下载链接,没有任何反应,为什么呢? 原因是app中内嵌的H5页面是WebView解析的,什么是WebView呢? 在Android手机中内置了一款高性能webkit ...

  7. Unity中内嵌网页插件UniWebView

    一.常见Unity中内嵌网页实现方式: 1.UnityWebCore只支持windows 2.Unity-Webview支持Android,IOS 3.UniWebView支持mac os,Andro ...

  8. Winform/WPF中内嵌BeetleX的HTTP服务

    在新版本的BeetleX.FastHttpApi加入了对netstandard2.0支持,如果程序基于.NetFramework4.6.1来构建WinForm或WPF桌面程序的情况下可以直接把Beet ...

  9. GCC在C语言中内嵌汇编 asm __volatile__ 【转】

    转自:http://blog.csdn.net/pbymw8iwm/article/details/8227839 在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达 ...

随机推荐

  1. python列表三

    >>> list1 = [123]>>> list2 =[234]>>> list1 > list2False>>> li ...

  2. 《You dont know JS》值相关总结

    值 一:和数组相关的几个需要关注的点 数组可以容纳任何类型的值. 数组声明时不需要预先设置大小.可以动态改变. 使用delete运算符可以将数组中的某个元素删除,但是这个操作不会改变数组的length ...

  3. ngRx 官方示例分析 - 5. components

    组件通过标准的 Input 和 Output 进行操作,并不直接访问 store. /app/components/book-authors.ts import { Component, Input ...

  4. PostgreSQL9.6.2的WINDOWS下安装

    下载链接:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows 安装链接:http://www.cn ...

  5. Java数据持久层框架 MyBatis之API学习九(SQL语句构建器详解)

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

  6. 5dfda1332b67817b0f2d7839242021ce'Java数据结构和算法

    1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 "if else" 判断null ...

  7. 深入浅出讲解:php的socket通信[转]

    对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1.         什么是TCP/IP.UDP?2.         Sock ...

  8. 在 Tomcat 上配置虚拟主机

    .Tomcat 服务器的server.xml文件   (1)Tomcat 组件 Tomcat服务器是由一系列可配置的组件构成,其中核心组件是 Catalina Servlet 容器,它是所有其他 To ...

  9. Java的IO系统

     Java IO系统     "对语言设计人员来说,创建好的输入/输出系统是一项特别困难的任务."     由于存在大量不同的设计方案,所以该任务的困难性是很容易证明的.其中最大的 ...

  10. tcpdump 使用

    例子: 首先切换到root用户 tcpdump -w  aaa.cap   -i eth7   -nn -x  'port  9999'  -c  1 以例子说明参数: -w:输出到文件aaa.cap ...