C#程序(含多个Dll)合并成一个Exe的简单方法
作者:飘渺公子 时间:2023-04-09 15:55:08
开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了。
但是,很多时候我们本想开发一款只需要一个exe就能完美运行的小工具。那该怎么办呢?
下文介绍一种超简单的方法,不用写一行代码就可轻松实现。
这里我们需要用到一款名为Fody.Costura的工具。Fody.Costura是一个Fody框架下的插件,可通过Nuget安装到VS工程中。安装之后,就可以将项目所依赖的DLL(甚至PDB)文件全部打包到EXE文件里。
使用方法
在VS中,通过Nuget为目标EXE工程安装Costura.Fody。或者通过NuGet控制台用命令行安装:Install-Package Costura.Fody -Version 1.3.3
重新构建项目。
构建完成后,到项目的输出目录下找到新生成的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的配置文件来实现,具体的操作步骤可以参考它的官方文档。
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
native.js获取手机硬件基本信息实例代码android版
java实现word文档转pdf并添加水印的方法详解
![](https://img.aspxhome.com/file/2023/9/62139_0s.png)
SpringBoot拦截 器如何获取http请求参数
![](https://img.aspxhome.com/file/2023/6/59926_0s.png)
scala 读取txt文件的方法示例
![](https://img.aspxhome.com/file/2023/3/75493_0s.png)
Java实现InputStream的任意拷贝方式
Android中RecyclerView点击Item设置事件
![](https://img.aspxhome.com/file/2023/1/138821_0s.gif)
Android截屏保存png图片的实例代码
在Android模拟器上模拟GPS功能总是null的解决方法
SpringCloud Feign远程调用实现详解
![](https://img.aspxhome.com/file/2023/4/67994_0s.png)
Java如何通过线程解决生产者/消费者问题
![](https://img.aspxhome.com/file/2023/3/122183_0s.gif)
Android 5.0+ 屏幕录制实现的示例代码
![](https://img.aspxhome.com/file/2023/7/116007_0s.png)
Android使用GridView实现日历的简单功能
![](https://img.aspxhome.com/file/2023/5/90125_0s.jpg)
Java如何实现树的同构?
![](https://img.aspxhome.com/file/2023/4/59084_0s.png)
Java servlet后端开发超详细教程
![](https://img.aspxhome.com/file/2023/1/113471_0s.png)
Mybatis基于注解形式的sql语句生成实例代码
java中Struts2文件上传问题详解
JavaSwing BorderLayout 边界布局的实现代码
![](https://img.aspxhome.com/file/2023/2/75002_0s.png)
android获取当前手机号示例程序
Android Drawable及其相关类的使用
![](https://img.aspxhome.com/file/2023/6/138276_0s.jpg)
Android游戏开发实践之人物移动地图的平滑滚动处理
![](https://img.aspxhome.com/file/2023/5/117155_0s.gif)