從資源檔裡負載檔案或讀取資源(C#)

來源:互聯網
上載者:User

從資源檔裡負載檔案(C#)

 

用途:

1.       在進行多國語言化的時候.( 通常把不同翻譯的文字存放到資源套件裡.)

2.       將圖片打包進DLL的時候(icon等,自訂控制項..)

 

資源檔格式: .resx||.resources

打包資源檔:

  System.Resources.ResourceWriter rw = new ResourceWriter(@"../../abc.resources");

     rw.AddResource("abc", new byte[10000000]);

     rw.Generate();

     rw.Close();

說明:

建立一個ResourceWriter的對象用於寫資源檔。檔案的尾碼名必須是.resources,不讓其它的系統無法識別。然後是通過AddResource的方法寫資源資訊,這個資訊可以是一個字串,也可以是一個byte數組,甚至可以是一個對象(image)。添加好以後就是Generate和close了。這樣運行程式後,資源檔就製作完成了。

如果不需要把這個資源檔打包到exe程式或者dll程式裡面,可以使用System.Resources.ResourceReader讀取資源檔資訊。

 

擷取資源檔

資源檔打包好以後,下一步是把資源檔整合到項目裡。方法有兩個,一個是用控制台的方式編譯項目,通過載入資源檔的方式把資源載入到exe裡,另外一個簡單很多,就是把直接把資源檔載入到工程裡,vs會根據尾碼名識別出來載入的檔案屬於資源檔,在進行編譯的時候會自動把這個檔案打包到資源檔裡。如果編譯後發現資源檔沒有加到exe檔案,可以設定資源檔的屬性,把Build Action的屬性設定為Embedded Resource。

 

在當前項目中讀取資源:

this.Icon = Properties.Resources.exeIcon;||

this.Text = Resource1.String1.ToString();//主要是字串

 

資源檔成功加到exe檔案後,下一步就是在程式裡讀取資源檔。

System.Resources.ResourceManager rm = new System.Resources.ResourceManager("Resunce.abc", this.GetType().Assembly);

byte[] bit = rm.GetObject("abc") as byte[];

  

說明:

通常是建立一個ResourceManager的對象,第一個參數是資源的名字,這裡要注意的是“Resunce”是編譯的時候,組件(命名空間)名字,“abc”是資源檔的名字。如果前面不是通過VS的工程檔案進行編譯,而是通過控制台方式直接編譯,那麼資源的名字不需要帶組件的名字,只是“abc”就可以了。原因嗎,我估計可能是vs在進行編譯的時候,帶了某些參數(確定了組件名),所以在項目讀取資源檔的時候需要帶組件名。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.