Как разбираться в анализе сборки C # и извлечь каждый метод

StackOverflow https://stackoverflow.com/questions/4207867

Вопрос

Для моего приложения я хотел бы проанализировать через сборку и извлечь каждый метод и хранить имя метода и исходный код в одном из моих объектов (я определен в моем коде).

Где я должен начать реализовать это?

Редактировать: Из ответов и комментариев я увидел, что не так легко получить исходный код из сборки. Тогда где я должен начать, если я хочу получить исходный код из файлов исходного кода, которые не в моем текущем решении (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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top