有没有办法在dll中打包多个.NET程序集?

时间:2009-08-27 10:19:58

标签: .net dll assemblies packaging

我希望将我的组件/程序集与源代码的观点分开,但在某些情况下(可能与扩展无关)我需要将它们打包在同一个dll中。

是否可以在一个dll中打包多个.NET程序集?如果是这样,怎么办?

如果可能,你认为这是个好主意吗?为什么呢?

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:9)

查看此文章:Merging .NET assemblies using ILMerge


  

如您所知,传统的链接   不再需要对象代码   。净。通常是.NET程序   由多个部分组成。一个典型的   .NET应用程序包含一个   可执行程序集,一些程序集   在程序目录中,还有一些   全局程序集中的程序集   缓存。当程序运行时,   运行时将所有这些部分组合到一个   程序。编译时链接是否定的   更长的必要。

     

但有时候,它仍然存在   将程序的所有部分组合起来很有用   需要执行一个单一的   部件。例如,您可能想要   简化你的部署   结合该计划申请,   所有必需的库,以及所有   资源,放入单个.exe文件。

csc /target:library /out:ClassLibrary1.dll ClassLibrary1.cs
vbc /target:library /out:ClassLibrary2.dll ClassLibrary2.vb
vbc /target:winexe /out:Program.exe 
    /reference:ClassLibrary1.dll,ClassLibrary2.dll Program.vb

ilmerge /target:winexe /out:SelfContainedProgram.exe 
        Program.exe ClassLibrary1.dll ClassLibrary2.dll

答案 1 :(得分:6)

ILMerge可以将两个程序集合并为一个。

有关信息,请参阅here(示例适用于交叉语言,但无论构建程序集的任何工具如何,都可以使用。)

显然,任何对各个程序集的依赖关系(合并前)都需要更新/重定向。