C#将dll打包进exe

用VS建立一个windows项目,取名test,引用dll文件
编写代码,正常引用dll里的类库,同时在test项目添加资源文件(该文件就是刚才引用的dll文件),VS会自动生成引用代码,这里引用IrisSkin2.dll

internal static byte[] IrisSkin2 ...{  
            get ...{  
                object obj = ResourceManager.GetObject("IrisSkin2", resourceCulture);  
                return ((byte[])(obj));  
            }  
        }  

然后在Main(program.cs)函数里加入代码

static void Main()  
        ...{  
            Application.EnableVisualStyles();  
            Application.SetCompatibleTextRenderingDefault(false);  

            string path = Application.StartupPath + "\";  
            string dllFileName = "IrisSkin2.dll";  
            //******加载IrisSkin2.dll******  
            if (!File.Exists(path + dllFileName))   //文件不存在  
            ...{  
                FileStream fs = new FileStream(path + dllFileName, FileMode.CreateNew, FileAccess.Write);  
                byte[] buffer = GetData.Properties.Resources.IrisSkin2;//{GetData是命名空间}  
                fs.Write(buffer, 0, buffer.Length);  
                fs.Close();  
            }  
            //*****************************  

            Application.Run(new GDForm());  
        }  

编译test项目,生成exe文件,然后删除引用的dll文件(注意是先编译,再删除),复制该exe文件就可以在别的地方运行了(不用dll,运行EXE会自动生成DLL文件)