把C#程序(含多个Dll)合并成一个Exe的简单方法

开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了。

但是,很多时候我们本想开发一款只需要一个exe就能完美运行的小工具。那该怎么办呢?

下文介绍一种超简单的方法,不用写一行代码就可轻松实现。

这里我们需要用到一款名为Fody.Costura的工具。Fody.Costura是一个Fody框架下的插件,可通过Nuget安装到VS工程中。安装之后,就可以将项目所依赖的DLL(甚至PDB)文件全部打包到EXE文件里。

使用方法

  1. 在VS中,通过Nuget为目标EXE工程安装Costura.Fody。

  2. 重新构建项目。 

构建完成后,到项目的输出目录下找到新生成的EXE文件,你同时会发现输出目录下仍然存在那些DLL。不过不用担心,这个EXE已经能够独立运行了。你可以把这些DLL全部删除后再运行EXE试试。

另外,Fody.Costura还支持一些进阶的特性,例如:

  • 临时程序集文件:在运行EXE前自动,自动将DLL从EXE中解压到文件夹系统中,再通过常规的方式加载该DLL。

  • 合并非托管的DLL:Fody.Costura可以合并非托管的DLL,但是不会自动合。如果你的程序涉及非托管DLL,那么你需要通过修改Fody.Costura的配置文件来显示地告诉它你想合并哪些非托管的DLL。

  • 预加载DLL:Fody.Costura可以帮助你在程序启动时预先加载某些DLL,你甚至可以指定这些DLL的加载顺序。

以上这些进阶特性都需要你通过修改Fody.Costura的配置文件来实现,具体的操作步骤可以参考它的官方文档。

好了,Fody.Costura的使用方式已经介绍完了。如果你对Fody.Costura的实现原理感到好奇,可以接着往下看。

主要步骤

之后重新编译就能生成单独的exe文件了。

参考链接

一分钟学会如何将Dll文件合并到exe程序中_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1hx4y167BP/?spm_id_from=333.1007.top_right_bar_window_default_collection.content.click


把C#程序(含多个Dll)合并成一个Exe的超简单方法 - Roy Cheng - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/instance/p/4863811.html

把C#程序(含多个Dll)合并成一个Exe的超简单方法 (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=Mzg3ODAxNzM5OQ==&mid=2247501594&idx=1&sn=d696d7feefbfc2e41e6fb74628747d40&chksm=cf18a902f86f2014ee8a739dafa02987c5bcde1c7bffb15610462805a8901719a6916bbaf4ec&mpshare=1&scene=1&srcid=0420TJ7vgBxXtAuxtZFzTZLQ&sharer_shareinfo=5f2ac2e6e097a6119d7cb5f65e60dd73&sharer_shareinfo_first=01cdc7bd1da59bcf0ba384481a89d941#rd

另外一个方法

Winform程序怎么把dll打包进exe_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1m5411P76f/?spm_id_from=autoNext&vd_source=e821a225c7ba4a7b85e5aa6d013ac92e

特此记录

anlog

2024年4月28日

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值