起因
作為一個從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 文件,后續就可以跟執行程序一樣的處理了。
總結
目前還沒有用到純粹資源動態庫的方式,等以后用到了再來補充下這種用法的步驟。
