我一直在玩Reflection.Emit()来构建一些程序集。我很好奇运输编译器是否使用了这种方法。编译器exe似乎不是托管代码,因此这让我怀疑他们是将IL直接写入磁盘。
他们:
答案 0 :(得分:4)
csc.exe而不是vb.exe都不使用Reflection.Emit来发出托管代码,原因很明显是它们不是用托管代码编写的。
F#编译器是用托管代码编写的。它使用自己的IL编写器后端来输出IL程序集。但是,F#编译器还运行了一个在F#Interactive中使用的Reflection.Emit后端(用于F#的REPL)。
IronPython和IronRuby编译器在某种程度上使用Reflection.Emit我相信。