C# 如何把动态链接库DLL文件打包进去EXE文件里面

第一步:引用

先引用你的宝贝库DLL:
C# 如何把动态链接库DLL文件打包进去EXE文件里面_第1张图片

第二步:创建Resourses文件夹

一般来说往Rex文件添加一张图片或者文本文件就能引诱他自动创建的。

C# 如何把动态链接库DLL文件打包进去EXE文件里面_第2张图片

第三步:引入DLL作为资源文件

C# 如何把动态链接库DLL文件打包进去EXE文件里面_第3张图片此时,得到:
在这里插入图片描述
然后,点击他,更改类型,非常重要此步!!!!
C# 如何把动态链接库DLL文件打包进去EXE文件里面_第4张图片
改成嵌入的资源

第四步:写代码

创建一个DLLClass类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace InstallUninstall
{
    class DllClass
    {
        public static void LoadResourceDll()
        {
            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
        }

        private static 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;
            string Namespace = Assembly.GetEntryAssembly().GetTypes()[0].Namespace;
            System.Resources.ResourceManager rm = new System.Resources.ResourceManager(Namespace + ".Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly());
            byte[] bytes = (byte[])rm.GetObject(dllName);
            return System.Reflection.Assembly.Load(bytes);
        }

    }
}

然后再Program.cs的程序入口加上:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace InstallUninstall
{
    static class Program
    {

        /// 
        /// 应用程序的主入口点。
        /// 
        [STAThread]
        static void Main()
        {           
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            DllClass.LoadResourceDll();//加上这个
            Application.Run(new MASM_SCAU_installFrm());
        }
    }
}

大功告成!!嘿嘿

你可能感兴趣的:(个人杂记)