首页 > 其他分享 >Libz打包/合并DLL与可执行文件(EXE)

Libz打包/合并DLL与可执行文件(EXE)

时间:2024-05-15 13:57:44浏览次数:13  
标签:EXE libz -- dll Libz DLL 打包 加载

Libz是一个.NET的库,它提供了一种方法将多个DLLs和其他资源打包进一个单独的可执行文件(EXE)或另一个动态链接库(DLL)。Libz的功能类似于ILMerge,但它提供了更多的灵活性和功能,特别是对于处理压缩和资源管理。Libz使用了自定义的加载器来在运行时解压和加载程序集和资源,这样可以减少部署文件的大小并简化部署过程。

(比IMerge好用多了!后者打包很慢,而且dll数量一多就出错,还吃性能总之我用IMerge搞几天没合并成功的东西,在Libz一分钟搞定!又快又有效!)

使用Libz的步骤

安装

Libz可以通过NuGet包管理器安装。你可以在项目中包含Libz作为一个依赖项,或直接在命令行中使用它的工具。要安装Libz,可以在Visual Studio的NuGet包管理器控制台执行以下命令:

shell   Install-Package LibZ.Tool

打包程序集

一旦安装了Libz,你可以使用其命令行工具来打包你的应用程序。以下是使用Libz的基本命令行示例,它说明了如何将多个DLLs打包到一个EXE文件中:

bash  
libz inject-dll --assembly your-application.exe --include your-library.dll --move 

 

这个命令做了以下几件事:

  • --assembly your-application.exe 指定主应用程序文件。
  • --include your-library.dll 指定要包含的DLL文件。
  • --move 表示在打包后从原位置删除原DLL文件。

但是我的情况,这里只输入这个命令是会出错的,因为按照上面的步骤,用vs离得nuget安装,我只把libz装到了vs项目里的package文件夹下(默认,也可以修改),libz命令没有被添加到系统的环境变量中,而且libz没有安装到可以被系统全局识别的路径上。

所以必须让这条指令去找我安装了libz的地方。

以下指令是我这里能执行成功的命令,合并了多个dll:

D:\Desktop\TSN\TSN_20240510\packages\LibZ.Tool.1.2.0.0\tools\libz.exe inject-dll --assembly TSN.exe --include DevExpress.XtraTreeMap.v22.2.UI.dll 
--include DevExpress.XtraTreeList.v22.2.dll 
--include DevExpress.XtraScheduler.v22.2.Core.dll 
--move

 

配置加载器

Libz还允许你配置如何加载压缩的资源。例如,你可以指定程序集解压到内存中还是到临时文件中,或者修改程序集解析的行为。这些高级功能需要编辑配置文件或通过命令行工具进行更复杂的设置。

注意事项

  • 兼容性:因为Libz使用了自定义的程序集加载机制,所以可能与某些特定的.NET功能或第三方库不兼容。
  • 调试:打包后的应用程序可能难以调试,因为源程序集已经被压缩和嵌入。
  • 性能:虽然压缩可以减少文件大小,但解压缩和加载压缩的程序集可能会对应用程序的启动时间产生影响。

Libz是为那些需要灵活、高效部署.NET应用程序的开发人员提供的一种工具。它适用于希望简化部署过程并减少部署包大小的场景。

标签:EXE,libz,--,dll,Libz,DLL,打包,加载
From: https://www.cnblogs.com/ban-boi-making-dinner/p/18189656

相关文章

  • 使用.net 6.0框架的WPF应用如何引用System.Windows.Forms这个dll
    先说结论:能用.nerfx尽量用fx开发,因为很多坑之前的前辈帮你踩过了。。。解决方法是在这个目录下找到你对应版本的System.Windows.Forms这个dllC:\ProgramFiles\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.26\ref\net6.0这个目录每个人版本不一样,想找到最简单的方法就......
  • RetryableException: Read timed out executing导致服务假死无响应
    最近发现Plan这个微服务经常会无响应,后来发现是task微服务会调用plan的某个接口,经常报错如下异常,然后timeout后又30秒再次发起重试而这个业务处理时间1分钟-2小时都有可能所以把plan微服务线程池占满导致无响应2024-05-1314:27:00.282N/A,b1f2a3468b14468abef240bfeddd8b95,0......
  • 打包python为 exe 可执行文件
    这里使用 pyinstaller 进行打包有多种方式打包为exe, 如 pyinstaller  cx_Freeze  py2exe   py2app   Nuitka   Nuitka+pyinstaller一、首先安装pyinstaller下载地址:http://download.csdn.net/detail/zj910092147/7827835传统......
  • 用pyinstaller打包,生成单个的exe程序,找不到资源文件怎么办?
    被这个问题生生搅了两个月。 那还是在3月底的时候,我们这个程序啊,并不是BS架构的。写好之后,肯定不能把一堆py源码发给客户嘛,要使用pyinstaller打包的,做成一个exe的可执行程序。pyinstaller怎么使用我就不教了,这个不是今天想说的重点,而且网上的教程还是很全面的。 我想说的是......
  • 未能从程序集“Microsoft.Build.Tasks.vCurrent.dll”加载任务工厂“CodeTaskFactory
     遇到如下错误:未能从程序集“Microsoft.Build.Tasks.vCurrent.dll”加载任务工厂“CodeTaskFactory”。Couldnotloadfileorassembly'file:///G:\VS2022\IDE\MSBuild\Current\Bin\amd64\Microsoft.Build.Tasks.vCurrent.dll'oroneofitsdependencies.系统找不到指定......
  • 阿里云Windows server 2016服务器Antimalware Service Executable进程占比高,cpu接近10
    问题描述:阿里云Windowsserver2016服务器AntimalwareServiceExecutable进程占比高,cpu接近100%,需要强制关闭该进程,排查问题,进入系统服务关闭,提示拒绝访问(该服务关闭后有风险,需评估后操作)  操作步骤:1.进入服务器,进入Windowspowershell界面; 2. 输入 regadd"HKEY_L......
  • 使用Devexpress框架的项目发布时缺失dll的相关问题记录
    首先说我自己实践得到的结论:但凡bin/release或debug下的.exe可执行文件,运行时要用的dll,放在其同路径下,就可以被找到并正常运行。注意:1.如果直接在bin/release或debug下点击exe没反应,可以在控制面板——>系统和安全——>安全和维护,点开维护查看可靠性历史记录可以看到......
  • inno Setup 打包Java exe可执行文件和MySQL数据库,无需额外配置实现一键傻瓜式安装
    前言出现有需要打包Java应用和Mysql数据库成一个安装包给出去的需求,这里我把整个打包的流程整理一下。环境JDK17;MySQL5.7;流程Jpackage打包EXEJpackage是JDK14后加入的一个用于独立打包的工具,能够将应用打包成exe,有了Jpackage就不需要用exe4j这种打包工具,省去打包的繁......
  • C# 使用QuestPDF各种报错,System.IO.FileNotFoundException:“未能加载文件或程序集,Dll
    最近要做一个生成pdf报告的小功能,搜索一番之后,选择了QuestPDF这个库由于我是要在netframework4.8中实现功能,可能使用场景太老了,导致使用过程一波三折,非常的坎坷,折腾了一下午,增长了一些经验,记录下来1,如果你要在netframework4.8框架中使用,就不要自作聪明的用netstandard2.0框架......
  • Failed to open libcc.dll
      [-].\Navicat-Cracker\NavicatCrackerDlg.cpp:300->  Failedtoopenlibcc.dll  拒绝访问。 (0x5) 解决方法:以管理员身份运行exe文件。 Navicatpremium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到My......