我看到过一些文章讨论这两个类似的框架,但它们大多已有两年左右的历史。我认为这两个项目现在都比两年前成熟得多,情况也更复杂。
因此,考虑到每个图书馆的现状,我希望有人能详细解释每个图书馆的优点和缺点,以及目前应该优先选择哪一个。
CCI
优点:
- 可以为您提供更细粒度的性能控制
- 最新的版本稍微成熟一点
缺点:
- 对象模型更复杂(如果你像我一样是IL/低级别反射的新手,也会感到困惑(
Cecil(指较新的github版本(
优点:
- 具有更简单的对象模型,因此更容易上手
缺点:
- 最新版本不太成熟,因此可用的代码示例较少
- API是一项正在进行的工作
- 您将无法控制名称缓存(对于perf(
我会选择哪个
综合利弊,我肯定会选择CCI而不是Cecil。但我不会。
Cecil是一个升级版,有一个简单的API设计,有一位活跃的作者(好吧,7.5个月前就做了,现在看起来仍然如此(,并且在我遇到的任何问题上都可以轻松调试。
CCI在编写代码时非常痛苦——基于接口的设计太过了。代码很难调试。有些东西乍一看似乎是完整的,但不是,或者不能处理超过一个用例。NameTable
的东西让我晕头转向(比现在更让人晕头转向(。
Cecil-因为对我来说,社区对它的支持比CCI更好。对于cecil,我总是能更快地在邮件列表/网站上找到答案。