C#将DLL嵌入整合reference到成为独立exe打包 - LiberXue|FullStack|独立开发者|jekyll blog|GitHub blog

# C#将DLL嵌入整合reference到成为独立exe打包

发布时间：2017-03-15 00:00:00 博客分类: csharp 阅读次数: comments
打包 (1) dll (1) c# (5) reference (1)

# C#将DLL嵌入整合reference到成为独立exe打包

2017-03-15 00:00:00

打包 (1) dll (1) c# (5) reference (1)

> 动态加载程序集时有时引用的程序集会有依赖项，就会报各种异常； 在网上搜索了很久,终于找到了解决方法,不废话如下. 先把DLL放进资源库里,然后在dll属性里面的BuildAction选择Embedded Resource. 接着在References里面直接引用你要的dll. 接下来把下面的代码放在你要执行的类里面:

    System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
           {
               string dllName = args.Name.Contains(",") ? args.Name.Substring(0, args.Name.IndexOf(‘,‘)) : args.Name.Replace(".dll", "");

               dllName = dllName.Replace(".", "_");

               if (dllName.EndsWith("_resources")) return null;

               System.Resources.ResourceManager rm = new System.Resources.ResourceManager(GetType().Namespace + ".Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly());

               byte[] bytes = (byte[])rm.GetObject(dllName);

               return System.Reflection.Assembly.Load(bytes);
           }
    　　　　public Form1()//看清楚这是窗体本来的初始化函数
           {
                //在InitializeComponent()之前调用

        　　　　 AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
                InitializeComponent();
           }
           }

本文由 liberxue 创作，采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外，均为本站原创或翻译，转载前请务必署名
最后编辑时间为:2017-03-15 00:00:00