国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

深入剖析Asp.net資源文件

2024-07-10 13:11:06
字體:
供稿:網(wǎng)友

  一、資源文件的定義

  簡單點(diǎn)的說法就是程序中可以使用的數(shù)據(jù),象:字符串,圖片或二進(jìn)制數(shù)據(jù)等等,實(shí)際上可以包含任何類型的文件。

  資源文件可以有多個(gè)語言版本,這樣在開發(fā)全球化應(yīng)用程序時(shí)就很重要。這個(gè)特性是通過system.resources空間下的resourcemanager類來完成需要在什么時(shí)候調(diào)用那個(gè)版本的。在vs.net中將一個(gè)文件的屬性設(shè)置為embedded resource就可以使資源被嵌入到assembly中了。

  二、資源文件包含那些類型?

  system.resources 空間支持三種資源文件:。txt 文件,只能有字符串資源。因?yàn)椴荒鼙磺度氲?assembly 中,所以很容易暴露,被客戶修改。最大缺點(diǎn)是僅支持字符串資源,所以不推薦使用。resx 文件,由 xml 組成,可以加入任何資源,包括二進(jìn)制。同樣不能被嵌入到assembly 中。在 system.resources 名字空間中有專用讀寫的類。vs.net 創(chuàng)建這種文件然后將其轉(zhuǎn)成 .resources 文件并根據(jù)設(shè)置將其嵌入到 assembly 中。。resources 文件,pe格式,可以加入任何資源。唯一可以被嵌入到 assembly 的文件,在 system.resources 名字空間中有專用讀寫的類。

  三、怎么調(diào)用資源文件?

  通常的做法是要將。txt 文件。resx 文件等轉(zhuǎn)化成。resources 文件在通過resourcemanager來進(jìn)行調(diào)用,但是我們也可以不采用那種方式,我覺得比較麻煩,象下面這樣做我覺得好些:我們可以不通過一個(gè)資源文件而直接將一資源嵌入到 assembly 中。這可以在 vs.net 中通過設(shè)置一文件的 build 屬性為 embedded resource 實(shí)現(xiàn)。在這種情況下 resourcemanager 就沒有用了,因?yàn)樗荒塬@取 .resources 資源文件。那么怎么調(diào)用這類的資源呢?我們需要利用一些 reflection 中的特征。我們只要了解一些 system.reflection.assembly 這個(gè)類中的一些函數(shù)就可以了。有三個(gè)相關(guān)函數(shù),不過我們只需要 assembly.getmanifestresourcestream 這個(gè)函數(shù)。這個(gè)函數(shù)將一嵌入到assembly 中的資源以 stream 的方式返回,而我們可以將這個(gè) stream 轉(zhuǎn)成在 .net 中可用的對(duì)象。比如,如果嵌入資源是一圖片,那么我們可以利用 new bitmap(stream) 這個(gè) bitmap 的 constructor 獲得這個(gè)圖片資源的 bitmap 對(duì)象;如果我們嵌入的是一文本文件,我們可以使用streamreader將它的內(nèi)容讀出來。

  下面給一個(gè)簡單的以文本文件為資源的demo

  step1: 資源文件
  將文件嵌入assembly,上面已說了怎么做
  step2: 調(diào)用資源文件
public stream getembeddedresource()
{
return system.reflection.assembly.getexecutingassembly().getmanifestresourcestream("resourecedemo.test.txt") ;//關(guān)鍵的一句
}//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;
}

  當(dāng)然,以圖片格式的方式也一樣的操作。不在舉例了,最后有個(gè)工具大家不要忘了:resgen.exe 專門用來做資源文件類型之間的轉(zhuǎn)換。支持 .txt <-> .resx <-> .resources 之間的轉(zhuǎn)換。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 萝北县| 兰西县| 武冈市| 泊头市| 清徐县| 静宁县| 吉木乃县| 谷城县| 临沂市| 昌宁县| 洪雅县| 格尔木市| 田林县| 高州市| 青冈县| 涪陵区| 克东县| 封丘县| 平远县| 岗巴县| 玛纳斯县| 金平| 二手房| 乌鲁木齐市| 柘荣县| 威海市| 张家界市| 恭城| 嘉荫县| 二连浩特市| 松潘县| 扎兰屯市| 涟水县| 平舆县| 多伦县| 望都县| 鲜城| 军事| 开鲁县| 伊吾县| 西青区|