Как разбираться в анализе сборки C # и извлечь каждый метод
-
25-09-2019 - |
Вопрос
Для моего приложения я хотел бы проанализировать через сборку и извлечь каждый метод и хранить имя метода и исходный код в одном из моих объектов (я определен в моем коде).
Где я должен начать реализовать это?
Редактировать: Из ответов и комментариев я увидел, что не так легко получить исходный код из сборки. Тогда где я должен начать, если я хочу получить исходный код из файлов исходного кода, которые не в моем текущем решении (Visual Studio)?
Решение
Ассамблея не содержит исходный код. Возможно, вы сможете извлечь IL, но без инструментов, таких как отражатель или ILDasm, что не особенно полезно.
Получить Имена методов, просто что-то вроде:
var assembly = Assembly.GetExecutingAssembly();
var names = (from type in assembly.GetTypes()
from method in type.GetMethods(
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.Static)
select type.FullName + ":" + method.Name).Distinct().ToList();
Другие советы
Чтобы получить эту информацию отладки, используйте Общая инфраструктура компилятора: API метаданных проект.
Это позволяет читать .pdb
Файлы (файлы, содержащие информацию о отладке, такие как исходный файл и номер строки).
Я не уверен, как получить исходный код, но если вы пытаетесь получить информацию о методах, вы должны использовать отражение.
MethodInfo[] methodInfos = typeof(MyClass).GetMethods(BindingFlags.Public |
BindingFlags.Static);