IKVM.Reflection.Emit和Mono.Cecil之间的区别

12

IKVM.Reflection.Emit具有“在运行时能够读取和生成.NET 1.1、.NET 2.0和.NET 4.0程序集(例如在.NET 2.0上运行)的能力。”

Mono.Cecil是否也具备相同的功能?它们在此用例中可互换吗?现在它们都得到了支持吗?它们之间在发出IL方面的主要区别是什么?

1个回答

4
我知道这是一个老问题,但我想提供一个答案。当作者厌倦了System.Reflection.Emit和Cecil.Reflection.Emit时,他发明了IKVM.Reflection.Emit API。为了使IKVMC编译器更快,他从头开始设计了这个新的API。
可以在以下博客文章中找到历史记录: 2008年8月 从Microsoft .NET反射转换为Cecil 2008年11月 从Cecil转换为IKVM.Reflection.Emit 2010年1月 宣布IKVM.Reflection 总的来说,IKVM.Reflection和Cecil具有类似的功能,而IKVM.Reflection API在许多方面应该更快。

迄今为止,您仍然可以看到Cecil在许多实用程序中广泛使用(例如Obfuscar,我正在维护的混淆工具)。 IKVM.Reflection主要用于Mono C#编译器和IKVM本身,我不确定是否还有其他项目在使用它(但应该很多)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接