有些程序运行的时候, 可能调用外部的 dll, 用户使用时可能会不小心丢失这些 dll, 导致程序无法正常运行, 因此可以考虑将这些 dll 嵌入到资源中, 启动时自动释放对于托管的 dll, 我们可以用打包软件合成一个 exe(例如利用 Imerge), 但是对于一些用 C++ 等写的非托管 dll, 就比较麻烦在这种情况下, 大家可以考虑本文介绍的方法
1 将需要用到的 dll 文件嵌入资源文件中
(1) 将需要用到的 dll 文件拷贝到工程中;
(2) 修改生成操作为嵌入的资源;
这样就完成了 dll 文件嵌入资源的过程
2 编写自动释放的过程
[csharp] view plain copy
- 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 文件的释放, 然后程序就能够正常运行了这种做法只是笔者在实际项目中有时采用的一种方式, 相信对大家也有一定的参考价值
来源: http://www.92to.com/bangong/2018/03-01/33399466.html