Só para perguntar se alguém conhece uma alternativa de código aberto ao Reflector da RedGate ? Estou interessado em verificar como uma ferramenta semelhante ao Reflector realmente funciona.
Observe que, se você souber de uma alternativa gratuita, mas não de código aberto, ao Reflector, poderá responder à seguinte pergunta relacionada:
Resumo - Atualizado em 11 de maio de 2011
Um rápido resumo dos vários projetos e ferramentas de código aberto que foram sugeridos:
- Infraestrutura comum do compilador (CCI)
- Mono Cecil
- ILSpy
- dnSpy (fork do ILSpy, o projeto parece mais ativo que o original)
- Editor do Dotnet IL (DILE)
- IL.View
- Monofletor ( não está mais ativo em abril de 2011)
Os seguintes recursos também podem ser interessantes:
- TypeView.cs
- Notas de Jason Haley sobre a desmontagem do .NET
- A recente postagem no blog de Adrian Bank resumindo várias alternativas do Reflector, incluindo várias opções não mencionadas abaixo.
- A postagem detalhada do blog de Mark Lichtenberg comparando várias das alternativas de código aberto (DILE, ILSpy e Mono Cecil usando o MonoDevelop) ao Reflector.
.net
reflection
open-source
reflector
MagicAndi
fonte
fonte
Respostas:
2 opções que eu conheço.
Estes não lhe darão C #.
fonte
Atualizado 13 de dezembro de 2011
As seguintes ferramentas de código aberto estão disponíveis:
fonte
Outra substituição seria dotPeek . O JetBrains o anunciou como uma ferramenta gratuita. Provavelmente terá mais recursos quando usado com o seu Resharper mas mesmo quando usado sozinho, ele funciona muito bem.
A experiência do usuário é mais parecida com MSVS do que com um desmontador independente. Eu gosto mais de ler códigos do que no Reflector. A navegação Ctrl + T também me convém. Apenas sincronizar a árvore com o painel de código poderia ser melhor.
Em suma, ele ainda está em desenvolvimento, mas muito bem utilizável.
fonte
A Telerik lançou hoje uma versão beta de sua própria ferramenta de descompilação, JustDecompile . Código fechado, mas gratuito e parece promissor.
fonte
ILSpy funciona muito bem!
Tanto quanto posso dizer, ele faz tudo o que o Reflector fez e tem a mesma aparência.
fonte
Na verdade, tenho certeza de que o Reflector é considerado um desmontador com alguma funcionalidade de descompilador. Desmontador, porque lê os bytes do arquivo de um assembly e o converte em uma linguagem assembly (neste caso, ILasm). A funcionalidade do Decompiler fornece analisando a IL em padrões conhecidos (como expressões e instruções) que são traduzidos para idiomas de nível superior como C #, VB.Net, etc. você deseja ... no entanto, a mágica de como ele analisa a IL nas árvores de expressão é um segredo bem guardado.
Eu recomendaria olhar para qualquer uma das três coisas mencionadas acima, se você quiser entender como os desmontadores de IL funcionam: Dile, CCI e Mono são boas fontes para essas coisas.
Também recomendo a especificação do Ecma 335 e o livro de Serge Lidin.
fonte
A principal razão pela qual usei o Reflector (e, acho, a principal razão pela qual as pessoas o usaram) foi pelo seu descompilador: ele pode converter a IL de um método novamente em código-fonte.
Nesse sentido, o Monoflector seria o projeto a ser observado. Ele usa Cecil, que faz a reflexão, e Cecil.Decompiler, que faz a descompilação. Mas o Monoflector coloca uma interface do usuário em cima das duas bibliotecas, o que deve lhe dar uma boa ideia de como usar a API.
O Monoflector também é uma alternativa decente ao Reflector. Permite navegar pelos tipos e descompilar os métodos, que são 99% do que as pessoas usavam para o Reflector. É muito difícil nas bordas, mas acho que isso mudará rapidamente.
fonte
Bem, o próprio Reflector é um assembly .NET, para que você possa abrir o Reflector.exe no Reflector para verificar como ele é construído.
fonte
Atualmente, estou trabalhando em um desmontador / descompilador de código aberto chamado Assembly Analyzer. Ele gera código-fonte para métodos, exibe metadados e recursos de assembly e permite percorrer dependências.
O projeto está hospedado no CodePlex => http://asmanalyzer.codeplex.com/
fonte
A ferramenta Refletor usa Reflexão.- aparentemente isso não está correto.Você pediu duas coisas - código que mostra o que o refletor faz e também uma alternativa ao refletor.
Aqui está um exemplo, muito simplificado do que o Reflector faz, mas mostra a técnica da reflexão: TypeView.cs
Não tenho uma sugestão para uma substituição do Refletor de código aberto.
fonte
System.Reflection
na estrutura, afirmou Roeder desde muito cedo, devido a problemas com o carregamento e descarregamento de montagens.System.Reflection
espaço para nome foi estendido desde os primeiros dias do .NET Reflector. Ele agora suporta o carregamento e montagens descarregados em um contexto somente de reflexão: stackoverflow.com/questions/225330/...