Как получить информацию о сборке из AssemblyID в COR Profiler?

Я хочу получить информацию обо всех загруженных сборках вместе с метаданными, такими как открытый ключ, версия и т. Д. Для этого я разработал собственный профилировщик .Net с использованием API-интерфейсов ICorProfiling и обратных вызовов. Я могу получить идентификатор загруженной сборки, подписавшись на событие AssemblyLoadFinished. Но из этого AssemblyID, как получить метаданные сборки, такие как Открытый ключ, Версия и т. Д.

Я нашел метод ‘IMetaDataAssemblyImport :: GetAssemblyProps’. Но он принимает маркер сборки (т.е. mdAssembly). Как преобразовать AssemblyID в mdAssembly?

0

Решение

Токены метаданных (включая токен метаданных сборки) зависят от модуля, и проявленный модуль может определять только одну сборку, так что в любом случае существует только один токен метаданных сборки; но вы, вероятно, должны использовать IMetaDataAssemblyImport :: GetAssemblyFromScope вместо того, чтобы жестко кодировать это.

Реальный вопрос заключается в том, как получить правильный экземпляр IMetaDataAssemblyImport для AssemblyID. Вы могли бы использовать ICorProfilerInfo :: GetAssemblyInfo чтобы получить идентификатор модуля модуля манифеста, а затем ICorProfilerInfo :: GetModuleMetaData чтобы получить экземпляр IMetaDataAssemblyImport.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]