将Winform程序及dll打包成可执行的exe

摘要:
通常在使用场景中开发的Winform程序在引用其他类库后会在输出目录中生成许多DLL文件,exe在执行时必须依赖这些DLL。如果您希望Winform程序只有一个可执行exe文件,并且不想将其打包到安装包中,则可以使用此方法。

使用场景

通常开发的Winform程序,引用了其他类库后,在输出目录下都会产生很多DLL文件,exe执行时必须依赖这些DLL。想要Winform程序只有一个可执行exe文件,又不想打包成安装包,就可以采用该方法。

方案一

利用ILMerge将exe及dll合并成一个新的exe

ILMerge下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=17630

将ILMerge.exe复制到exe所在目录,执行以下命令

ILMerge.exe /ndebug /target:winexe /targetplatform:v4 /out:d:/output.exe input.exe /log BouncyCastle.Crypto.dll /log Dapper.dll

/targetplatform是用来指定版本号

/log将dll打包进output.exe中,多个dll就用多个/log指定

方案二

利用压缩软件的自解压特性

1.切换到Winform输出目录,全选并右键添加到压缩文件

2.修改压缩文件名后缀为.exe

3.切换到高级选项 -> 自解压选项,设置 ->提取后运行:./程序名.exe,模式 ->临时模式:勾选解包到临时文件夹,安静模式:选中全部隐藏

4.确定并压缩,会生成一个exe文件,点击可执行

免责声明:文章转载自《将Winform程序及dll打包成可执行的exe》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL 返回新增行的自增ID值方法Android中实现按钮自动隐藏下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Qt 将界面程序封装成动态库DLL

1.生成dll 然后选择创建共享库: 创建好后,修改pro文件,改为下面两句(这样就可以创建界面了): 然后修改sharedlib.h: #ifndef SHAREDLIB_H #define SHAREDLIB_H #include <QtCore/qglobal.h> #if defined(SHAREDLIB_LIBRARY...

GJM:C# WinForm开发系列

1.DataGridView实现课程表testcontrol.rar 2.DataGridView二维表头及单元格合并DataGridView单元格合并和二维表头.rarmyMultiColHeaderDgv.rar 3.DataGridView单元格显示GIF图片gifanimationindatagrid.rar 4.自定义显示DataGrid...

WINFORM--第三讲(下拉列表)

下拉列表:1.如何把选项放进去。手动放:不常用。使用代码放:(1).使用代码逐项添加a.造一个实体类:重写父类的ToString()方法,返回要显示的属性。b.使用实体造对象c.把对象添加到下拉列表的items集合中去。 案例:把民族表中的数据读取出来加载到下拉列表中去。a.准备实体类、链接类、数据访问类。b.在界面后台代码中,调用数据访问类,获取返回来的...

Winform 自定义文本框

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading....

dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

自从操作系统升级到64位以后,就要不断的需要面对32位、64位的问题。相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别。同时,对于程序的dll文件应该放到System32文件夹,还是SysWow64,大部分人做的决定是,32位程序放到System32,64位程序放到SysWo...

WPF中UI及时更新,如何在处理长时间工作时,保持界面的持续更新

 不管是在winform还是在WPF中,我们要做一个进度条,用在一个大循环或者一个耗时的处理中,首先想到的就是多线程。否则进度条会出现假死现象,进度条不会更新。做多线程是比较麻烦的,如果只是简单的更新UI,可以用Systems.DoEvents。 在winform中,使用PeekMessage处理完消息队列,使UI有机会更新。在WPF中,可以在Dispat...