我会尽可能简单地解释,如果需要更多信息,请告诉我。我下载了ILMerge来将Newtonsoft.Json.dll合并到我的类库中。我正在使用以下命令从后期构建事件命令行调用ILMerge:
"$(ProjectDir)bin\ILMerge.exe" /internalize:"$(ProjectDir)bin\ILMergeIncludes.txt" /out:"$(TargetDir)$(TargetName).all.dll" "$(TargetDir)$(TargetName).dll" "$(TargetDir)*.dll" /target:library /targetplatform:v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319 /wildcards
在输出窗口中,它显示:
An exception occurred during merging:
ILMerge.Merge: ERROR!!: Duplicate type 'myLibrary.some.class' found in assembly 'myLibrary.all'. Do you want to use the /alllowDup option?
at ILMerging.ILMerge.MergeInAssembly(AssemblyNode a, Boolean makeNonPublic, Boolean targetAssemblyIsComVisible)
at ILMerging.ILMerge.Merge()
at ILMerging.ILMerge.Main(String[] args)
问题在于'myLibrary.some.class'并不是重复的。
我已经在互联网上寻找线索很久了,但我找到的只有以下两个链接,以及一些网络应用程序的情况,人们复制/粘贴页面时忘记更改类名。 类似的问题,但解决方案似乎不相关 同样的求助声,但没有答案 我尝试使用allowDup选项,但在合并后的dll中,它将'myLibrary.some.class'变成'myLibrary.some.random125624.class'。然后我尝试使用allowDup传递'class',但是我会得到“重复类型”错误,然后是'class2',然后是'class3',然后是'class4'...似乎没有重复类型的数量限制!
我确定这些类不是重复的,因为命名空间非常特定于我的公司和项目。
有人能帮忙吗?