生成 CIL 字节码到磁盘和内存

Generating CIL byte code to disk and in memory

我正在编写一个针对 CIL (.Net) 字节码的编译器。对于真正生成字节码的部分,我可以从头开始写,但如果可能的话,使用现有的库会很方便。

我需要能够将字节代码生成到磁盘(对于通常的静态编译)和内存(运行时代码生成)。还有查找现有程序集的能力,至少在能够解析引用的范围内。

据我了解,有三个 API 至少可以执行这些操作,但目前尚不清楚它们是否完全符合需要:

最近推荐的解决方案是什么?

是的,是的,是的。它们都可以同时针对内存和磁盘。

所有这些都是具有不同功能和不同目的的替代品。如果您正在为您选择的语言编写编译器,您只需要 ILGenerator。如果你想编译成例如C# 和 then 到 IL,使用 Roslyn。 Cecil 为您提供了一些额外的工具,但它最大的优势是能够即时修改(和反编译)现有代码 - 对于某些工具来说很方便,但可能不适用于您的用例。