I'm trying to export an expression tree to a PE assembly as the main entry point. I've acquired a Lambda Expression through building an expression tree, for example:
using System.Linq;
using System;
// 1. use expression trees to create a block expression (not shown)
// 2. create a lambda expression:
LambdaExpression exprLambda = Expression.Lambda(exprBlock, new ParameterExpression[0]);
MethodBuilder mbuilder = null;
// 3. ??? Somehow get a method builder instance that works ???
// 4. Compile the lambda using the MethodBuilder instance.
exprLambda.CompileToMethod(mbuilder);
// 5. ??? Somehow get an AssemblyBuilder instance to .Save(..) this to disk. ???
Steps 3 and 5 are what I'm missing.
Instead of just using
Expression.Compile
, useExpression.CompileToMethod(MethodBuilder)
.Short but complete example which creates an executable on disk, with the expression tree as the code executed in the entry point: