C# dll嵌入到exe

C# dll嵌入到exe

开发中常引用一些dll,可以把Dll嵌入到exe,最终只生成一个exe文件,使用起来比较方便,避免不必要的Bug。

实现这个功能,只需要下面简单的步骤:

dll放进资源文件

把dll放进Resources.resx文件中

设置dll的属性

在自动生成的Resources文件夹中设置

主函数初始化时,添加如下内容

代码

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
    var assemblyName = Assembly.GetExecutingAssembly().GetName().Name;
    var nameSpace = assemblyName;
    //一般程序集名称和默认命名空间是一致的,当不一致的时候你可以用下面的方法。
    //var nameSpace = typeof(Program).Namespace;
    var resourceName = string.Format("{0}.Resources.{1}.dll", nameSpace, new AssemblyName(args.Name).Name);
    using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
    {
        if (stream != null)
        {
            var assemblyData = new byte[stream.Length];
            stream.Read(assemblyData, 0, assemblyData.Length);
            return Assembly.Load(assemblyData);
        }
        else
        {
            throw new FileLoadException(resourceName);
        }
    }
};

结束

就是这么简单。orz

dll放在其他文件夹,相同的操作也可以,放在Resources只是为了方便、统一。

打赏