据我所知,Microsoft的Compiler as a Service或Roslyn项目的灵感来自Mono Cecil。
但是Mono Cecil和NRefactory之间的关系是什么?一个人用另一个吗?或者他们是做同样事情的替代技术吗?
看起来它们都提供了相同的代码分析服务,就像Roslyn一样。
答案 0 :(得分:8)
你有一些误解。
Roslyn是一个私人项目,Mono人将他们的C#编译器转换为服务(Mono.CSharp程序集)。如果您阅读this post by Miguel,您可以了解有关2008年发生的事情的更多信息。
这两个碰巧是在同一个Microsoft PDC事件上一起宣布的(Anders's session首先是Miguel's session,然后是CCI)。因此Roslyn与Mono.CSharp有一些关系,但与Cecil没有任何关系。
Microsoft确实有另一个类似于Cecil的项目,名为stated in README
Cecil是MSIL读写器,而NRefactory主要是C#解析器和AST框架。 NRefactory取决于Cecil为{{3}},以及Mono.CSharp。
但我们应该看到,如果我们基于Cecil进行代码分析,我们就在MSIL层,这种分析实际上适用于所有.NET语言(包括VB.NET,Oxygene等)。如果代码分析基于NRefactory,则更侧重于C#层。
此时应该避免将Mono位与Roslyn进行比较,因为我们不确定Roslyn在最终确定并由Microsoft发布时的样子。对我来说,Roslyn应该相当于Mono上的一堆库(包括Cecil,NRefactory,Mono.CSharp和IKVM.Reflection)。