也许我错过了一些明显的东西,但......
我已经构建了一个可重用的通用C#类库项目说(A.dll)引用其他3个程序集说(B.dll,C.dll和D.dll)
但是,如果我想在另一个项目中重用我的组件A.dll,我仍然需要包含对B.dll,C.dll和D.dll的引用。
有没有什么办法可以配置A.dll来将所有依赖项构建到A.dll中,这样我就不必包含其他3个程序集了?
干杯
答案 0 :(得分:6)
可以使用工具ILMerge合并装配:
C:\Program Files\Microsoft\ILMerge\ILMerge.exe /target:library /out:abcd.dll a.dll b.dll c.dll d.dll"
这会将dll a
,b
,c
和d
合并到abcd.dll
。它还将合并调试符号,但不合并XML文档。
此外,您必须在新项目中引用dll本身,而不是相应的项目。例外情况是,如果将库合并到可执行文件中,在这种情况下,您可以引用相应的库/项目,因为它们将加载可执行文件。
Mono Project也有一个工具,名为mkbundle。
同样可用ILRepack,旨在与ILMerge兼容,但是FLOSS。
答案 1 :(得分:0)
这类似于DLL的静态链接,可以与原生C ++一起使用。据我所知,您不能静态链接.NET代码中的程序集,因此您必须包含所有DLL。