我正在尝试使用ILMerge将一些传递引用的程序集内部化到我正在引用的一个程序集中,以消除在我的项目中其他地方出现的这些传递依赖项的冲突。
特别地,我正在引用Antlr3.StringTemplate(以下简称AS,在此处可下载:http://www.stringtemplate.org/download.html)。它引用了Antlr3.Runtime.Debug(ARD)和Antlr3.Runtime(AR)。ARD本身也引用了AR。ASCII艺术表示如下:
AS ---> ARD
\ |
\ v
\---> AR
因为我使用的另一个程序集 NHibernate 2.1 依赖于不同且不兼容版本的 AR,所以我想使用 ILMerge 将 AR 合并并内部化到 AS 中。理论上,我认为这应该可以实现;然而,我在执行理论时遇到了麻烦。
无论我尝试什么排列组合和选项,最终都会出现以下形式的错误:
ILMerge.Merge: 程序集 'Antlr3.Runtime.Debug' 合并不正确。它仍然被列为目标程序集中的外部引用。
我使用 ILMerge 能否实现我的目标?