深入剖析Asp.net資源檔

來源:互聯網
上載者:User

  一、資源檔的定義

  簡單點的說法就是程式中可以使用的資料,象:字串,圖片或位元據等等,實際上可以包含任何類型的檔案。

  資源檔可以有多個語言版本,這樣在開發全球化應用程式時就很重要。這個特性是通過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 之間的轉換。

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/octverve/archive/2007/10/12/1822313.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.