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

相关推荐
Ulyanov33 分钟前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真
码界筑梦坊36 分钟前
357-基于Java的大型商场应急预案管理系统
java·开发语言·毕业设计·知识分享
anzhxu41 分钟前
Go基础之环境搭建
开发语言·后端·golang
yu85939581 小时前
基于MATLAB的随机振动仿真与分析完整实现
开发语言·matlab
赵钰老师1 小时前
【结构方程模型SEM】最新基于R语言结构方程模型分析
开发语言·数据分析·r语言
guygg881 小时前
利用遗传算法解决列车优化运行问题的MATLAB实现
开发语言·算法·matlab
gihigo19981 小时前
基于MATLAB实现NSGA-III的土地利用空间优化模型
开发语言·matlab
武藤一雄1 小时前
19个核心算法(C#版)
数据结构·windows·算法·c#·排序算法·.net·.netcore
不会编程的懒洋洋2 小时前
C# Task async/await CancellationToken
笔记·c#·线程·面向对象·task·同步异步
vastsmile2 小时前
(R)26.04.23 hermes agent执行本地命令超级慢的原因
开发语言·elasticsearch·r语言