狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#讀取資源文件(DLL/EXE/MDB)的兩種方法及保存資源文件到本地

admin
2021年1月30日 10:10 本文熱度 3213

方法1 GetManifestResourceStream

VB.NET中資源的名稱為:項(xiàng)目默認(rèn)命名空間.資源文件名

C#中則是:項(xiàng)目命名空間.資源文件所在文件夾名.資源文件名 
例如:
istr = assm.GetManifestResourceStream("項(xiàng)目命名空間.資源文件所在文件夾名.資源文件名");

讀取資源文件
注意: 資源文件一定要是 嵌入的資源; 并且資源文件名要帶擴(kuò)展名的

Assembly assm = Assembly.GetExecutingAssembly(); Stream istr = assm.GetManifestResourceStream("CreateDatabase.Resources.aa.txt"); System.IO.StreamReader sr = new System.IO.StreamReader(istr); string str = sr.ReadLine();


方法2 ResourceManager.GetObject("文件名")

讀取資源文件
Assembly myAssem = Assembly.GetEntryAssembly(); ResourceManager rm = new ResourceManager("CreateDatabase.Properties.Resources", myAssem); //CreateDatabase是你程序的命名空間,CreateDatabase.Properties 是資源類Resources的命名空間 // this.pictureBox1.Image = (Image)rm.GetObject("aa"); string str = rm.GetString("aa"); //資源文件名稱不帶擴(kuò)展名

CreateDatabase.Properties 是資源類Resources的命名空間  , 資源文件名稱不帶擴(kuò)展名


 二、C#嵌入dll到資源釋放的問題

有些程序運(yùn)行的時候,可能調(diào)用外部的dll,用戶使用時可能會不小心丟失這些dll,導(dǎo)致程序無法正常運(yùn)行,因此可以考慮將這些dll嵌入到資源中,啟動時自動釋放。對于托管的dll,我們可以用打包軟件合成一個exe(例如利用Imerge),但是對于一些用C++等寫的非托管dll,就比較麻煩。在這種情況下,大家可以考慮本文介紹的方法。

 1、將需要用到的dll文件嵌入資源文件中。

(1)將需要用到的dll文件拷貝到工程中

 

(2)修改“生成操作”為“嵌入的資源”

這樣就完成了dll文件嵌入資源的過程。


2、編寫自動釋放的過程 (保存資源文件到本地)

(1)

void ReleaseDLL() { byte[] byDll = global::命名空間.Properties.Resources.test;//獲取嵌入dll文件的字節(jié)數(shù)組 string strPath = Application.StartupPath + @"\test.dll";//設(shè)置釋放路徑 導(dǎo)出路徑 //創(chuàng)建dll文件(覆蓋模式) using (FileStream fs = new FileStream(strPath, FileMode.Create)) { fs.Write(byDll, 0, byDll.Length); } }

(注意:一定要設(shè)置 嵌入的資源)

  在程序啟動時,首先調(diào)用上面的函數(shù)完成dll文件的釋放,然后程序就能夠正常運(yùn)行了。這種做法只是筆者在實(shí)際項(xiàng)目中有時采用的一種方式,相信對大家也有一定的參考價值。

 

(2)、 我使用這種方式也可以導(dǎo)出,但是導(dǎo)出的文件大小不對,文件損壞了,使用不了

System.Resources.ResourceManager rm = Properties.Resources.ResourceManager; System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); using (FileStream Stream = new FileStream("導(dǎo)出目錄" + "\\test.dll", FileMode.Create))
{   
  bin.Serialize(Stream, rm.GetObject(
"test")); //test.dll名稱
}


該文章在 2021/1/30 10:10:36 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved