Welcome

首页 / 软件开发 / .NET编程技术 / 嵌入Dll到.net程序中的方法

嵌入Dll到.net程序中的方法2012-03-06 博客园 airwolf2026我们经常会写一些小程序给自己或者他人用,而这些程序时长又会去引用一些第三方的Dll,比如开源的 ICSharpCode.SharpZipLib.dll等,为了让程序保持整洁,或者给对方的时候方便,就想把这些dll给嵌入到EXE中去,这样在不打包的情况下,只要丢一个文件给对方就能用了.最近研究了下可行性,目前有如下两种方法:

方法1:把相关的第三方dll作为程序资源嵌入到EXE中,在程序运行的时候,从资源文件中输出到程序执行目录即可

(图1:示例项目,ThirdPartydlldemo.dll作为第三方资源.Build Action属性设置为" Embedded Resource")

然后在Program.cs里面声明个静态构造函数,在该方法里面把第三方dll输出到程序目录,这样在调用第三方dll方法的时候,相关环境已经初始化完毕了.

1: private static void ExtractResourceToFile(string resourceName, string filename)
2: {
3: if (!System.IO.File.Exists(filename))
4: using (System.IO.Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
5: usng (System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Create))
6: {
7: byte[] b = new byte[s.Length];
8: s.Read(b, 0, b.Length);
9: fs.Write(b, 0, b.Length);
10: }
11: }

1: static Program()
2: {
3: ExtractResourceToFile("EmbeddedDLL2ExeDemo.ThirdPartyDllDemo.dll",
4: "ThirdPartyDllDemo.dll");
5: }

这样就ok了.