.NET编译器(例如csc.exe,vbc.exe)是否使用Reflection.Emit()?

时间:2010-08-10 19:29:15

标签: .net compiler-construction

我一直在玩Reflection.Emit()来构建一些程序集。我很好奇运输编译器是否使用了这种方法。编译器exe似乎不是托管代码,因此这让我怀疑他们是将IL直接写入磁盘。

他们:

  • 使用Reflection.Emit()
  • 使用低级文件命令编写程序集
  • 别的什么?

1 个答案:

答案 0 :(得分:4)

csc.exe而不是vb.exe都不使用Reflection.Emit来发出托管代码,原因很明显是它们不是用托管代码编写的。

F#编译器是用托管代码编写的。它使用自己的IL编写器后端来输出IL程序集。但是,F#编译器还运行了一个在F#Interactive中使用的Reflection.Emit后端(用于F#的REPL)。

IronPython和IronRuby编译器在某种程度上使用Reflection.Emit我相信。

相关问题