【C#】Winform嵌入dll到exe中
【C#】Winform嵌入dll到exe中
零、问题
最近在做一个上位机,需要保存数据,所以引用了一些Excel的组件,但是比较麻烦的是会多出几个DLL文件,压缩打包不方便使用,于是想能不能嵌入到exe中,只生成一个文件?
一、解决方案
找到生成的exe和dll,把用到的dll复制添加到项目里。
比如我的输出目录:

把这三个复制出来,放到工程里:

比如我的,我是放在项目的res文件夹下的lib文件夹里的,记住这个路径。
接下来设置一下这几个dll,把生成操作设置为“嵌入的资源”:

然后在主界面里添加如下代码:
namespace RespiratorMonitor
{
public partial class RMMainForm : Form
{
public RMMainForm()
{
// 监听载入资源
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
InitializeComponent();
}
/// <summary>
/// 动态加载资源
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
/// <returns></returns>
private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
//默认命名空间+文件夹名+.[注意]
string resourceName = "RespiratorMonitor.res.lib." + new AssemblyName(args.Name).Name + ".dll";
// LogHelper.Debug("在加载资源:" + resourceName);
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
if (stream != null)
{
byte[] assemblyData = new byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
return null;
}
}
}
}
注意第23行,是默认命名空间.文件夹.文件夹.+后面的代码,我的默认命名空间是RespiratorMonitor,文件相对路径是res\lib
//默认命名空间+文件夹名+.
string resourceName = "RespiratorMonitor.res.lib." + new AssemblyName(args.Name).Name + ".dll";
- 默认命名空间可以右键项目,属性,应用程序中看到。
二、效果
成功只生成一个文件,复制时只需要复制.exe文件就可以了。
三、参考资料
https://www.cnblogs.com/a849788087/p/6552977.html
【C#】Winform嵌入dll到exe中的更多相关文章
- C#中用ILMerge合并DLL和exe文件成一个exe文件或者DLL
ILMerge是一个将多个.NET程序集合并到一个程序集中的实用程序.它既可以作为 开源使用,也可以作为NuGet包使用. 如果您在使用它时遇到任何问题,请与我们联系.(mbarnett _at_ ...
- .NET Winform 将引用的dll文件集成到exe中(转)
Winform程序经常需要引用一些第三方dll文件,这些dll在发布后与exe文件保存在同一目录下,虽然将dll文件集成到exe中会增大文件尺寸,但程序目录会相对整洁. 下面介绍一种比较简单的集成方法 ...
- 在Visual Studio中将dll以资源的形式嵌入exe中
一.Dll的优点: 1.扩展应用程序的特性 2.简化项目管理 3.有助于节省内存 4.促进资源的共享 5.促进本地化 6.有助于解决平台间的差异 7.可用于特殊目的 有关于dll及注入相关理论资料,可 ...
- C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入
C# 嵌入dll 在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...
- 其原因可能是堆被损坏,这说明**.exe中或它加载的任何DLL中有Bug
最近在写一个写日志文件的线程时,调用了HeapAlloc/HeapFree 申请/释放堆缓冲内存.调用HeapFree释放有个条件就是,日志的空闲缓冲队列中内存块超过100个.在测试的时候,发现调用H ...
- 皮肤和DLL和图片等项目文件完全整合到exe中
C#开发的程序原生界面实在是太丑了,自己又没有美化天赋,所以只能使用皮肤控件了,网上找到了IrisSkin2,包含一个.dll文件和若干ssk后缀的皮肤文件,代码其实很简单的.但是后来发现个问题,就是 ...
- 把任意的EXE嵌入到自己程序中
把任意的EXE嵌入到自己程序中 taoyuan19822008-08-24上传 Delphi把任意的EXE嵌入到自己程序中的程序 资源积分:0分 下载次数:327 资源类型:其他 资源大小:175 ...
- 把exe嵌入到自己的exe中。delphi xe3
下面是一个把exe程序嵌入到我们自己的exe中.开发环境 Delphi XE3 Version 17.0.4625.53395.OS环境WIN7 SP1,由于xe3版本的引用库发生变化.换成其他版本的 ...
- 中触发一个断点 其原因可能是堆被损坏,这说明 ***.exe 中或它所加载的任何 DLL 中有 Bug
软件中使用了DevComponents.DotNetBar2.dll MessageBoxEx.Show("ddd");运行到这句出现这个错误 : 中触发一个断点 其原因可能是堆被 ...
- 其原因可能是堆被损坏,这也说明 xxx.exe 中或它所加载的任何 DLL 中有 bug
1.代码如下: string src ="abcdabcd"; char* dst = new char[8]; strcpy(dst,src.c_str()); delete[] ...
随机推荐
- Java并发容器详解,及使用场景
并发容器的由来 在Java并发编程中,经常听到Java集合类,同步容器.并发容器,那么他们有哪些具体分类,以及各自之间的区别和优劣呢? 只有把这些梳理清楚了,你才能真正掌握在高并发的环境下,正确使用好 ...
- w3cschool-R语言 教程
https://www.w3cschool.cn/r/ R语言教程 R语言是用于统计分析,图形表示和报告的编程语言和软件环境. R语言由Ross Ihaka和Robert Gentleman在新西兰奥 ...
- 使用PythonDEAP库实现简单遗传算法
本人博客食用体验更佳哦 DEAP(Distributed Evolutionary Algorithms in Python)是一个用于快速原型设计和实验的进化计算框架.它支持多种进化算法,包括遗 ...
- java中的接口和枚举
接口:可以简单的理解为规则 接口的基本语法: interface 接口名称 { 规则属性, 规则行为} 接口 接口其实是抽象的 接口的属性必须是固定的值,并且不能够修改的 属性和行为的访问权限必须是公 ...
- Centos 7 单用户模式修改密码/配置
1.启动系统,启动项界面显示时,按"↑↓"键停留在此界面,按下"e"键进入编辑模式 2.利用"↑↓"键找到"linux16&quo ...
- 一键实现风险识别+处理,天翼云AOne助手尽在“掌”握!
随着企业数字化建设的不断加速,优化站点性能与响应速度成为当今时代的一个重要课题.对于政务.金融类机构来说,其门户网站.信用卡中心等代表着对外形象,如果出现访问不通或者时延严重的现象将影响业务办理效率以 ...
- C#正则提取字符串中的数字
首先需要引入命名空间System.Text.RegularExpressions,具体实现如下所示: //提取纯数字,该方式会将所有数字提取出来并拼接在一起,如:"ABC#123@AS456 ...
- Luogu P9055 [集训队互测 2021] 数列重排 题解 [ 紫 ] [ 构造 ] [ 数学 ]
数列重排:差点就场切的神仙构造,最后一步想假了,导致我模拟赛荣获 25+5+0 的好成绩! 这题部分分很有启发性,跟着一步一步打基本能想到正解的构造,但也有可能想偏部分分的意思,想假策略. 构造 先看 ...
- 莫托曼机器人GP110B操作手柄故障维修全攻略
莫托曼机器人GP110B操作手柄故障机器人维修全攻略 一.前言 莫托曼机器人GP110B操作手柄是机器人控制系统的重要组成部分,它允许操作人员对机 ...
- 绝对荧光定量pcr结果计算
绘制标准曲线 首先根据公式,计算出标准品曲线的x值(拷贝数),需要修改的数值是标准品质粒浓度(图上的321)和4565(基因片段长度),得出的结果单位是拷贝数/μl. 根据计算结果,可以列出表格,样品 ...