gpt4 book ai didi

c# - 如何发出代码并将其注入(inject)加载的程序集中?

转载 作者:太空狗 更新时间:2023-10-29 20:15:22 26 4
gpt4 key购买 nike

我已经使用 System.CodeDom.CodeCompileUnit 动态构建了一些类型,想将它们编译成内存中的 IL 代码,并将该 IL 代码注入(inject)内存中加载的程序集中 - 无需将任何这些保存到磁盘.也许我说的计划是错误的。接受有关如何将该 CodeCompileUnit 实例传送到所述目的地的其他建议。

最佳答案

您可以使用 ICorDebug 接口(interface)将代码注入(inject)到现有(已加载)程序集中。编辑并继续即可。

计算您的增量字节并调用 ICorDebugModule2::ApplyChanges。查看MDbg sample code了解更多详情。

曾几何时,我们使用 ICorDebugModule::GetEditAndContinueSnapshot 和 kin,但现在已弃用。

更新 如果您不关心将代码注入(inject)到一个已经加载的程序集中,只使用Reflection.Emit 创建一个新的程序集会更高效而且很多更容易。

关于c# - 如何发出代码并将其注入(inject)加载的程序集中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1736417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com