Search code examples
c#monoubuntu-12.04mkbundle

mkbundle combined DLL causes Invalid Metadata exception when referenced in other projects


I have a .NET 4.0 solution with about 10 projects that I am successfully compiling on mono 2.10.8.1 on Ubuntu Desktop 12.04, which is running in a VM.

I am trying to run mkbundle to combine all 10 DLLs into a single DLL that I can then reference in other solutions (i.e. some core libraries that will be heavily reused in higher level applications).

This is what I am running to build the solution:

xbuild /nologo CoreApp.sln

Then I am running the following to combine the DLLs:

mkbundle -c --nomain -o Build/CoreApp.dll Build/FirstLibrary.dll Build/SecondLibrary.dll Build/ThirdLibrary.dll

This successfully completes, and I get CoreApp.dll.

However, when I try to build the dependent solution, I get the following exception:

Error CS0009: Metadata file `/home/user/project/Build/CoreApp.dll' does not contain valid metadata (CS0009) (HigherLevelApp.Impl)

I'd be happy to provide more information if necessary.


Solution

  • mkbundle is for creating a standalone binary, not merging several libraries into one.

    You want something like il-merge.