IKVM.Reflection.Emit 和 Mono.Cecil 之间的区别
Difference between IKVM.Reflection.Emit and Mono.Cecil
IKVM.Reflection.Emit 有 "the ability to read and emit .NET 1.1, .NET 2.0 and .NET 4.0 assemblies (while running on, for example, .NET 2.0).".
Mono.Cecil有相同的吗?对于这个用例,它们可以互换吗?他们现在都支持吗?它们之间的主要区别是什么(在发射 IL 方面)?
我知道这是一个老问题,但我想提供一个答案。 IKVM.Reflection.Emit
API 是在其作者厌倦了 System.Reflection.Emit
和 Cecil.Reflection.Emit
时发明的。为了让IKVMC编译器更快,他从零开始设计这个新的API.
历史可以从以下博文中找到,
2008 Aug Switch from Microsoft .NET reflection to Cecil
2008 Nov Switch from Cecil to IKVM.Reflection.Emit
2010 Jan Announce IKVM.Reflection
所以一般来说 IKVM.Reflection 和 Cecil 具有相似的功能,并且 IKVM.Reflection API 在很多方面应该更快。
到现在你仍然可以看到Cecil在很多实用程序中被广泛使用(比如Obfuscar,我正在维护的一个混淆工具)。 IKVM.Reflection主要用在Mono C#编译器和IKVM本身,不知道有没有其他项目在用(但应该很多)。
IKVM.Reflection.Emit 有 "the ability to read and emit .NET 1.1, .NET 2.0 and .NET 4.0 assemblies (while running on, for example, .NET 2.0).".
Mono.Cecil有相同的吗?对于这个用例,它们可以互换吗?他们现在都支持吗?它们之间的主要区别是什么(在发射 IL 方面)?
我知道这是一个老问题,但我想提供一个答案。 IKVM.Reflection.Emit
API 是在其作者厌倦了 System.Reflection.Emit
和 Cecil.Reflection.Emit
时发明的。为了让IKVMC编译器更快,他从零开始设计这个新的API.
历史可以从以下博文中找到,
2008 Aug Switch from Microsoft .NET reflection to Cecil
2008 Nov Switch from Cecil to IKVM.Reflection.Emit
2010 Jan Announce IKVM.Reflection
所以一般来说 IKVM.Reflection 和 Cecil 具有相似的功能,并且 IKVM.Reflection API 在很多方面应该更快。
到现在你仍然可以看到Cecil在很多实用程序中被广泛使用(比如Obfuscar,我正在维护的一个混淆工具)。 IKVM.Reflection主要用在Mono C#编译器和IKVM本身,不知道有没有其他项目在用(但应该很多)。