【问题标题】:Difference between IKVM.Reflection.Emit and Mono.CecilIKVM.Reflection.Emit 和 Mono.Cecil 之间的区别
【发布时间】:2016-01-20 09:12:47
【问题描述】:

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

Mono.Cecil 有相同的吗?对于这个用例,它们是否可以互换?他们现在都支持吗?它们之间的主要区别是什么(在发出 IL 方面)?

【问题讨论】:

    标签: .net reflection reflection.emit mono.cecil ikvm


    【解决方案1】:

    我知道这是一个老问题,但我想提供一个答案。 IKVM.Reflection.Emit API 是在其作者厌倦了 System.Reflection.EmitCecil.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 本身,我不确定是否有其他项目在使用它(但应该很多)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-25
      • 2020-05-10
      • 2014-09-20
      • 2010-10-28
      • 2015-10-04
      • 2012-08-12
      • 2011-02-18
      • 2019-12-21
      相关资源
      最近更新 更多