在.NET C#工具的构建过程中,我一直在使用ILMerge将程序集合并到一个exe中。
我最近添加了一个新的类库,现在ILMerge失败了。我记得要告诉它合并新的DLL!
现在它给了我这个错误,我真的不明白:
ILMerge.Merge:程序集 'DataObjects'未合并 正确。它仍被列为 目标中的外部参考 组装
我使用'项目'引用完成的所有程序集引用,并且它在过去没有失败。
有人可以为我解释这个错误,或者建议一个解决方法吗?
答案 0 :(得分:37)
我不得不使用/closed
参数。根据{{3}}:
闭
在调用Merge之前设置此项时, 然后是“传递性的封闭” 计算并添加输入程序集 到输入程序集列表。一个 装配被认为是 传递性封闭如果是的话 引用,直接或 间接地,从原来的一个 指定的输入程序集,它有 一个外部参考 输入程序集,或其中之一 具有此类引用的程序集。 复杂,但这就是生活......
答案 1 :(得分:5)
在尝试发布将所有输出合并到单个程序集的Web应用程序时,我收到了类似的错误消息:
合并程序集时发生错误:ILMerge.Merge:目标程序集将自身列为外部引用。
如果要合并的程序集名称与Properties > Application
下的Web应用程序的程序集名称匹配,则会发生这种情况。更改输出程序集名称应修复它。
答案 2 :(得分:0)
我收到此错误,它指向我正在合并到单个dll中的Microsoft.Xrm.Sdk参考。当我将另一个引用Microsoft.Xrm.Sdk.Deployment设置为也合并到dll中时,此问题已修复。有趣的是,在一个单独的项目中,我合并了第一个参考,而第二个部署dll没有合并,并且完全没有抱怨。
答案 3 :(得分:0)
发布时,从配置中选择“不合并”,然后发布项目
答案 4 :(得分:0)