43

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

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

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

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

我使用“项目”引用完成的所有程序集引用,过去都没有失败。

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

4

6 回答 6

41

我不得不使用这个/closed论点。根据官方文档

关闭

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

于 2010-03-02T22:16:06.117 回答
7

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

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

如果您要合并的程序集名称与Properties > Application. 更改输出程序集名称应该可以修复它。

于 2016-04-05T17:55:58.077 回答
1

我收到了这个错误,它指向了我正在合并到单个 dll 中的 Microsoft.Xrm.Sdk 引用。当我设置另一个引用 Microsoft.Xrm.Sdk.Deployment 以合并到 dll 中时,问题已得到解决。有趣的是在一个单独的项目中,我有第一个参考合并和第二个部署 dll 没有合并,它根本没有抱怨。

于 2018-09-18T22:38:05.177 回答
1

这正是@HughJeffner 作为图像的答案。我花了一段时间并尝试复制这些说明。

不应相同的字段的位置。

于 2020-02-29T10:50:21.077 回答
0

发布时从配置中选择“不合并”,然后发布项目

于 2019-09-12T09:09:28.743 回答
0

我得到了这个System.Memory.dll奇怪的错误。在合并和部署 Dynamics CRM 插件 dll 的上下文中。

实际上,我只是忽略了它并部署了我的合并 DLL……相信 Dynamics CRM 的插件上下文会在部署时提供它。

MergedPlugin.dll即使有关于System.Memory.dll. 所以我刚刚将插件部署到 CRM,它就可以工作了。

于 2022-01-13T17:24:20.317 回答