2015-10-21 23 views
11

IKVM.Reflection.Emit hat "die Fähigkeit, .NET 1.1, .NET 2.0 und .NET 4.0-Assemblys zu lesen und zu emittieren (während beispielsweise .NET 2.0 ausgeführt wird)). "Unterschied zwischen IKVM.Reflection.Emit und Mono.Cecil

Hat Mono.Cecil das gleiche? Sind sie für diesen Anwendungsfall austauschbar? Werden sie beide heute unterstützt? Was sind die Hauptunterschiede zwischen ihnen (bei der Emission von IL)?

Antwort

1

Ich weiß, das war eine alte Frage, aber ich würde gerne eine Antwort geben. IKVM.Reflection.Emit API wurde erfunden, als der Autor von System.Reflection.Emit und Cecil.Reflection.Emit müde war. Um den IKVMC-Compiler schneller zu machen, arbeitete er von Grund auf an der Entwicklung dieser neuen API.

2008 Aug Switch from Microsoft .NET reflection to Cecil

2008 Nov Switch from Cecil to IKVM.Reflection.Emit

2010 Jan Announce IKVM.Reflection

So allgemein gesprochen IKVM.Reflection und Cecil haben ähnliche Funktionalitäten

Die Geschichte kann aus den folgenden Blog-Posts, gefunden werden, und IKVM.Reflection API sollte in vielerlei Hinsicht schneller sein.

Bis jetzt können Sie immer noch sehen, dass Cecil in vielen Dienstprogrammen (wie Obfuscar, ein Verschleierungstool, das ich pflege) weit verbreitet ist. IKVM.Reflection wird hauptsächlich im Mono-C# -Compiler und IKVM selbst verwendet, und ich bin mir nicht sicher, ob es andere Projekte gibt (die aber viele sein sollten).