Tri*_*ion 1 .net ilmerge antlr stringtemplate
我正在尝试使用ILMerge将一些可传递引用的程序集内化到我正在引用的程序集中,以消除与我的项目中的那些传递依赖项的冲突.
特别是,我引用了Antlr3.StringTemplate(以下简称AS,可在此处获取:http://www.stringtemplate.org/download.html).它引用了Antlr3.Runtime.Debug(ARD)和Antlr3.Runtime(AR).ARD本身也引用了AR.在ASCII艺术中,那是:
AS ---> ARD
\ |
\ v
\---> AR
Run Code Online (Sandbox Code Playgroud)
因为我正在使用的另一个程序集NHibernate 2.1依赖于不同的,不兼容的AR版本,我想使用ILMerge将AR合并并内化到AS中.从理论上讲,我认为这应该有效; 但是,我在执行理论时遇到了麻烦.
无论我尝试什么样的排列和选项,我最终都会遇到以下形式的错误:
ILMerge.Merge:程序集'Antlr3.Runtime.Debug'未正确合并.它仍然在目标程序集中列为外部引用.
我想用ILMerge完成的是什么?
当您从命令行(或在 MSBuild 任务中)运行 ILMerge 时,在您列出的所有要合并的程序集文件中,它是第一个在合并开始时被视为主程序集的文件。如果您还没有,请确保 AS 程序集文件名在您的合并程序集列表中首先列出。
ILMerge的最新版本有一个/closed选项,它适用于合并程序集的传递闭包.它解决了这个确切的问题(参见章节2.6 Closed和4.1 Input assembly not merged in correctlyILMerge.doc用户手册).