2014-01-21 1 views
4

Я понимаю, что компилятор Microsoft как услуга или проект Roslyn был вдохновлен Моно Сесилом.Каковы отношения между Mono Cecil и NRefactory и как их сравнить с Roslyn?

Но каковы отношения между Mono Cecil и NRefactory? Использует ли другой? Или это альтернативные технологии, которые делают то же самое?

Похоже, что оба они обеспечивают такое же множество услуг анализа кода, как и Roslyn.

+1

+1, это должен быть хороший вопрос, если он использует лучший заголовок. –

+0

Спасибо, @LexLi. Не стесняйтесь редактировать заголовок. –

ответ

7

У вас есть недоразумение.

Roslyn был частным проектом, когда ребята из Mono превратили свой компилятор C# в службу (сборка Mono.CSharp). Если вы читаете this post by Miguel вы можете узнать больше о том, что произошло в 2008 году

Два случилось быть объявлены вместе на том же мероприятии Microsoft PDC (Anders's session первым, а затем Miguel's session). Итак, у Roslyn есть некоторые отношения с Mono.CSharp, но никаких отношений с Сесилом.

Microsoft делает еще один проект, который похож на Сесила, который называется CCI

Сесил читатель MSIL и писатель, в то время как NRefactory в первую очередь является C# парсер и рамки АСТ. NRefactory зависит от Cecil как stated in README, а также Mono.CSharp.

Но мы должны видеть, что если мы проводим анализ кода на основе Cecil, мы находимся на уровне MSIL, и такой анализ применим ко всем .NET-языкам (включая VB.NET, Oxygene и т. Д.). Если анализ кода основан на NRefactory, он больше фокусируется на слоях C#.

Сравнение бит Mono с Roslyn следует избегать в настоящий момент, так как мы не уверены, как выглядит Roslyn, когда он будет завершен и опубликован Microsoft. Для меня Roslyn должен быть эквивалентен стек библиотек на Mono (включая Cecil, NRefactory, Mono.CSharp и IKVM.Reflection).

+0

Большое вам спасибо, @LexLi. Ты дал мне ответ, который я искал. Я действительно исследовал немного, прежде чем публиковать этот вопрос. В дополнение к метаданным CCI, которые вы упомянули (http://ccimetadata.codeplex.com/), также есть проект Microsoft CCIAST (http://cciast.codeplex.com/). Я хотел кратко разобраться в различиях, прежде чем решить, какой из них нужно инвестировать в обучение времени. Огромное спасибо. Ты прояснил это для меня. –

Смежные вопросы