当前位置: 首页 > article >正文

使用程序集解析的方式内嵌dll到exe中

选择一个项目(demo3),来进行内嵌。正常dll文件是可以在Bin–Debug里面看到的。

在这里插入图片描述

在Program里面添加内容

在这里插入图片描述

Program.cs里的全部代码

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

namespace demo3
{
    internal static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

        private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            string _resName = Assembly.GetExecutingAssembly().GetName().Name + ".Lib." + new AssemblyName(args.Name).Name + ".dll";
            using (var _stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(_resName))
            {
                byte[] _data = new byte[_stream.Length];
                _stream.Read(_data, 0, _data.Length);
                return Assembly.Load(_data);
            }

        }
    }
}

需要把dll的属性设置为不复制和嵌入的资源

在这里插入图片描述

将引用里的相同dll文件,复制本地改为false。

在这里插入图片描述

右击demo3,选择清理。清理一下。

在这里插入图片描述

运行之后,串口是打开的。

在这里插入图片描述

可以在文件夹里看到dll文件已经被嵌入到exe中了

在这里插入图片描述

如有错误请指正!!


http://www.kler.cn/news/303236.html

相关文章:

  • #名词区别篇:npx pnpm npm yarn区别
  • gitlab无法push(pre-receive hook declined)
  • 如何使用 Choreographer 进行帧率优化
  • 旅游网站开发:SpringBoot框架实战
  • 观察者模式与hook机制的联系
  • Java面试篇基础部分-Java序列化
  • 高性能缓存利器:Caffeine 在 Spring Boot 中的应用
  • 快速完成论文初稿写作的ChatGPT提示词分享
  • 怎样将vue项目 部署在ngixn的子目录下
  • linux环境下手动安装mysql
  • holynix靶机详解
  • PROTOTYPICAL II - The Practice of FPGA Prototyping for SoC Design
  • 【ShuQiHere】快速排序(Quick Sort):揭开高效排序算法的神秘面纱
  • 观察者模式observer
  • pdf 转 jpg
  • 黑马点评15——分布式缓存-Redis分片集群
  • C文件操作
  • Sentinel 使用案例详细教程
  • K8S - Volume - NFS 卷的简介和使用
  • SpringBoot - 入门
  • 【WPF】Popup的使用
  • IO中断原理浅析
  • 分销系统架构文档
  • OpenGL(三)着色器语言GLSL
  • 深度学习速通系列:依存分析
  • 了解计算机安全性【技术、管理与法律】
  • 如何用 OBProxy 实现 OceanBase 的最佳路由策略
  • 算法类学习笔记 ———— 障碍物检测
  • 如何使用Visual Studio的内存诊断工具进行内存泄漏检测
  • 今年的智能手机不仅仅是AI