我希望将我的组件/程序集与源代码的观点分开,但在某些情况下(可能与扩展无关)我需要将它们打包在同一个dll中。
是否可以在一个dll中打包多个.NET程序集?如果是这样,怎么办?
如果可能,你认为这是个好主意吗?为什么呢?
任何帮助表示赞赏!
答案 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(示例适用于交叉语言,但无论构建程序集的任何工具如何,都可以使用。)
显然,任何对各个程序集的依赖关系(合并前)都需要更新/重定向。