我正在使用ILMerge版本2.11.1103.0将4个DLL合并到一个新程序集中。假设他们被称为A,B,C,和d,它们的关系如下:ILMerge程序集未正确合并
B -> A
C -> A
D -> A
D -> C
当我在A,B和C运行ILMerge,这一切工作完全正常。然而,当我加入DI收到以下错误:
An exception occurred during merging:
ILMerge.Merge: The assembly 'A' was not merged in correctly.
It is still listed as an external reference in the target assembly.
at ILMerging.ILMerge.Merge()
at ILMerging.ILMerge.Main(String[] args)
我一直在使用如下所示ILMerge DLL: Assembly not merged in correctly, still listed as an external reference的/关闭的选项尝试,但遗憾的是它并没有帮助:
In order to close the target assembly, the number of assemblies to be added to the input is 0.
当我改变的顺序组件,我收到以下异常:
An exception occurred during merging:
Index was outside the bounds of the array.
at System.Compiler.ISymUnmanagedWriter.CloseMethod()
at System.Compiler.Ir2md.VisitMethodBody(Method method)
at System.Compiler.Ir2md.VisitMethod(Method method)
at System.Compiler.Ir2md.Visit(Node node)
at System.Compiler.Ir2md.VisitClass(Class Class)
at System.Compiler.Ir2md.Visit(Node node)
at System.Compiler.Ir2md.VisitModule(Module module)
at System.Compiler.Ir2md.SetupMetadataWriter(String debugSymbolsLocation)
at System.Compiler.Ir2md.WritePE(Module module, String debugSymbolsLocation, BinaryWriter writer)
at System.Compiler.Writer.WritePE(String location, Boolean writeDebugSymbols, Module module, Boolean delaySign, String keyFileName, String keyName)
at System.Compiler.Writer.WritePE(CompilerParameters compilerParameters, Module module)
at System.Compiler.Module.WriteModule(String location, CompilerParameters options)
at ILMerging.ILMerge.Merge()
at ILMerging.ILMerge.Main(String[] args)
我使用的完整命令行是:
ILMerge.exe /targetplatform:v4,"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" /log:ilmerge.log /target:library /union /xmldocs /copyattrs /allowMultiple /internalize /closed /keyfile:keyfile.snk /out:Merged.dll A B C D
任何人都可以看到我做错了什么?谢谢。
将连接到电子邮件的程序集发送给Microsoft Research的Mike Barnett。他过去一直很有回应,所以你会有一些可能会听到的声音。他的电子邮件地址位于此页面上:http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx – 2012-08-02 21:23:09
太棒了,谢谢。会试一试。 – Mightymuke 2012-08-02 22:15:36
对我而言,这个错误是非破坏性的。合并的DLL通过所有单元测试并检查程序集显示一切都在那里。所以不确定哪些元素“没有正确合并”。 – 2015-12-22 15:59:36