標籤:getname assembly cti pos 並且 manifest string 英文版 length
起因
作為一個從Cpper轉到C#並且直接從事WPF開發的萌新來說,正式編碼過程中碰到了不少問題,一路上磕磕碰碰的。因為軟體設計需求上的要求,需要將一些設定檔(XML、INI等)內嵌到程式中,等需要時進行讀取。找了不少資料,加上自己的連蒙帶猜,終於搞定了。在此,乘著還熱乎著趕緊記錄下。本人用的是Visual Studio 2015 英文版,其實都差不多的。
實現步驟執行程式中加入內嵌檔案步驟
- 在執行程式中找到 Resources.resx 並雙擊,會進入項目屬性的 Resources 選項卡中
- 在頂部的功能表項目中,選擇 Add Resource 下拉式功能表,根據自己的實際情況建立檔案進行編輯或者是加入已經存在的檔案。
- 在工程中找到剛才新增的檔案,選擇 Properties ,找到 Build Action 屬性,將類型改為 Embedded Resource,然後儲存。
至此檔案已經加入到了運行程式內部了。為了方便起見,我這裡假設我在 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#中內嵌資源的讀取