Dot-Net
IKVM.Reflection.Emit 和 Mono.Cecil 之間的區別
IKVM.Reflection.Emit 具有“讀取和發出 .NET 1.1、.NET 2.0 和 .NET 4.0 程序集(例如在 .NET 2.0 上執行時)的能力。”。
Mono.Cecil 有相同的嗎?對於這個案例,它們是否可以互換?他們現在都支持嗎?它們之間的主要區別是什麼(在發出 IL 時)?
我知道這是一個老問題,但我想提供一個答案。
IKVM.Reflection.EmitAPI 是在其作者厭倦了System.Reflection.Emit和時發明的Cecil.Reflection.Emit。為了讓 IKVMC 編譯器更快,他從頭開始設計這個新的 API。歷史可以從以下部落格文章中找到,
2008 年 8 月 從 Microsoft .NET 反射切換到 Cecil
2008 年 11 月 從 Cecil 切換到 IKVM.Reflection.Emit
所以一般來說 IKVM.Reflection 和 Cecil 有類似的功能,而且 IKVM.Reflection API 應該在很多方面更快。
到目前為止,您仍然可以看到 Cecil 廣泛用於許多實用程序(例如 Obfuscar,我正在維護的混淆工具)。IKVM.Reflection 主要用於 Mono C# 編譯器和 IKVM 本身,我不確定是否有其他項目在使用它(但應該很多)。