首页 > 解决方案 > 如何从纯托管 C# 代码访问 Profiler API?

问题描述

背景

我正在开发一个名为Harmony的库,该库目前在汇编程序级别使用迂回来在运行时猴子修补方法。这很好用,我让它适用于所有硬件和 .NET 的组合,但它是一种丑陋的 hack,在内联方法时不起作用。

范围

我大致了解分析器 API,并且您可以在 IL 到达 JITer 之前对其进行更改。我的库已经提供了一种高级方法来获取修改后的 IL 主体,所以我需要做的就是使用分析器 API。

建议四处询问它以编写访问它的小型 C/C++ 模块,但我宁愿从我的托管代码中执行此操作。原因:我的库应该只有一个最终的 dll,我不想处理 C/C++ 代码,不同的环境可能会使这变得困难。

问题

这种方法可行吗?有没有更简单的方法?是否有一个分析器库隐藏了这个实现,只是给了我一个高级替换回调?

笔记

请不要质疑我的图书馆的动机,我完全知道这不属于任何“正常”的 C# 编程。它主要用于修补和修改游戏,到目前为止,在 GitHub 上有 1500 多颗星,这是一个非常成功的项目。我只是想把它提升到一个更兼容的水平。

标签: c#profiler

解决方案


推荐阅读