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

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

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

CCI

优点:

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

缺点:

  • 对象模型更复杂(如果你是IL /低级reflection的新手,那就很困惑,就像我一样)

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

优点:

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

缺点:

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

我选择哪个

在宣传利弊时,我肯定会选择CCI而不是塞西尔。 但我不会。

塞西尔崭露头角,拥有简单的API设计,拥有活跃的作者身份(嗯,7.5个月前做过, 现在似乎仍然如此 ),并且在我遇到的任何问题上都无法调试。

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

塞西尔 – 因为对我而言,社区对它的支持比CCI更好。 我总是在邮件列表/网站上找到更快的解决方案。