查看从编译表达式生成的 IL 代码

2023-12-21

是否可以查看在表达式树上调用 Compile() 时生成的 IL 代码?考虑这个非常简单的例子:

class Program
{
    public int Value { get; set; }

    static void Main(string[] args)
    {
        var param = Expression.Parameter(typeof(Program));
        var con = Expression.Constant(5);
        var prop = Expression.Property(param, typeof(Program).GetProperty("Value"));
        var assign = Expression.Assign(prop, con);
        Action<Program> lambda = Expression.Lambda<Action<Program>>(assign, param).Compile();

        Program p = new Program();
        lambda(p);



        //p.Value = 5;
    }
}

现在,表达式树执行最后一行的操作Main说。编译应用程序,然后在 Reflector 中打开它。可以看到IL代码p.Value = 5;完成任务。但表达式树是在运行时创建并编译的。是否可以查看编译后生成的 IL 代码?


是的!使用这个工具:

https://github.com/drewnoakes/il-visualizer https://github.com/drewnoakes/il-visualizer

当我实现和调试编译时,这非常有用,我相信你可以想象到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查看从编译表达式生成的 IL 代码 的相关文章

随机推荐