В настоящее время я работаю над компилятором для языка (внешнего байт-кода) и использую System.Reflection.Emit
.
Теперь все выглядит нормально, когда я открываю сгенерированную сборку в рефлекторе, и она также прекрасно компилируется в C # (и запускается), но когда я пытаюсь запустить основную функцию, которая генерируется, я получаю InvalidProgramException
* * 1005
"Common Language Runtime обнаружил недопустимую программу."
Вероятно, причиной является только один код операции, но, поскольку эта основная функция использует более 100 кодов операций, я не могу определить, какой код операции вызывает проблему.
Каждый код операции очень сложен, поэтому тестирование каждого кода операции вручную не требуется.
Есть ли способ получить .NET, чтобы сказать мне, где в функции он обнаруживает недопустимую программу?
А если нет, могу ли я использовать какой-либо другой инструмент для определения источника проблемы?