SevenZipExtractor 可以很方便地拿 C# 调用 7z.dll 对文件进行解压缩,对于引用多出来的 .dll 文件,如果能将这一堆文件合并成一个,岂不是美滋滋?!最后,我找到了 Costura.Fody(一个可以将源 .dll 合并到目标 exe 中的引用)目录瞬间整洁无比哇~ 如题,本文将讲述 SevenZipExtractor + Costura.Fody 的具体配置操作。 C# SevenZipExtractor with Costura.Fody
注:下文中的 A = 当前的 SevenZipExtractor 项目,B = 目标项目 将调用 SevenZipExtractor(已引用 Costura.Fody)
在此之前 B 先 NeGet 搜索引用 Costura.Fody
,B 目录中将出现 FodyWeavers.xml
git clone https://github.com/qwqcode/SevenZipExtractor
并打开解决方案,解决方案资源管理器 选中SevenZipExtractor
右键 生成,SevenZipExtractor.dll 将会出现在A/bin/Release/
中- 跳过此步骤,可直接下载 SevenZipExtractor.dll
复制
A 目录/bin/Release/SevenZipExtractor.dll
到B 目录
中B
中引用 SevenZipExtractor.dll 并配置复制本地=False
如图B
中创建目录Costura32
和Costura64
并将A 目录/bin/Release/(x86|x64)/7z.dll
对应放入其中,对 .dll 文件进行配置生成操作=嵌入的资源, 复制到输出目录=不复制
如图所示配置
FodyWeavers.xml
1
2
3
4
5
6<Weavers>
<Costura CreateTemporaryAssemblies='true'
Unmanaged32Assemblies='7z|SevenZipExtractor'
Unmanaged64Assemblies='7z|SevenZipExtractor'
IncludeAssemblies='SevenZipExtractor'/>
</Weavers>好啦好啦 清理 再 生成 B 即可。现在就只有一个文件了,
7z.dll
和SevenZipExtractor.dll
都已嵌入单个.exe
中