ILMerge和项目参考

时间:2010-06-20 11:19:48

标签: .net assemblies ilmerge

我有一个VS解决方案(.sln),它具有以下结构。

  • 项目A
  • 项目B(包含对项目A的引用以及对NHibernate,StructureMap等第三方程序集的引用)

我想使用ILMerge将第三方程序集滚动到ProjectB.dll中。但是,我不想合并ProjectA。

我使用了突出显示的here程序。对于第三方程序集的合并,这对我来说是无缝的。但是,在构建ProjectB时我仍然遇到此错误:

合并期间发生异常:   未允许未解决的程序集引用:ProjectA。

我没有明确指定合并ProjectA。换句话说,我不赞成这个项目。我如何让IlMerge忽略ProjectA?顺便说一句,ProjectA是一个项目参考,而不是直接的汇编参考。

谢谢!

2 个答案:

答案 0 :(得分:4)

对ILMerge使用/lib参数,传递包含ProjectA.dll的目录。

具体而言(假设ProjectB的目标平台是.NET 4.0客户端配置文件):

ILMerge.exe /out:MasterDll.dll
            /targetplatform:v4,"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client"
            /lib:ProjectA\bin\Release
            ProjectB\bin\Release\ProjectB.dll
            Libraries\NHibernate\NHibernate.dll
            Libraries\StructureMap\StructureMap.dll
            ...

答案 1 :(得分:0)

对于4.0,只需使用:

/ targetplatform:v4,"%ProgramFiles%\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0"