我有一个.NET 4.0解决方案,包含大约10个项目,我在Ubuntu Desktop 12.04上的单声道2.10.8.1上成功编译,该程序在VM中运行。
我正在尝试运行mkbundle将所有10个DLL组合成一个DLL,然后我可以在其他解决方案中引用(即一些核心库将在更高级别的应用程序中大量重用)。
这就是我正在运行以构建解决方案:
xbuild /nologo CoreApp.sln
然后我运行以下命令来组合DLL:
mkbundle -c --nomain -o Build/CoreApp.dll Build/FirstLibrary.dll Build/SecondLibrary.dll Build/ThirdLibrary.dll
这成功完成,我得到了CoreApp.dll。
但是,当我尝试构建依赖解决方案时,我得到以下异常:
Error CS0009: Metadata file `/home/user/project/Build/CoreApp.dll' does not contain valid metadata (CS0009) (HigherLevelApp.Impl)
如果有必要,我很乐意提供更多信息。
答案 0 :(得分:2)
mkbundle用于创建独立的二进制文件,而不是将多个库合并为一个。
你需要像il-merge这样的东西。
答案 1 :(得分:2)
mkbundle
不是IL合并。该工具的输出是一个独立的应用程序(有或没有单声道本身)。因此,其他.NET项目不再可用。
mkbundle
允许您分发单个文件,其中包含执行单个.NET应用程序所需的所有内容。
您正在寻找的是将多个装配合并到新装配中的方法。微软有这样一个工具和一些其他产品(许多基于Mono.Cecil)做类似的事情。