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

时间:2011-01-08 18:57:13

标签: c# dll merge ilmerge

首先,我不确定这是否是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),但是我不能让它工作,我真的需要一些帮助。上述错误意味着什么,我该如何解决?

3 个答案:

答案 0 :(得分:5)

  

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

由于你没有明确表示你已经检查了pdb并且exes是同步的,我想我会问一个显而易见的问题 - 文件夹中是否有pdb,你检查过文件的时间戳吗? / p>

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

尝试使用.NETZ代替ILMerge会有帮助吗?