Как получить доступ к API Profiler из чистого управляемого C# кода? - PullRequest
2 голосов
/ 29 января 2020

Фон

Я занимаюсь разработкой библиотеки под названием Harmony , которая в настоящее время использует обход на уровне ассемблера для обезьяньих методов исправлений во время выполнения. Это прекрасно работает, и я заставил это работать на всех комбинациях аппаратного обеспечения и. NET, но это своего рода уродливый хак, который не работает, когда методы встроены.

Область действия

Я примерно знаю об API профилировщика и о том, что вы можете изменить IL до того, как он достигнет JITer. Моя библиотека уже предоставляет высокоуровневый способ получения модифицированного тела IL, поэтому все, что мне нужно сделать, это использовать API профилировщика.

Обсуждая это, было рекомендовано написать небольшие модули C / C ++, обращающиеся к нему, но я бы предпочел сделать это из моего управляемого кода. Причины: моя библиотека должна быть только одним последним dll, я скорее не хочу иметь дело с кодом C / C ++, разные среды могут усложнить это.

Вопрос

Возможен ли такой подход? Есть ли более простой способ? Есть ли библиотека профилировщика, которая скрывает эту реализацию и просто дает мне высокоуровневый ответный обратный вызов?

Примечание

Пожалуйста, не спрашивайте о мотивах моей библиотеки, я полностью осознавая, что это выходит за рамки любого «нормального» * ​​1029 * программирования. Это в основном для исправлений и моддинга игр и до сих пор с 1500+ звездами на GitHub очень успешный проект. Я просто хочу поднять его на еще более совместимый уровень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...