C#面试题更新 2026-08-03

请解释在 .NET 环境中,IL 合并是指什么操作?当你有多个程序集需要合并时,通常会采取哪些具体步骤或工具来实现?

考察说明

考察对 .NET 程序集编译产物与 IL 合并概念的理解,以及实际合并操作的掌握。

回答思路

  1. 【回答框架 1】IL 合并是将多个 .NET 程序集(DLL 或 EXE)的 MSIL 代码合并到一个程序集中的过程,常用于减少部署文件数量或便于应用打包。
  2. 【回答框架 2】实现工具包括 ILMerge(微软官方工具,命令行使用),以及开源工具如 Mono.Cecil 支持的自定义合并,或 .NET Core 时代的 `Microsoft.NET.Build.Extensions` 等替代方案。
  3. 【回答框架 3】使用 ILMerge 时,基本命令为 `ilmerge /out:合并后.dll 输入程序集1.dll 输入程序集2.dll`,可加 `/target:exe` 等参数。需注意输入程序集必须为同一运行时目标。
  4. 【回答框架 4】合并后需验证程序集引用与类型可见性,合并可能影响强名称签名和资源访问,必要时需重新签名。
  5. 【回答框架 5】对于 .NET Core 及以后版本,常用单文件发布或 `Assembly Linking` 功能,ILMerge 主要适用于 .NET Framework 场景。
  6. 【关键点 1】IL 合并是将多个程序集的 IL 代码组合成一个程序集。
  7. 【关键点 2】ILMerge 是最常用的合并工具,支持命令行参数配置。
  8. 【关键点 3】合并需确保程序集兼容,并考虑强名称、资源等要求。
  9. 【关键点 4】新 .NET 版本更多使用单文件发布方式替代传统合并。
  10. 【易错点 1】合并时忽略程序集目标框架差异可能导致运行时错误。
  11. 【易错点 2】合并后的程序集可能带引用外部依赖,未打包干净会出现缺失。
  12. 【易错点 3】强名称程序集合并后需重新签名,否则加载失败。