2010-08-18 116 views
0

我的情况:我有一个app.exe和它的几个dll - a.dll,b.dll,c.dll等(它们来自单个VS解决方案,由许多项目组成)。我想合并(ilmerge)所有dll到一个,所以我会:app.exe + x.dll。如何将所有dll合并为一个应用程序?

现在,有一个问题 - 应用程序期望拥有所有的DLL,所以当我把单个文件x.dll它不会运行。那么如何“重定向”应用程序以使用一个x.dll - 是否有可能?

我知道的一个解决方案是删除所有对Visual Studio中的项目的引用,并添加引用合并的dll。但是这会在重新编译解决方案时禁用依赖链。

Btw。我无法将exe和dll合并在一起,因为这是一个wpf应用程序,ilmerge无法处理它。

回答

3

你可以代替创建3个DLL来创建3个.NetModules,并将它们变成一个DLL。这需要编辑实际的CSPROJ文件,因为创建.NetModules目前没有集成到MSBuild系统中,但可以完成。

您可以将.NetModule看作C/C++中的一种静态库。当然也有差异,但总体来说这个概念是相似的。当试图制作包含多种.NET语言的单个DLL时,它们是最常见的,但它们也适用于您。检查出来here

+0

非常感谢。由于我的项目不是很大,而不是学习MSBuild,所以我简单地创建了一个大项目,其中包含其他项目的文件作为链接添加到子目录中。那种丑陋,但几乎不需要手动更改,它很快,它的工作原理:-) – greenoldman 2010-08-27 18:06:05

相关问题