2015-10-21 1 views
11

IKVM.Reflection.Emit имеет «возможность читать и выпускать сборки .NET 1.1, .NET 2.0 и .NET 4.0 (во время работы, например, .NET 2.0). ".Разница между IKVM.Reflection.Emit и Mono.Cecil

Есть ли у Mono.Cecil то же самое? Являются ли они взаимозаменяемыми для этого варианта использования? Оба они поддерживаются в настоящее время? Каковы основные различия между ними (при испускании ИЛ)?

ответ

1

Я знаю, что это был старый вопрос, но я хотел бы дать ответ. IKVM.Reflection.Emit API был изобретен, когда его автор устал от System.Reflection.Emit и Cecil.Reflection.Emit. Чтобы сделать компилятор IKVMC быстрее, он работал с нуля, чтобы разработать этот новый API.

История может быть найдена из следующих сообщений в блоге,

2008 Aug Switch from Microsoft .NET reflection to Cecil

2008 Nov Switch from Cecil to IKVM.Reflection.Emit

2010 Jan Announce IKVM.Reflection

Так вообще говоря IKVM.Reflection и Сесил имеют сходную функциональность, и IKVM.Reflection API должен быть быстрее во многих отношениях.

До сих пор вы все еще можете видеть, что Cecil широко используется во многих утилитах (таких как Obfuscar, инструмент обфускации, который я поддерживаю). IKVM.Reflection в основном используется в компиляторе Mono C# и сам IKVM, и я не уверен, есть ли в нем другие проекты (но их должно быть много).