我有一个VS解决方案(.sln),它具有以下结构。
我想使用ILMerge将第三方程序集滚动到ProjectB.dll中。但是,我不想合并ProjectA。
我使用了突出显示的here程序。对于第三方程序集的合并,这对我来说是无缝的。但是,在构建ProjectB时我仍然遇到此错误:
合并期间发生异常: 未允许未解决的程序集引用:ProjectA。
我没有明确指定合并ProjectA。换句话说,我不赞成这个项目。我如何让IlMerge忽略ProjectA?顺便说一句,ProjectA是一个项目参考,而不是直接的汇编参考。
谢谢!
答案 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"