Eric Lippert has said on the record here at SO,
Reflection.Emit太弱,无法用于构建真正的编译器。这对于小型玩具编译任务非常有用,例如在LINQ查询中发出动态调用站点和表达式树,但是对于各种各样的问题你在编译器中面对你将很快超出其能力。使用CCI,而不是Reflection.Emit。
我有一个真正的编译器,很遗憾在Reflection.Emit上构建(不是我)。它正在痛苦地抵御这些限制,我想将发射代码转换为CCI。我找到了一些似乎没有任何等价的东西。
例如,行:
_asmBuilder.DefineVersionInfoResource();
_moduleBuilder.CreateGlobalFunctions(); //setup global .data
我认为没有办法做同样的事情,特别是因为我找不到任何与ModuleBuilder等效的东西。
是否有任何关于如何将Reflection.Emit项目转换为CCI的良好参考或文档?