IKVM.Reflection.Emit具有"读取和发出.NET 1.1,.NET 2.0和.NET 4.0程序集的能力(例如,在.NET 2.0上运行时(。
Mono.Cecil也有同样的东西吗?对于此用例,它们是否可以互换?现在它们都支持吗?它们之间(在发射IL方面(之间的主要区别是什么?
我知道这是一个老问题,但我想提供一个答案。 IKVM.Reflection.Emit
API 是在作者厌倦了System.Reflection.Emit
和Cecil.Reflection.Emit
时发明的。为了使IKVMC编译器更快,他从头开始设计了这个新的API。
历史可以从以下博客文章中找到,
2008 年 8 月 从 Microsoft .NET 反射切换到 Cecil
2008年11月 从塞西尔切换到IKVM。反射.发出
2010年1月宣布IKVM。反射
所以一般来说,IKVM。Reflection和Cecil具有类似的功能,IKVM。反射 API 应该在很多方面更快。
到目前为止,您仍然可以看到Cecil广泛用于许多实用程序(例如Obfuscar,我正在维护的混淆工具(。伊克姆。反射主要用于 Mono C# 编译器和 IKVM 本身,我不确定是否有其他项目使用它(但应该很多(。