O dotPeek pode descompilar quaisquer assemblies .NET em código C# equivalente e, opcionalmente, mostrar o código IL subjacente.
O dotPeek pode trabalhar com uma variedade de formatos, como bibliotecas (.dll), executáveis (.exe) e arquivos de metadados (.winmd).
O dotPeek também pode descompilar arquivos .baml, permitindo reconstruir as definições de interface do usuário XAML.
Além dos assemblies e executáveis tradicionais, você pode ter arquivos abertos do dotPeek (.zip, .vsix ou .nupkg) e pastas. Você também pode encontrar e carregar pacotes NuGet (e suas dependências) de qualquer fonte de pacotes online ou carregar pacotes listados em um arquivo packages.config no seu projeto do Visual Studio.
O código descompilado é melhor que nada, mas às vezes você pode associar um assembly ao seu código-fonte. Então, por que não tirar proveito disso? O dotPeek pode identificar o código fonte local com base em arquivos PDB, ou buscar o código fonte nos servidores de origem, como Microsoft Reference Source Center ou SymbolSource.org. Além disso, o dotPeek pode gerar arquivos PDB.
Use o menu suspenso do modo de navegação na barra de menus para escolher se você deseja que o dotPeek descompile os assemblies ou tente encontrar o código-fonte, se possível.
Você pode optar por mostrar determinadas transformações do compilador, tornando a estrutura de código que o dotPeek exibe muito semelhante à que o compilador o transforma. Isso ajuda a ver como o compilador lida com lambdas, fechamentos e propriedades automáticas, entre outras coisas.
A janela Process Explorer mostra a lista de todos os processos em execução no momento e permite explorar seus módulos e descompilar aqueles que são assemblies .NET. Você pode optar por mostrar ou ocultar processos e módulos nativos ou ativar a exibição da hierarquia de processos.
Filtre a lista para localizar um módulo ou processo que você está procurando e, em seguida, adicione seus assemblies ao Assembly Explorer para investigação adicional.
Sempre que você desejar se aprofundar mais do que o código-fonte, poderá navegar para o código IL a partir de qualquer ponto no C# descompilado.
A maneira mais fácil de fazer isso é mostrar o código IL em uma janela de ferramentas separada, sincronizada com o visualizador de código principal.
O dotPeek pode exibir o código IL tanto para o código descompilado quanto para o código-fonte reproduzido dos arquivos de símbolos.
Como alternativa, você pode optar por mostrar o código IL como comentários ao código C # descompilado, que mescla efetivamente seu visualizador de texto padrão e a janela IL Viewer normalmente separada, tudo em uma única exibição.
O dotPeek suporta o mesmo conjunto de temas de cores que o Visual Studio.
Por exemplo, você pode selecionar o tema Azul ou Escuro ou optar por sincronizar sua preferência de esquema de cores com as configurações do Visual Studio.
Como o dotPeek é baseado na poderosa arquitetura de insight de código do ReSharper, ele permite navegar por montagens descompiladas de maneira contextual ou insensível ao contexto, obter um resumo rápido do conteúdo de cada arquivo descompilado, definir indicadores e explorar cadeias de herança.
Com o dotPeek, você tem várias opções para pesquisar onde os símbolos de código são referenciados.
Invoque Find Usages para encontrar todos os usos de um símbolo (como método ou propriedade) em todos os assemblies carregados. Os usos serão exibidos na janela de ferramentas Find Results, na qual você pode agrupá-los, navegar entre eles e abri-los na área de exibição de código.
Também existe oFind Usages Advanced, uma versão mais detalhada de Find Usages que ajuda a ajustar os critérios de pesquisa, limitando o escopo da pesquisa e outros detalhes.
O dotPeek realça automaticamente todos os usos visíveis do símbolo no sinal de intercalação, muito semelhante à forma como fazem as versões recentes do Visual Studio. Isso ajuda a melhorar a legibilidade do código descompilado, especialmente quando você está lidando com identificadores ofuscados.
Além disso, se você quiser passar por todos os usos no arquivo, estejam ou não visíveis no momento, use Highlight Usages in File. Isso realçará todos os usos de um determinado símbolo no arquivo atual, com duas cores distintas indicando usos de gravação e leitura.
Use Go to File Member para obter uma rápida visão geral e navegação dos membros em um documento que representa um tipo descompilado. Insira partes dos nomes dos membros e navegue diretamente até eles.
Como alternativa, se você quiser uma exibição estática de membros no documento atual, abra e encaixe a janela de ferramentas File Structure. Você também pode filtrar essa visualização: selecione a janela de ferramentas e comece a inserir caracteres para se concentrar apenas nos membros de tipo nos quais está interessado.
Ao indexar todos os assemblies na sua lista de assemblies, bem como todas as suas referências, o dotPeek fornece dois recursos para saltar rapidamente até um código específico:
Se houver linhas de código descompilado que você julgue ser importantes e deseja voltar mais tarde, sinta-se à vontade para definir marcadores.
Basta soltar um marcador numerado com um atalho e voltar a qualquer momento com outro atalho. É possível criar até 10 marcadores numerados e uma quantidade ilimitada de marcadores não numerados. A lista completa de locais marcados é exibida em uma única janela pop-up.
Sempre que você coloca um sinal de intercalação em um símbolo na área de visualização do código, o dotPeek oferece diversas opções de navegação contextual, todas disponíveis no menu suspenso Navigate To.
Por exemplo, Go to Declaration leva você do uso de qualquer símbolo à sua declaração. Se o símbolo for declarado em outro assembly, o assembly será carregado automaticamente.
Go to Implementation ajuda a navegar até implementações finais de tipos e membros de tipos, ignorando as etapas intermediárias de herança na cadeia de heranças, como classes abstratas.
Outras opções de navegação contextual úteis incluem Go to Base Symbols e Go to Extension Methods.
Se você está interessado em navegar para cima/baixo em uma hierarquia de herança de um tipo ou membro de tipo específico, considere usar Go to Base Symbols e Go to Derived Symbols.
Eles são extremamente úteis quando você deseja acessar um herdeiro ou um símbolo base imediatamente.
Se você deseja obter um resumo visual de uma certa cadeia de herança, use Type Hierarchy.
O dotPeek mostrará todos os tipos herdados do tipo selecionado, bem como os tipos que ele herda de si próprio — como uma visualização em árvore, em uma janela de ferramentas separada.
O dotPeek fornece ferramentas para compreender rapidamente a estrutura de qualquer assembly, entender os relacionamentos entre assemblies e organizar montagens em listas discretas, o que ajuda a focar apenas nos assemblies em que você está interessado na sua tarefa atual.
Você pode trabalhar com diferentes listas de assemblies, dependendo do seu contexto. Você pode salvar e reabrir listas de assemblies e limpar a lista atual se não precisar mais dela. As listas de assemblies não estão limitadas a arquivos .dll e .exe: elas também podem conter arquivos, pastas e pacotes NuGet.
Quando você está trabalhando com uma lista de montagem, o Assembly Explorer mostra que tipo de referências, recursos e código um assembly específico possui, desde namespaces nome até membros de tipo.
Para cada tipo, ele realça os nós que representam seus tipos base e herdeiros — além da lista real de membros. A pesquisa rápida e a filtragem de nós usando lowerCamelHumps também são compatíveis.
O dotPeek também ajuda você a explorar metadados de assemblies e vasculhar todos os itens (tabelas, blobs, strings, etc.) dentro deles. No nó Metadata, é possível explorar valores de itens de blob, cabeçalhos de arquivos PE e usos de itens de tabela de metadados.
Assim como em outras partes da árvore de assemblies, você pode clicar duas vezes nos itens de metadados para descompilar e exibir o código correspondente.
Se quiser saber como os assemblies dependem uns dos outros, você pode selecionar vários assemblies no Assembly Explorer e instruir o dotPeek a exibir um diagrama de dependências de assemblies.
Isso visualizará quaisquer relacionamentos que existam entre os assemblies selecionados em virtude de suas referências.
Gratuito, sem chave de licença necessária