Problem with generic types
Hello, I'm receiving the error at the end of the following log, with some generic types. I was able to reproduce the problem in the attached solution (please check README.txt). Thanks in advance.
ILMerge version 2.14.1208.65535 Copyright (C) Microsoft Corporation 2004-2006. All rights reserved. ILMerge /log:D:\Temp\ILMergeTest\ILMergeTest\merge.log /targetplatform:v4 /out:D:\Temp\ILMergeTest\ILMergeTest\ILMergeTest\bin\Debug\ILMergeTest.Merged.exe D:\Temp\ILMergeTest\ILMergeTest\ILMergeTest\bin\Debug\ILMergeTest.exe D:\Temp\ILMergeTest\ILMergeTest\ILMergeTest\bin\Debug\ILMergeTestLib.dll Set platform to 'v4', using directory 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319..\v4.0.30319' for mscorlib.dll Running on Microsoft (R) .NET Framework v4.0.30319 mscorlib.dll version = 4.0.0.0 The list of input assemblies is: D:\Temp\ILMergeTest\ILMergeTest\ILMergeTest\bin\Debug\ILMergeTest.exe D:\Temp\ILMergeTest\ILMergeTest\ILMergeTest\bin\Debug\ILMergeTestLib.dll Trying to read assembly from the file 'D:\Temp\ILMergeTest\ILMergeTest\ILMergeTest\bin\Debug\ILMergeTest.exe'. Successfully read in assembly. There were no errors reported in ILMergeTest's metadata. Trying to read assembly from the file 'D:\Temp\ILMergeTest\ILMergeTest\ILMergeTest\bin\Debug\ILMergeTestLib.dll'. Successfully read in assembly. There were no errors reported in ILMergeTestLib's metadata. Checking to see that all of the input assemblies have a compatible PeKind. ILMergeTest.PeKind = ILonly ILMergeTestLib.PeKind = ILonly All input assemblies have a compatible PeKind value. Using assembly 'ILMergeTest' for assembly-level attributes for the target assembly. Merging assembly 'ILMergeTest' into target assembly. Merging assembly 'ILMergeTestLib' into target assembly. Copying 2 Win32 Resources from assembly 'ILMergeTest' into target assembly. Transferring entry point 'ILMergeTest.Program.Main(System.String[])' from assembly 'ILMergeTest' to assembly 'ILMergeTest.Merged'. There were no errors reported in the target assembly's metadata. ILMerge: Writing target assembly 'D:\Temp\ILMergeTest\ILMergeTest\ILMergeTest\bin\Debug\ILMergeTest.Merged.exe'. An exception occurred during merging: Unable to cast object of type 'System.Compiler.Interface' to type 'System.Compiler.Class'. at System.Compiler.StandardVisitor.VisitTypeParameter(TypeNode typeParameter) at System.Compiler.StandardVisitor.VisitTypeParameterList(TypeNodeList typeParameters) at System.Compiler.Specializer.VisitMethod(Method method) at System.Compiler.StandardVisitor.VisitMemberList(MemberList members) at System.Compiler.Specializer.ProvideTypeMembers(TypeNode typeNode, Object handle) at System.Compiler.TypeNode.get_Members() at System.Compiler.Specializer.GetCorrespondingMember(Member member, TypeNode specializedType) at System.Compiler.Duplicator.VisitMemberReference(Member member) at System.Compiler.Duplicator.VisitMemberBinding(MemberBinding memberBinding) at System.Compiler.Duplicator.Visit(Node node) at System.Compiler.Duplicator.VisitExpression(Expression expression) at System.Compiler.StandardVisitor.VisitMethodCall(MethodCall call) at System.Compiler.Duplicator.Visit(Node node) at System.Compiler.Duplicator.VisitExpression(Expression expression) at System.Compiler.StandardVisitor.VisitExpressionStatement(ExpressionStatement statement) at System.Compiler.Duplicator.Visit(Node node) at System.Compiler.StandardVisitor.VisitStatementList(StatementList statements) at System.Compiler.StandardVisitor.VisitBlock(Block block) at System.Compiler.Duplicator.Visit(Node node) at System.Compiler.StandardVisitor.VisitStatementList(StatementList statements) at System.Compiler.StandardVisitor.VisitBlock(Block block) at System.Compiler.Duplicator.ProvideMethodBody(Method dup, Object handle, Boolean asInstructionList) at System.Compiler.Method.get_Body() at System.Compiler.Ir2md.VisitMethod(Method method) at System.Compiler.Ir2md.VisitClass(Class Class) 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 ILMerging.ILMerge.Merge() at ILMerging.ILMerge.Main(String[] args)
did you ever figure out the root cause for this?
Edit: I was able to use ILRepack and it did not have this problem.
@kOchirasu never figured out. I simply abandoned the idea to merge certain projects, since I never received any help on this issue and I haven't the right know-how to solve it by myself. Anyway, thanks for the tip, I'll certainly give ILRepack a try!
EDIT: @kOchirasu I've tried ILRepack, no problem at all! I already migrated successfully every project requiring merge on it. Thanks a lot for your suggestion!