You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6下合并多个DLL为单个文件的可用工具与技术咨询

.NET 6类库合并多DLL的工具与方案

针对.NET 6类库的DLL合并需求,以下是几个可行的工具和技术,替代你之前在.NET Framework中使用的方案:

1. ILRepack.Lib.MSBuild.Task

这是ILRepack的.NET Core适配版本,专门支持.NET 6类库的合并需求,还能处理XML文档的合并(和你之前用ILRepack合并XML的需求匹配)。它通过MSBuild任务集成到构建流程,无需额外命令行操作。

  • 用法:NuGet安装该包后,在项目的.csproj中添加配置,指定要合并的依赖集和输出路径,示例配置:
<ItemGroup>
  <ILRepackInclude Include="依赖DLL路径" />
</ItemGroup>
<PropertyGroup>
  <ILRepackOutput>$(OutputPath)\合并后的类库.dll</ILRepackOutput>
  <ILRepackXmlMerge>true</ILRepackXmlMerge> <!-- 合并XML文档 -->
</PropertyGroup>

2. Fody + Costura.Fody(新版)

新版的Costura.Fody已经完全适配.NET 6,和你在.NET Framework中的使用逻辑一致:将依赖DLL嵌入到目标类库的资源中,运行时自动提取加载。

  • 用法:依次安装Fody和Costura.Fody NuGet包,添加FodyWeavers.xml配置文件(可自定义要嵌入的依赖),构建后目标类库会包含所有依赖的二进制内容。

3. ILMerge.Lib(社区维护版)

微软官方ILMerge的社区维护分支,提供了.NET 6兼容版本,支持类库DLL的合并,可通过命令行或MSBuild任务调用,能灵活控制合并规则(比如排除特定依赖、设置合并优先级)。

4. 手动嵌入资源+自定义加载逻辑

如果不想依赖第三方工具,可以手动实现:

  • 将所有依赖DLL设置为嵌入资源(在项目文件中设置<EmbeddedResource>);
  • 在类库的静态构造函数中注册AssemblyResolve事件,当CLR无法找到依赖时,从嵌入资源中读取并加载对应的程序集。示例代码:
static 你的类库类名()
{
    AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
    {
        var assemblyName = new AssemblyName(args.Name).Name + ".dll";
        var resourceName = $"你的项目命名空间.{assemblyName}";
        using var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
        if (stream == null) return null;
        var assemblyBytes = new byte[stream.Length];
        stream.Read(assemblyBytes, 0, assemblyBytes.Length);
        return Assembly.Load(assemblyBytes);
    };
}

这种方式完全可控,适合需要配合混淆逻辑的场景。

5. 混淆+合并一站式工具

针对你之前用SmartAssembly/.NET Reactor的混淆合并需求:

  • ConfuserEx:开源混淆工具,支持.NET 6类库,可在混淆的同时合并依赖DLL;
  • 新版SmartAssembly/.NET Reactor:这两个商业工具的最新版本已经适配.NET 6,能直接对.NET 6类库进行混淆和DLL合并操作,用法和.NET Framework下基本一致。

内容的提问来源于stack exchange,提问作者stgerb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:55:21