C# 通过Costura.Fody把DLL合并到exe程序中

打包独立的exe程序有多种方法,这里只说Costura.Fody。

我们用VS发布应用程序可以借助Costura.Fody直接打包成一个独立的exe程序,但是一些非托管的做了几次都没打进去,最后成功了,这里记录一下。

首先安装Costura.Fody


或者可以通过这里获取
https://github.com/Fody/Costura/tree/develop

我的版本是5.7.0安装好了后会自动生成FodyWeavers.xml

bash 复制代码
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
	<Costura>
	</Costura>
</Weavers>

具体的配置可以参考上面的官方下载

非托管DLL

我的项目中使用了UnRAR64一个解压缩的DLL,是C++的非托管DLL,在项目编译的时候Costura并不能自动把这个DLL打入exe。

bash 复制代码
[DllImport("unrar64.dll")]

总结我失败的原因,需要几个步骤:

1,把UnRAR64.dll设置成嵌入的资源

2,把这个文件复制到目录Costura64下

3,需要在xml里配置非托管的文件名

如图:

bash 复制代码
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
	<Costura>
		<Unmanaged64Assemblies>
			UnRAR64
		</Unmanaged64Assemblies>
	</Costura>
</Weavers>

参考:
https://github.com/Fody/Costura/tree/develop
https://blog.csdn.net/qq_39200794/article/details/122146823

相关推荐
2zcode9 小时前
项目文档:基于MATLAB神经网络的心力衰竭预测与临床辅助决策系统研究
开发语言·神经网络·matlab·心力衰竭预测\
减瓦9 小时前
深入 Quarkus:云原生时代 Java 的重生之路
java·开发语言·云原生
杨运交9 小时前
[053][核心模块]Java枚举缓存与ORM集成实践
java·开发语言·缓存
2401_8949155310 小时前
Geo优化系统源码部署搭建技术——PHP程序开发部署指南
开发语言·php
wuyk55510 小时前
67.嵌入式C语言进阶:结构体指针实战指南——STM32外设、传感器数据访问的高效技巧
c语言·开发语言·stm32·单片机
找磁材10 小时前
空心杯电机与永磁体
开发语言·磁性材料·钕铁硼·磁钢
我不管我就要叫小猪10 小时前
C/C++----命名空间
c语言·开发语言·c++
兮动人11 小时前
Python字符串类型
开发语言·python·python字符串类型
自由随风飘11 小时前
JAVA中的面向对象-3
java·开发语言
小羊先生car11 小时前
RTOS-F429-HAL-(动/静态)任务的创建(2026/7/27)
开发语言·算法·c#