1

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

  • 项目A
  • 项目 B(包含对项目 A 的引用以及对 NHibernate、StructureMap 等 3rd 方程序集的引用)

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

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

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

我没有明确指定 ProjectA 被合并。换句话说,我不会说这个项目是真的。如何让 IlMerge 忽略 ProjectA?顺便说一句,ProjectA 是一个项目引用,而不是直接的程序集引用。

谢谢!

4

2 回答 2

6

使用/libILMerge 的参数,传递包含 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
            ...
于 2010-09-16T15:21:59.013 回答
-1

对于 4.0,只需使用:

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

于 2014-08-06T15:58:10.833 回答