4

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

4

3 回答 3

5

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

由于您没有明确表示您已经检查过 pdb 和 exe 是否同步,我想我会问一个明显的问题 - 文件夹中是否有 pdb 并且您检查过文件上的时间戳?

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

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

于 2011-01-08T19:57:41.217 回答
0

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

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

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

于 2011-01-08T19:17:43.177 回答
0

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

于 2011-01-08T19:37:54.097 回答