zoukankan      html  css  js  c++  java
  • 将dll文件嵌入exe程序

    最近在开发一个安装程序, 需要将dll文件嵌入到exe中, 保证编译出来的程序只有一个 .exe 文件

      1. 首先定义个函数用来动态获取dll文件

    private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
         string resourceName = "MyProject." + new AssemblyName(args.Name).Name + ".dll";
         using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
         {
              byte[] assemblyData = new byte[stream.Length];
              stream.Read(assemblyData, 0, assemblyData.Length);
              return Assembly.Load(assemblyData);
         }
    }

      2. 在Main函数中 添加一行代码, 在程序解析程序集失败事件触发时 调用上面的方法动态加载程序集

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

      3. 将需要嵌入的dll文件添加到工程中 在文件的属性面板中 生成操作属性修改为嵌入资源  否则在exe中将找不到该dll文件 

      

      4. 在项目的应用中仍然需要添加对该 dll文件的应用, 否则编译无法通过 , 但是将引用的dll文件的属性面板中 复制到本地的属性修改为 False, 

      

  • 相关阅读:
    JAVA核心技术笔记总结--第14章 线程总结
    java核心技术笔记——第 9 章 集合
    Java核心技术笔记——第 8 章 泛型
    2.面向对象三大特征
    1.浅谈面向对象思想
    8.字符串
    7.数组
    6.调试程序
    5.流程控制语句
    4.运算符
  • 原文地址:https://www.cnblogs.com/applebox/p/11611551.html
Copyright © 2011-2022 走看看