C#中內嵌資源的讀取

來源:互聯網
上載者:User

標籤:getname   assembly   cti   pos   並且   manifest   string   英文版   length   

起因

作為一個從Cpper轉到C#並且直接從事WPF開發的萌新來說,正式編碼過程中碰到了不少問題,一路上磕磕碰碰的。因為軟體設計需求上的要求,需要將一些設定檔(XML、INI等)內嵌到程式中,等需要時進行讀取。找了不少資料,加上自己的連蒙帶猜,終於搞定了。在此,乘著還熱乎著趕緊記錄下。本人用的是Visual Studio 2015 英文版,其實都差不多的。

實現步驟執行程式中加入內嵌檔案步驟
  1. 在執行程式中找到 Resources.resx 並雙擊,會進入項目屬性的 Resources 選項卡中
  2. 在頂部的功能表項目中,選擇 Add Resource 下拉式功能表,根據自己的實際情況建立檔案進行編輯或者是加入已經存在的檔案。
  3. 在工程中找到剛才新增的檔案,選擇 Properties ,找到 Build Action 屬性,將類型改為 Embedded Resource,然後儲存。
  4. 至此檔案已經加入到了運行程式內部了。為了方便起見,我這裡假設我在 Config 目錄下添加了一個 Menus.xml 設定檔。

    編碼讀取資源
System.Reflection.Assembly Asmb = System.Reflection.Assembly.GetExecutingAssembly();string strName = Asmb.GetName().Name + ".Config.Menus.xml";System.IO.Stream ManifestStream = Asmb.GetManifestResourceStream(strName);byte[] StreamData = new byte[ManifestStream.Length];ManifestStream.Read(StreamData, 0, (int)ManifestStream.Length);       

這樣,內嵌資源中的資料就被讀取到了StreamData中,後續可以按照自己的需求進行處理了。

在類庫動態庫中讀取內嵌檔案步驟

類庫預設是不包含 Resources.resx 檔案的,只需要在該類庫中添加一個 Resources.resx 檔案,後續就可以跟執行程式一樣的處理了。

總結

目前還沒有用到純粹資源動態庫的方式,等以後用到了再來補充下這種用法的步驟。

C#中內嵌資源的讀取

聯繫我們

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