使用ILMerge合并.dll文件无法正常工作

首先,我不确定这是否是ILMerge的问题,但我无法将.dll文件合并到我的应用程序中。 我在命令行上尝试了这个:

ilmerge /target:winexe /out:test.exe MyApp.exe lib1.dll lib2.dll lib3.dll 

我收到以下错误,我不知道这意味着什么:

MyApp的元数据中报告了错误。 与D:\ C#\ source \ bin \ ReleaseMyApp.exe关联的pdb已过期。

我顺便使用最新版本(2.10.526.0),但是我不能让它工作,我真的需要一些帮助。 上述错误意味着什么,我该如何解决?

与D:\ C#\ source \ bin \ ReleaseMyApp.exe关联的pdb已过期。

既然你没有明确表示你已经检查了pdb和exes是同步的,我想我会问一个显而易见的问题 – 文件夹中是否有pdb,你检查过文件的时间戳吗?

据我了解,如果源文件有可用的调试信息,那么ilmerge将为目标创建调试信息,如果原始文件已过期,那么它可能会显示此错误而不是生成不正确的信息。

如果您不需要调试信息,删除pdb文件会发生什么?

我希望这种类型的元数据存储为字符串,可能是显式代码,但可能是通过属性中的“typeof”。

您可以尝试处理AppDomain的TypeResolve事件,检测失败的类型字符串并返回您想要的类型 – 这应该解决它现在位于不同程序集中的事实。

http://msdn.microsoft.com/en-us/library/system.appdomain.typeresolve.aspx

试用.NETZ而不是ILMerge 会有帮助吗?