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