【问题标题】:PEVerify MD Error: 0x8013124CPEVerify MD 错误:0x8013124C
【发布时间】:2009-05-25 15:56:01
【问题描述】:

在自定义生成的程序集上运行 PEVerify 时出现此“错误”。

[MD](0x8013124C): Error: Method has a duplicate, token=0x06000023. 
                         [token:0x06000021]
[MD](0x8013124C): Error: Method has a duplicate, token=0x06000021. 
                         [token:0x06000023]

除此之外(以及其他 196 个完全相同的错误),元数据和 IL 没有问题。它也可以正常工作。

我无法追踪它的来源(因为它不会以任何方式影响组装)。

很遗憾,谷歌并没有透露太多关于这个错误的信息。

谁能提供一些关于这个“错误”的见解以及它是如何引起的?

谢谢:)

【问题讨论】:

  • 您是否使用 Mono.Cecil 来生成您的程序集?
  • 不,我使用的是旧版本的 DLR,而后者又使用 Reflection.Emit。
  • 好的。我使用 Cecil 遇到了相同的 pb,如果我没记错的话,在修改程序集之前在主模块上调用 FullLoad 修复它。也许这可能是一个(薄弱的)起点......

标签: .net peverify


【解决方案1】:

我解决了这个问题。

这是由发出具有另一个确切签名的方法引起的。

更新

这适用于任何成员。因此,在混淆程序集上运行时,这可能会出现相同的 MD 错误。

【讨论】:

    【解决方案2】:

    听起来 peverify 认为您在程序集元数据中有重复的方法行。我在 cmets 中读到您正在使用 Reflection.Emit 来生成程序集。听起来您可能正在重新使用方法定义进行生成,而不是为每个方法创建一个新方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 2016-12-20
      • 2019-12-18
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多