从汇编中获取MSIL?

时间:2011-01-27 12:00:38

标签: c# .net assemblies clr il

是否可以在不加载类型信息的情况下从Assembly对象中有用地提取MSIL?

我有一个简单的应用程序,它接受一个字符串并尝试动态创建一个方法来进行非常快速的计算,但我想通过使用CodeCompileUnit来编译C#代码字符串来避免加载程序集/类型信息,从已编译的程序集中提取MSIL,并将MSIL发送到DynamicMethod。如果可能的话。

3 个答案:

答案 0 :(得分:2)

查看Mono.Cecil,帮助您阅读/修改/创建装配而不加载它们。

答案 1 :(得分:1)

获取MSIL的唯一方法是致电MethodBase.GetMethodBody Method。但它需要首先加载类型。

答案 2 :(得分:1)

直接使用System.Reflection.Emit。对于动态方法,您甚至不需要类型。