Mono Cecil与PostSharp Core对比Microsoft CCI实施AOP框架

15 .net aop postsharp cci mono.cecil

哪个在功能,易用性,文档,示例,社区/支持,VS集成,已知实现,长期可行性以及实现自定义AOP框架的构建速度方面更好?

我将从我所知道的开始(到目前为止我只尝试过PostSharp):

  • Microsoft Common Compiler Instrastruture(CCI):我读过,它用于FxCop,ILMerge,Spec#和Code Contracts.它似乎是非常低的水平,因为它甚至没有注意纠正当用它修改IL时borken的分支代码的偏移.
  • PostSharp已有5年的历史,有很多AOP功能(例如,提取一些你需要手动完成IL的事情),源代码可用,只有一个人开发/支持,但他正计划将此作为一项业务,有文档但可能更好,构建需要大约两倍的时间,很少有关于如何注入IL和2.0版本的样本将很快发布,这有望得到很大改善.
  • Mono Cecil:由一个人编写,是Mono套件的一部分,Reflector的插件名为Reflexil,使用Mono Cecil.

ske*_*ar7 6

Microsoft.CCI和Mono.Cecil都是低级别的,并且不验证生成的程序集.如果生成的代码或程序集结构中存在任何错误,则需要大量时间才能找到问题的原因.
我建议使用PostSharp,如果它的功能足以完成任务.
否则...... Mono.Cecil具有更好,更易理解和易于使用的对象模型.但是,在我的程序中使用它时有一个丑陋的错误(在程序集中保存了对错误方法的引用;我认为元数据令牌处理存在一些错误)
Microsoft.CCI有一个丑陋的,完全过度设计的对象模型同时缺乏许多简单的功能; 然而,它比Mono.Cecil更成熟.最后,我放弃了Mono.Cecil并将Microsoft.CCI用于我的程序.