У меня есть некоторый .net-код, который генерирует сборку и запускает ее. Он работал надежно под .net в течение некоторого времени. В Mono код работает с некоторыми нетривиальными экземплярами, но на других он умирает с незаконным исключением IL.Тривиальный бит IL не работает в Mono
При попытке изолировать проблему я разрезал ее до точки, где он просто возвращает собственный int. Пример работает отлично под .net и умирает под Mono. Отражатель говорит код выглядит следующим образом, и это, как ожидается:
.method public hidebysig static native int Main() cil managed
{
.maxstack 8
L_0000: ldc.i8 4
L_0009: ret
}
Исключение я получаю: System.InvalidProgramException: Invalid IL-код в HelloWorldType: Main(): IL_0009: RET
Что я Я делаю неправильно, пожалуйста?
Запустите PEVerify на выходе. – leppie
Он ничего не говорит и возвращает rc 0 (хотя я не запускаю код, вызывая сборку, он запускается сразу после того, как он сгенерирован тем же кодом, который сгенерировал его). –