C#读取资源文件的两种方法及保存资源文件到本地
方法1 GetManifestResourceStream
VB.NET中资源的名称为:项目默认命名空间.资源文件名
C#中则是:项目命名空间.资源文件所在文件夹名.资源文件名
例如:
istr = assm.GetManifestResourceStream("项目命名空间.资源文件所在文件夹名.资源文件名");
读取资源文件
注意: 资源文件一定要是 嵌入的资源; 并且资源文件名要带扩展名的
Assembly assm = Assembly.GetExecutingAssembly();
Stream istr = assm.GetManifestResourceStream("CreateDatabase.Resources.aa.txt");
System.IO.StreamReader sr = new System.IO.StreamReader(istr);
string str = sr.ReadLine();
方法2 ResourceManager.GetObject("文件名")
读取资源文件
Assembly myAssem = Assembly.GetEntryAssembly();
ResourceManager rm = new ResourceManager("CreateDatabase.Properties.Resources", myAssem);
//CreateDatabase是你程序的命名空间,CreateDatabase.Properties 是资源类Resources的命名空间
// this.pictureBox1.Image = (Image)rm.GetObject("aa");
string str = rm.GetString("aa"); //资源文件名称不带扩展名
CreateDatabase.Properties 是资源类Resources的命名空间 , 资源文件名称不带扩展名
二、C#嵌入dll到资源释放的问题
有些程序运行的时候,可能调用外部的dll,用户使用时可能会不小心丢失这些dll,导致程序无法正常运行,因此可以考虑将这些dll嵌入到资源中,启动时自动释放。对于托管的dll,我们可以用打包软件合成一个exe(例如利用Imerge),但是对于一些用C++等写的非托管dll,就比较麻烦。在这种情况下,大家可以考虑本文介绍的方法。
1、将需要用到的dll文件嵌入资源文件中。
(1)将需要用到的dll文件拷贝到工程中;

(2)修改“生成操作”为“嵌入的资源”;

这样就完成了dll文件嵌入资源的过程。
2、编写自动释放的过程 (保存资源文件到本地)
(1)
void ReleaseDLL()
{
byte[] byDll = global::命名空间.Properties.Resources.test;//获取嵌入dll文件的字节数组
string strPath = Application.StartupPath + @"\test.dll";//设置释放路径 导出路径
//创建dll文件(覆盖模式)
using (FileStream fs = new FileStream(strPath, FileMode.Create))
{
fs.Write(byDll, , byDll.Length);
}
}
(注意:一定要设置 嵌入的资源)
在程序启动时,首先调用上面的函数完成dll文件的释放,然后程序就能够正常运行了。这种做法只是笔者在实际项目中有时采用的一种方式,相信对大家也有一定的参考价值。
(2)、 我使用这种方式也可以导出,但是导出的文件大小不对,文件损坏了,使用不了
System.Resources.ResourceManager rm = Properties.Resources.ResourceManager;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
using (FileStream Stream = new FileStream("导出目录" + "\\test.dll", FileMode.Create))
{
bin.Serialize(Stream, rm.GetObject("test")); //test.dll名称
}
C#读取资源文件的两种方法及保存资源文件到本地的更多相关文章
- [转载]C#读写txt文件的两种方法介绍
C#读写txt文件的两种方法介绍 by 大龙哥 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char ...
- C#读写txt文件的两种方法介绍
C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...
- elf格式转换为hex格式文件的两种方法
这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次 ...
- C#读写txt文件的两种方法介绍[转]
C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...
- C#读写txt文件的两种方法介绍 v
C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- MySQL命令执行sql文件的两种方法
MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希 ...
- spring 配置文件 引入外部的property文件的两种方法
spring 的配置文件 引入外部的property文件的两种方法 <!-- 引入jdbc配置文件 方法一 --> <bean id="propertyConfig ...
- 合并BIN文件的两种方法(转)
源:http://blog.chinaunix.net/uid-20745340-id-1878803.html 合并BIN文件的两种方法 在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一 ...
随机推荐
- 替换掉 in的like操作
select * from t_unit where '410300060025,410300004005,410300998851,' like '%'+ltrim(rtrim(unitcode)) ...
- 爬虫:Scrapy3 - Items
Item 对象是种简单的容器,保存了爬取到得数据.其提供了类似于词典(dictionary-like)的API以及用于声明可用字段的简单语法. 声明Item import scrapy class P ...
- wcf获取最新版本之后自己的东西没了
大概意思,点击显示所有文件,然后在那些文件上右击 包括在项目中就行了 图呢.......我当时添加进来的图呢
- P2846 [USACO08NOV]光开关Light Switching
题目描述 Farmer John tries to keep the cows sharp by letting them play with intellectual toys. One of th ...
- BZOJ3720 Gty的妹子树 【树分块】
题目 我曾在弦歌之中听过你, 檀板声碎,半出折子戏. 舞榭歌台被风吹去, 岁月深处尚有余音一缕-- Gty神(xian)犇(chong)从来不缺妹子-- 他来到了一棵妹子树下,发现每个妹子有一个美丽度 ...
- BZOJ3612 [Heoi2014]平衡 整数划分
[Heoi2014]平衡 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 348 Solved: 273[Submit][Status][Discus ...
- python安装matplotlib
linux安装 方法: 首先matplotlib是需要numpy先行包支持的,这里,我已经安装了numpy,下面安装matplotlib. matplot需要一些其他软件支持 (1)这时需要安装fre ...
- Nim积
假如把Nim游戏的取胜规则改为谁取走最后一个石子谁输的话 先手必胜当且仅当: 1.所有堆的石子数都为1且游戏的SG值为0 2.有些堆的石子数大于1且游戏的SG值不为0
- PE笔记之DOS头
IMAGE_DOS_HEADER STRUCT { +0h WORD e_magic // Magic DOS signature MZ(4Dh 5Ah) DOS可执行文件标记 +2h ...
- [Oracle] 某游戏大区DB IO负载过高分析
某游戏大区DB IO负载过高分析 [问题] 下图信息看出机器IO负载过高, IO使用率: 平均值 50%, 峰值 98%, 业务高峰时间段(19:00-22:00)IO使用率持续80%以上. [分析] ...