是否可以在不加载类型信息的情况下从 Assembly 对象中有效地提取 MSIL?
我有一个简单的应用程序,它接受一个字符串并尝试动态创建一种方法来进行非常快速的计算,但我想通过使用CodeCompileUnit
编译 C# 代码字符串、从编译的程序集中提取 MSIL 来避免加载程序集/类型信息,并将 MSIL 发射到 DynamicMethod 中。如果这是可能的。
是否可以在不加载类型信息的情况下从 Assembly 对象中有效地提取 MSIL?
我有一个简单的应用程序,它接受一个字符串并尝试动态创建一种方法来进行非常快速的计算,但我想通过使用CodeCompileUnit
编译 C# 代码字符串、从编译的程序集中提取 MSIL 来避免加载程序集/类型信息,并将 MSIL 发射到 DynamicMethod 中。如果这是可能的。
看看Mono.Cecil,它可以帮助您在不加载它们的情况下阅读/修改/创建程序集。
获得 MSIL 的唯一方法是调用MethodBase.GetMethodBody Method。但它需要先加载类型。
直接使用System.Reflection.Emit。对于动态方法,您甚至不需要类型。