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

时间:2009-11-27 09:27:31

标签: c# build-process assemblies ilmerge

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

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

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

  

ILMerge.Merge:程序集   'DataObjects'未合并   正确。它仍被列为   目标中的外部参考   组装

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

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

5 个答案:

答案 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)

这正是@HughJeffner的回答(作为图像)。我花了一段时间,并尝试复制指令。

Locations of the fields that should NOT be identical.