ILMerge DLL:程序集未正确合并,仍列为外部引用

Fio*_*ite 36 c# ilmerge build-process assemblies

在.NET C#工具的构建过程中,我一直在使用ILMerge将程序集合并到一个exe中.

我最近添加了一个新的类库,现在ILMerge失败了.我记得要告诉它合并新的DLL!

它现在给我这个错误,我真的不明白:

ILMerge.Merge:程序集"DataObjects"未正确合并.它仍然在目标程序集中列为外部引用.

我使用"项目"引用完成的所有程序集引用,并且它在过去没有失败.

任何人都可以为我解释这个错误,或建议一个解决方法吗?

Fio*_*ite 37

我不得不使用这个/closed论点.根据官方文件:

关闭

在调用Merge之前设置此项时,将计算输入程序集的"传递闭包"并将其添加到输入程序集列表中.如果直接或间接地从最初指定的输入程序集之一引用程序集并且它具有对其中一个输入程序集的外部引用,或者具有此类引用的程序集之一,则程序集被视为传递闭包的一部分.复杂,但这就是生活......

  • 要添加一些上下文,可以在ilmerge命令中添加/ closed开关可能“起作用”,但潜在的问题是存在一个(或多个)未合并的程序集,该程序集直接引用了您要合并的内容。存在。您可能要检查这是否是有意的,并可能将程序集显式添加到合并操作中-如果不是的话,请删除该引用,以避免将来造成混淆... (2认同)

Hug*_*ner 5

尝试发布将所有输出合并到单个程序集的Web应用程序时,我收到类似的错误消息:

合并程序集时发生错误:ILMerge.Merge:目标程序集将自身列为外部引用.

如果要合并的程序集名称与Web应用程序的程序集名称匹配,则会发生这种情况Properties > Application.更改输出程序集名称应该修复它.