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

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

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

將資源文件打包成fat鏡像_正常運行

 

 

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

將資源文件打包成fat鏡像_將資源文件打包成fat鏡像_02

 

 

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

      2、編寫自動釋放的過程

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

       在程序啓動時,首先調用上面的函數完成dll文件的釋放,然後程序就能夠正常運行了。這種做法只是筆者在實際項目中有時採用的一種方式,相信對大家也有一定的參考價值。