Я пытаюсь написать свою собственную игрушку My Toy Language -> Компилятор MSIL, чтобы лучше понять, как работают компиляторы. У меня работают синтаксический анализ и лексирование, я построил деревья выражений и, используя API дерева выражений System.Linq.Expressions, у меня есть работающий интерпретатор. Теперь я хотел бы выпустить несколько реальных сборок MSIL.
Проблема в том, что я не могу понять, как на самом деле создавать эти сборки. Класс MethodBuilder принимает только необработанные тела методов MSIL. , поэтому мне нужно получить необработанный MSIL моего дерева выражений. Вызов Expression.Compile() возвращает рабочий делегат, но я не в состоянии получить его базовый MSIL. Вызов MethodInfo.GetMethodBody() вызывает исключение InvalidOperationException поскольку он не реализован в этом конкретном дочернем классе.
Как связать этого делегата с новой сборкой?