而本文介绍用来替代它们的 ILRepack,使用 ILRepack 来合并程序集。 ---- 以 NuGet 包的形式使用 ILRepack ILRepack 提供了可供你项目使用的 NuGet 包。 如果你在团队项目当中安装了 ILRepack 的 NuGet 包,那么无论团队其他人是否安装了 ILRepack 的工具,都可以使用 ILRepack 工具。 要以 NuGet 包的形式来使用 ILRepack,需要首先安装 ILRepack 的 NuGet 包: [NuGet GalleryILRepack](https://www.nuget.org/packages 在这个 Target 里面,我们使用 Exec 的 Task 来执行 ILRepack 命令。具体这个命令代表的含义我们在下一节介绍 ILRepack 工具的时候会详细介绍。 如果希望使用 ILRepack 的其他命令,可以考虑使用帮助命令: 1 ilrepack /help 或者直接访问 ILRepack 的 GitHub 仓库来查看用法: gluck/il-repack
使用 ILMerge 或者 ILRepack 等工具 ILMerge 和 ILRepack 的合并就更加富有技术含量——当然坑也更多。 这两个都是工具,因此,你需要将工具下载下来使用。 ILRepack 基于 Mono.Ceil 来进行 IL 合并,其使用方法可以参见我的博客: .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖 - walterlv 这是一个分别通过 Fody、SourceYard 和 ILMerge / ILRepack 生成的程序集的反编译图。 如果你的程序非常在乎启动性能,那么就需要考虑 SourceYard、ILMerge / ILRepack 了。 对于 ILMerge / ILRepack 和 SourceYard 的比较,可以看下面这张表格: 方案 ILRepack / ILMerge SourceYard 适用于 任意 .NET 程序集 通过
以封装的 NuGet 包来使用 ILRepack 安装 NuGet 包: 之后,你就能直接使用 ILRepack 这个编译任务了,而不是在 MSBuild 中使用 Exec 来间接执行 ILRepack alternative to ILMerge Support for portable PDBs · Issue #11 · dotnet/ILMerge Merging assemblies using ILRepack - Meziantou’s blog peters/ILRepack.MSBuild.Task: MSBuild task for ILRepack which is an open-source alternative
使用 ILRepack / ILMerge 合并依赖 前面我们说过,加载位置上下文中的程序集可以依赖默认加载上下文中的程序集,而反过来却不行。 关于使用 ILRepack 合并依赖的内容,可以阅读我的另一篇博客: .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖 - walterlv 首先推荐使用 ILRepack
exe 中) - 朱志 - 博客园 C#程序(含多个Dll)合并成一个Exe的简单方法_C#教程_脚本之家 .NET 合并程序集(将 dll 合并到 exe 中) - 朱志 - 博客园 .NET 使用 ILRepack