我一直在查看有关 CLR Profiling API 的一些文章,其中许多文章都谈到调用 SetILFunctionBody() 来进行实际的 IL 重写;但是,这些文章都没有真正解释您可以使用什么来重写实际的 IL 字节方法。是否有一个非托管库允许我编写 IL,或者我必须自己编写一个?
最佳答案
大概。这取决于。
Mono 项目有一个名为 Cecil 的库,您可以在此处访问:
http://mono-project.com/Cecil
但是,它是托管代码,在分析时无法调用。不过,您可能有几个选择:
#1 引入了一堆额外的复杂性。您的分析器最终会拥有比实际需要更多的事件部件。此外,IPC 引入了一堆额外的开销。
#2 需要很长时间。鉴于 Cecil 仍然只有 0.6 版本,与编写自己的实现相比,可能不值得花时间去做。
#3 会给你最大程度的控制,并且可能是最高效的。然而,这将比 #1 花费更多的努力。
关于.net - 我是否需要编写自己的非托管 IL 库来使用 CLR Profiling API 重写 IL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269844/