分享
 
 
 

深入剖析Asp.net资源文件

王朝asp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

一、资源文件的定义

简单点的说法就是程序中可以使用的数据,象:字符串,图片或二进制数据等等,实际上可以包含任何类型的文件。

资源文件可以有多个语言版本,这样在开发全球化应用程序时就很重要。这个特性是通过System.Resources空间下的ResourceManager类来完成需要在什么时候调用那个版本的。在VS.NET中将一个文件的属性设置为Embedded Resource就可以使资源被嵌入到Assembly中了。

二、资源文件包含那些类型?

System.Resources 空间支持三种资源文件:。txt 文件,只能有字符串资源。因为不能被嵌入到 Assembly 中,所以很容易暴露,被客户修改。最大缺点是仅支持字符串资源,所以不推荐使用。resx 文件,由 XML 组成,可以加入任何资源,包括二进制。同样不能被嵌入到Assembly 中。在 System.Resources 名字空间中有专用读写的类。VS.NET 创建这种文件然后将其转成 .resources 文件并根据设置将其嵌入到 Assembly 中。。resources 文件,PE格式,可以加入任何资源。唯一可以被嵌入到 Assembly 的文件,在 System.Resources 名字空间中有专用读写的类。

三、怎么调用资源文件?

通常的做法是要将。txt 文件。resx 文件等转化成。resources 文件在通过ResourceManager来进行调用,但是我们也可以不采用那种方式,我觉得比较麻烦,象下面这样做我觉得好些:我们可以不通过一个资源文件而直接将一资源嵌入到 Assembly 中。这可以在 VS.NET 中通过设置一文件的 Build 属性为 Embedded Resource 实现。在这种情况下 ResourceManager 就没有用了,因为它只能获取 .resources 资源文件。那么怎么调用这类的资源呢?我们需要利用一些 Reflection 中的特征。我们只要了解一些 System.Reflection.Assembly 这个类中的一些函数就可以了。有三个相关函数,不过我们只需要 Assembly.GetManifestResourceStream 这个函数。这个函数将一嵌入到Assembly 中的资源以 stream 的方式返回,而我们可以将这个 stream 转成在 .NET 中可用的对象。比如,如果嵌入资源是一图片,那么我们可以利用 New Bitmap(Stream) 这个 Bitmap 的 constructor 获得这个图片资源的 Bitmap 对象;如果我们嵌入的是一文本文件,我们可以使用StreamReader将它的内容读出来。

下面给一个简单的以文本文件为资源的DEMO

step1: 资源文件

将文件嵌入Assembly,上面已说了怎么做

step2: 调用资源文件

public Stream GetEmbeddedResource()

{

return System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ResoureceDemo.test.txt") ;//关键的一句

}//ResoureceDemo.test.txt解释一哈

//ResoureceDemo表示命名空间,test.txt文本文件名称

private void button1_Click(object sender, System.EventArgs e)

{

Stream sResponse;

StreamReader srResponse;

sResponse=GetEmbeddedResource();

srResponse=new StreamReader(sResponse);

string txtDemo=srResponse.ReadToEnd().ToString();

label1.Text =txtDemo;

}

当然,以图片格式的方式也一样的操作。不在举例了,最后有个工具大家不要忘了:resgen.exe 专门用来做资源文件类型之间的转换。支持 .txt <-> .resx <-> .resources 之间的转换。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有