如何将所有dll合并为一个应用程序?

时间:2010-08-18 06:27:23

标签: c# visual-studio ilmerge

我的情况:我有一个app.exe和几个dll - a.dll,b.dll,c.dll等(它们来自单个VS解决方案,包含许多项目)。我想合并(ilmerge)所有dll到一个所以我会:app.exe + x.dll。

现在,有一个问题 - 应用程序期望拥有所有dll所以当我只放置单个文件x.dll时它将无法运行。那么如何“重定向”应用程序以使用一个x.dll - 它有可能吗?

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

如果您阅读此博客,我会建议您。当您需要合并WPF程序集时,它可以替代ILMerge。 http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx