Функциональность dotPeek

Декомпиляция сборок .NET в исходный код C#

dotPeek надежно декомпилирует любую сборку .NET в эквивалентный код на C# или IL-код.

Интерфейс dotPeek

Библиотеки, исполняемые файлы и другое

dotPeek поддерживает различные форматы файлов, включая библиотеки (.dll), исполняемые файлы (.exe) и файлы метаданных Windows (.winmd).

dotPeek также может декомпилировать файлы .baml, позволяя восстановить определения пользовательского интерфейса с помощью языка XAML.

Помимо традиционных сборок и исполняемых файлов, в dotPeek можно открывать архивы (.zip, .vsix или .nupkg) и папки. Вы также можете находить и загружать пакеты NuGet (и если нужно, их зависимости) из любого онлайн-источника пакетов или загружать пакеты, перечисленные в файле packages.config вашего проекта в Visual Studio.

Просмотр доступных исходных файлов

Просмотр доступных исходных файлов

Декомпилированный код лучше, чем ничего, но иногда сборки также можно сопоставить с их исходным кодом. Почему бы вам не воспользоваться этой возможностью? dotPeek умеет распознавать локальный исходный код на основе PDB-файлов и получать код с серверов исходного кода, таких как Microsoft Reference Source Center и SymbolSource. Кроме того, dotPeek может генерировать PDB-файлы.

В раскрывающемся списке в режиме навигации по меню вы можете выбрать, что следует делать: только декомпилировать сборки или выполнять поиск исходного кода.

Просмотр кода, сгенерированного компилятором

Показать или скрыть код, сгенерированный компилятором

Вы можете просмотреть конкретные преобразования компилятора. При этом структура кода, отображаемая dotPeek, будет максимально похожа на код, сгенерированный компилятором. Это помогает понять, как компилятор обрабатывает определенные конструкции, такие как лямбда-выражения, замыкания и автосвойства.

Окно Process Explorer в dotPeek

Просмотр выполняемых процессов

В окне Process Explorer отображаются все процессы, выполняемые в текущий момент: можно исследовать их модули и декомпилировать те из них, которые представляют собой сборки .NET. В этом окне можно скрыть или показать нативные процессы и модули, а также включить иерархическое представление процессов.

Список можно отфильтровать, чтобы найти нужный модуль или процесс, а затем добавить соответствующие сборки в Assembly Explorer для более подробного изучения.

Просмотр IL-кода в dotPeek

Окно просмотра IL-кода

dotPeek позволяет перейти к IL-коду из любого места в декомпилированном коде C#.

Самый простой способ — просматривать IL-код в специальном окне, синхронизированном с редактором.

Отображение IL-кода в виде комментариев к C#-коду

Отображение IL-кода в виде комментариев

Кроме того, вы можете выбрать опцию отображения IL-кода в виде комментариев к декомпилированному C#-коду. Таким образом, можно просматривать текст и IL-код в одном представлении.

dotPeek умеет отображать IL-код как для декомпилированного кода, так и для исходного кода, воспроизводимого из файлов символов.

Темная тема интерфейса в dotPeek

Выбор темы интерфейса

dotPeek поддерживает такой же набор тем интерфейса, что и Visual Studio.

Например, вы можете выбрать синюю или темную тему или синхронизировать свои цветовые предпочтения с настройками Visual Studio.

Возможности навигации по декомпилированному коду

Основываясь на архитектуре ReSharper для анализа кода, dotPeek позволяет перемещаться по декомпилированным сборкам с учетом контекста или без него, быстро узнавать о содержимом каждого декомпилированного файла, использовать закладки и изучать цепочки наследования.

В окне Find Results отображаются все обнаруженные места использования символа

Поиск использований символа

dotPeek предоставляет несколько способов находить использования символов в коде.

Вызовите действие Find Usages, чтобы найти все использования символа (например, метода или свойства) во всех загруженных сборках. Результаты поиска отобразятся в окне Find Results, в котором вы можете их группировать, перемещаться по ним и переходить к ним в области просмотра кода.

Кроме того, вы можете воспользоваться расширенным действием Find Usages Advanced, которое позволяет точно настроить критерии поиска, ограничить область поиска и указать другие параметры.

Подсветка использований символа в текущем файле

Подсветка использований символа при просмотре кода

dotPeek автоматически подсвечивает все видимые случаи использования символа, на котором находится курсор, примерно так же, как это делается в свежих версиях Visual Studio. Это улучшает читаемость декомпилированного кода, особенно если вы имеете дело со сложными идентификаторами.

Если вам нужно просмотреть все случаи использования символа в файле, независимо от того, являются ли они видимыми в данный момент, используйте опцию Highlight Usages in File. Все случаи использования выбранного символа в текущем файле будут подсвечены двумя цветами в зависимости от того, используется ли он для чтения или для записи.

Окно File Structure

Навигация по текущему файлу

С помощью действия Go to File Member вы можете быстро перемещаться к членам файла, представляющим декомпилированный тип. Для навигации достаточно ввести часть имени члена.

Если вы предпочитаете статическое отображение списка членов текущего документа, откройте и закрепите окно File Structure. Здесь также можно воспользоваться фильтрацией: выберите окно инструмента и просто начните вводить имена членов типа, которые вас интересуют.

Go to Everything для перехода к определенному типу, файлу, члену и т.д.

Навигация по коду

dotPeek индексирует все сборки в вашем списке сборок и их ссылки и предоставляет два действия для быстрого перехода к определенному фрагменту кода:

  • Go to Symbol помогает перейти к определенному объявлению символа (типу, методу, полю или свойству). Для поиска типов можно использовать сокращения lowerCamelHumps: например, чтобы найти и открыть XamlMarkupDeclaredElement, достаточно ввести xmard.
  • Go to Everything позволяет находить сборки, пространства имен, типы, члены и недавно открытые файлы.
Закладки в dotPeek

Закладки

Если вы хотите отметить определенную строку декомпилированного кода, чтобы вернуться к ней позже, используйте закладки.

Вы можете установить пронумерованный маркер одним шорткатом и вернуться к этому месту в любой момент с помощью другого сочетания клавиш. Вы можете создать до 10 пронумерованных закладок и неограниченное количество ненумерованных. Все места, в которых есть закладки, отображаются в одном всплывающем окне.

Контекстно-зависимая навигация

Контекстная навигация

Поместите курсор на символ в области просмотра кода, и dotPeek предложит множество вариантов контекстной навигации в раскрывающееся меню Navigate To.

Например, действие Go to Declaration позволяет перейти от использования любого символа к его объявлению. Если символ объявлен в другой сборке, она загружается автоматически.

Действие Go to Implementation помогает перейти к конечной реализаций типа и члена типа, минуя промежуточные звенья в цепочке наследования, такие как абстрактные классы.

Вы также можете переходить к базовым символам (Go to Base Symbols) и методам расширения (Go to Extension Methods).

Переход к производным типам

Навигация по иерархии классов

Если вам нужно перемещаться вверх или вниз по иерархии наследования от определенного типа или члена типа, используйте действия Go to Base Symbols и Go to Derived Symbols.

Эти действия помогут быстро перейти к базовому или производному символу.

Вид иерархии типов

Изучение цепочек наследования

Чтобы просмотреть цепочку наследования в удобном представлении, используйте окно Type Hierarchy.

В этом окне все типы, находящиеся выше или ниже выбранного типа в иерархии наследования, представлены в виде дерева.

Узнайте все о ваших сборках

dotPeek помогает быстро разобраться в структуре любых сборок и взаимосвязях между ними, а также позволяет группировать сборки по спискам, чтобы вам было удобно работать со сборками, которые нужны для текущей задачи.

dotPeek помогает просматривать папки, архивы и NuGet-пакеты

Управляйте списками сборок

В зависимости от контекста вы можете работать с различными списками сборок. Вы можете сохранять и открывать списки сборок, а также удалить текущий список, если он вам больше не нужен. Списки сборок могут содержать не только файлы форматов .dll и .exe, но также пакеты NuGet, архивы и папки.

Менеджер сборок в dotPeek

Просматривайте содержимое сборок

При работе со списком сборок в окне Assembly Explorer вы увидите, какие ссылки, ресурсы и код содержатся в конкретной сборке — от пространств имен до членов типа.

Помимо самого списка членов, в этом окне для каждого типа подсвечиваются узлы, представляющие собой его базовые и производные типы. В Assembly Explorer также поддерживается быстрый поиск и фильтрация узлов с использованием сокращений lowerCamelHumps.

Изучение метаданных сборок с помощью dotPeek

Изучайте метаданные сборок

dotPeek также поможет вам исследовать метаданные сборки и просмотреть таблицы, BLOB-объекты, строки и т.д. В узле Metadata вы сможете посмотреть вхождения табличных элементов метаданных, изучить значения BLOB, исследовать заголовки PE-файла.

И конечно, по двойному клику можно посмотреть декомпилированный код для любого элемента метаданных.

Диаграмма зависимостей сборок

Просматривайте зависимости между сборками

Если вам нужно узнать, как сборки связаны между собой, выберите несколько сборок в окне Assembly Explorer, и dotPeek покажет диаграмму зависимостей сборок.

Диаграмма визуализирует отношения между выбранными сборками по имеющимся ссылкам.

Скачать dotPeek

Бесплатный продукт, лицензионный ключ не требуется