如何发出代码并将其注入加载的程序集?

Joh*_*n K 7 .net c# reflection.emit

我使用System.CodeDom.CodeCompileUnit动态构建了一些类型,想要将它们编译成内存中的IL代码,并将该IL代码注入到内存中加载的程序集中 - 不需要将任何内容保存到磁盘中.也许我说的计划是错的.打开有关如何将CodeCompileUnit实例添加到所述目标的其他建议.

Ray*_*rns 7

您可以使用ICorDebug接口将代码注入现有(已加载)程序集.编辑并继续执行此操作.

计算delta字节并调用ICorDebugModule2::ApplyChanges.有关更多详细信息,请参阅MDbg示例代码.

曾几何时我们使用ICorDebugModule::GetEditAndContinueSnapshot和亲属,但这些现在已被弃用.

更新如果您不关心将代码注入已加载的程序集中,那么仅使用Reflection.Emit创建新程序集会更高效,也更容易.