Pergunta

Para o meu aplicativo, gostaria de analisar através de uma montagem e extrair todos os métodos e armazenar o nome do método e o código -fonte em um dos meus objetos (defini no meu código).

Onde devo começar a implementar isso?

EDIT: A partir das respostas e comentários, vi que não é tão fácil obter o código -fonte dos assemblies. Então, por onde devo começar se quiser obter o código -fonte dos arquivos de código -fonte que não estão na minha solução atual (Visual Studio)?

Foi útil?

Solução

A montagem não contém o código -fonte. Você pode extrair o IL, mas sem ferramentas como refletor ou ildasm, isso não é especialmente útil.

Para obter o nomes de métodos, apenas algo como:

    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();

Outras dicas

Para recuperar essas informações de depuração, use o Infraestrutura comum do compilador: API de metadados projeto.

Isso permite que você leia o .pdb Arquivos (os arquivos que contêm as informações de depuração, como arquivo de origem e número da linha).

Primeiro você precisa encontrar todos os tipos.

Ver aqui fazer isso.

Então você pode precisar encontrar todos os métodos para cada tipo.

Ver aqui fazer isso.

Se você precisar de um exemplo para reunir tudo, me avise.

Não tenho certeza de como obter o código -fonte, mas se você estiver tentando obter informações sobre os métodos, use a reflexão.

MethodInfo[] methodInfos = typeof(MyClass).GetMethods(BindingFlags.Public |
                                                  BindingFlags.Static);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top