【发布时间】:2011-03-28 00:44:26
【问题描述】:
我一直在使用 Reflection.Emit() 来构建一些程序集。我很好奇运输编译器是否使用了这种方法。编译器 exe 似乎不是托管代码,所以这让我怀疑他们正在将 IL 直接写入磁盘。
他们:
- 使用 Reflection.Emit()
- 使用低级文件命令写出程序集
- 还有别的吗?
【问题讨论】:
-
为什么不使用Reflector来查找?
-
@John MS C# 编译器不是用 CIL 编写的。我知道 MS C# 编译器是 C++,但他们实际上正在用托管代码重写它。而且因为它不是用 .Net/CIL 语言编写的,所以我猜它不能使用 Reflection.Emit
-
@John Saunders - 这是我的第一步 - 这就是我发现 csc.exe(C# 编译器)不是托管代码的方式。
标签: .net compiler-construction