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

时间:2011-07-18 00:36:34

标签: c# .net mono.cecil cci

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

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

2 个答案:

答案 0 :(得分:12)

<强> CCI

优点:

  • 可以对您的表现给予更精细的控制
  • 最新版本有点成熟

缺点:

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

Cecil (指the newer git-hub version

优点:

  • 有一个更简单的对象模型,因此更容易上手

缺点:

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

我选择

嘲笑利弊,看起来我肯定会选择CCI胜过塞西尔。但我不会。

Cecil崭露头角,拥有简单的API设计,拥有活跃的作者身份(嗯,7.5个月前,and still seems to now),并且在我遇到的任何问题上都无法调试。

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

答案 1 :(得分:1)

塞西尔 - 因为对我而言,社区对它的支持比CCI更好。我一直在塞西尔的邮件列表/网站上找到答案。