首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改并运行现有的.NET程序集,而无需保存到磁盘

修改并运行现有的.NET程序集,而无需保存到磁盘
EN

Stack Overflow用户
提问于 2011-01-10 17:40:10
回答 2查看 427关注 0票数 3

是否有办法修改现有.NET程序集中的方法,并在不将其保存到磁盘的情况下执行该程序集。我想要类似于System.Reflection.Emit.MethodRental的功能,但是Reflection.Emit名称空间只处理动态创建的程序集。有许多方法涉及创建新的可执行文件。或者修改现有的一个,但是我想避免做这两件事。

我也可以使用CLR分析器的JIT编译钩子来重写方法体,但我更喜欢一种可以在C#中完成的方法。这个用例是分析器的一部分,它在函数入口/出口处输出程序值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-10 18:52:41

如果你有修改过的二进制内容,你可以使用Assembly.Load(byte[])。但是,您不能修改已加载的程序集-您必须单独处理这些修改。

如果您重复执行此操作(如果只执行一次,则可能不需要),则可能还需要考虑在单独的AppDomain中运行此命令。

票数 2
EN

Stack Overflow用户

发布于 2011-01-10 21:17:52

看看.net 3附带的“表达式树”,它们也允许创建动态方法http://blogs.msdn.com/b/csharpfaq/archive/2009/09/14/generating-dynamic-methods-with-expression-trees-in-visual-studio-2010.aspx

还可以看看Mono.Cecil -这个库允许在运行时更改代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4645368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档