c# - 如何从纯托管 C# 代码访问 Profiler API?
问题描述
背景
我正在开发一个名为Harmony的库,该库目前在汇编程序级别使用迂回来在运行时猴子修补方法。这很好用,我让它适用于所有硬件和 .NET 的组合,但它是一种丑陋的 hack,在内联方法时不起作用。
范围
我大致了解分析器 API,并且您可以在 IL 到达 JITer 之前对其进行更改。我的库已经提供了一种高级方法来获取修改后的 IL 主体,所以我需要做的就是使用分析器 API。
建议四处询问它以编写访问它的小型 C/C++ 模块,但我宁愿从我的托管代码中执行此操作。原因:我的库应该只有一个最终的 dll,我不想处理 C/C++ 代码,不同的环境可能会使这变得困难。
问题
这种方法可行吗?有没有更简单的方法?是否有一个分析器库隐藏了这个实现,只是给了我一个高级替换回调?
笔记
请不要质疑我的图书馆的动机,我完全知道这不属于任何“正常”的 C# 编程。它主要用于修补和修改游戏,到目前为止,在 GitHub 上有 1500 多颗星,这是一个非常成功的项目。我只是想把它提升到一个更兼容的水平。
解决方案
推荐阅读
- c# - 如果我将新数组分配给现有值类型数组会发生什么?
- algorithm - 我认为甚至不存在的函数的时间复杂度
- sql - ORA-01861: 文字与日期的格式字符串不匹配
- angular - Angular:无法绑定选择选项
- c# - 从带有 selenium for .net 的文件夹中上传图像
- three.js - ThreeJS - 通过 applyMatrix4 进行变换不保留特征向量的方向
- dialogflow-es - 用于编辑意图的 Dialogflow v2 api
- amazon-web-services - 将域指向 Amazon ALB - Kubernetes
- python - 插值 2d numpy 数组以改变形状
- javascript - 移动设备上的交叉点观察者滚动问题