CCI vs. Mono.Cecil - 优点和缺点

clo*_*ven 20 .net c# cci mono.cecil

我已经看过讨论这两个类似框架的文章,但大多数都是两年左右.我认为这两个项目现在比两年前更加成熟,情况更复杂.

因此,考虑到每个图书馆的现状,我希望有人可以提供每个图书馆的优缺点的详细解释,目前应该首选.

Mer*_*ham 12

CCI

优点:

  • 可以为您的表现提供更精细的控制
  • 最新版本更成熟一些

缺点:

  • 对象模型更复杂(如果你是IL /低级反射的新手,我会很困惑)

塞西尔(指新版的git-hub版本)

优点:

  • 有一个更简单的对象模型,因此将更容易开始

缺点:

  • 最新版本不太成熟,因此可用的代码示例更少
  • API是一项正在进行的工作
  • 您将无法控制名称缓存(对于perf)

我选择哪个

在宣传优点/缺点时,我肯定会选择CCI而不是塞西尔.但我不会.

Cecil很有前途,有一个简单的API设计,有一个活跃的作者身份(好吧,7.5个月前做过,现在似乎仍然如此),并且在我遇到的任何问题上都无法调试.

CCI对代码非常痛苦 - 基于接口的设计太过分了.代码很难通过调试.有些事情乍一看似乎很完整,但不是或者不能处理多个用例. 这些NameTable东西使我的头旋转(比现在更多).