6

我想让我的组件/程序集从源代码的角度清楚地分开,但在某些情况下(可能与扩展无关)我还需要将它们打包在同一个 dll 中。

是否可以在单个 dll 中打包多个 .NET 程序集?如果是这样,如何?

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

任何帮助表示赞赏!

4

2 回答 2

9

查看这篇文章:使用 ILMerge 合并 .NET 程序集


如您所知,.NET 中不再需要传统的目标代码链接。.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
于 2009-08-27T10:23:39.380 回答
6

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

有关信息,请参见此处(示例适用于跨语言,但它适用于构建程序集的任何工具)。

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

于 2009-08-27T10:24:42.967 回答