PEVerify Ошибка MD: 0x8013124C

Я получаю эту «ошибку» при запуске 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 нет. И работает тоже корректно.

Я не смог отследить, откуда он взялся (поскольку это никак не влияет на сборку).

Google, к сожалению, мало что сообщает об этой ошибке.

Может ли кто-нибудь дать некоторое представление об этой «ошибке» и о том, как она может быть вызвана?

Спасибо :)


person leppie    schedule 17.04.2009    source источник
comment
Используете ли вы Mono.Cecil для создания сборки?   -  person Romain Verdier    schedule 17.04.2009
comment
Нет, я использую старую версию DLR, которая, в свою очередь, использует Reflection.Emit.   -  person leppie    schedule 17.04.2009
comment
ХОРОШО. Я столкнулся с тем же pb, используя Cecil, и, если я правильно помню, вызов FullLoad на основном модуле перед изменением сборки исправил это. Может быть, это может быть (слабой) отправной точкой...   -  person Romain Verdier    schedule 17.04.2009


Ответы (2)


Я решил проблему.

Это вызвано испусканием метода с точной сигнатурой другого.

ОБНОВЛЕНИЕ

Это касается любого члена. Следовательно, это, вероятно, будет иметь ту же ошибку MD при запуске на запутанных сборках.

person leppie    schedule 19.05.2009

Похоже, что peverify считает, что у вас есть повторяющиеся строки метода в метаданных сборки. Я прочитал в комментариях, что вы используете Reflection.Emit для создания сборки. Похоже, что вы повторно используете определение метода для генерации вместо того, чтобы создавать новое для каждого метода.

person JaredPar    schedule 17.04.2009