Введение

.NET Reflector — это обозреватель классов, декомпилятор и статический анализатор для программного обеспечения, разработанного на платформе .NET Framework, изначально созданный Лутцем Родером. Журнал MSDN назвал его одной из десяти необходимых утилит для разработчиков, а Скотт Хансельман включил его в список своих "Десяти важнейших утилит, меняющих жизнь и работу".

Обзор

Он может использоваться для инспектирования, навигации, поиска, анализа и просмотра содержимого компонента CLI, такого как сборка, и преобразует двоичную информацию в форму, удобную для чтения человеком. По умолчанию Reflector позволяет декомпилировать сборки CLI в C#, Visual Basic .NET, C++/CLI, Common Intermediate Language и F# (альфа-версия). Reflector также включает в себя "Древо вызовов", которое позволяет углубленно изучать методы промежуточного языка, чтобы увидеть, какие другие методы они вызывают. Он отображает метаданные, ресурсы и XML-документацию. NET Reflector может использоваться разработчиками .NET для понимания внутренней работы библиотек кода, для демонстрации различий между двумя версиями одной и той же сборки и для анализа взаимодействия различных частей CLI-приложения. Существует большое количество расширений для Reflector. NET Reflector можно использовать для выявления проблем с производительностью и ошибок, просмотра классов, а также для изучения и освоения кодовых баз. С помощью опции Analyzer можно находить зависимости сборок и даже зависимости от DLL Windows. Предусмотрены древо вызовов и обозреватель наследования. Он извлекает ту же документацию или комментарии, которые хранятся в XML-файлах вместе с соответствующими сборками и используются для работы IntelliSense в Visual Studio. Можно осуществлять перекрестную навигацию по связанной документации (xmldoc) и искать конкретные типы, члены и ссылки. Он позволяет эффективно преобразовывать исходный код между C# и Visual Basic .NET. NET Reflector разработан для поддержки расширений, расширяющих его функциональность, многие из которых имеют открытый исходный код. Некоторые из этих расширений обеспечивают поддержку других языков, которые также могут быть дизассемблированы, таких как PowerShell, Delphi и MC++. Другие анализируют сборки различными способами, предоставляя метрики качества, диаграммы последовательностей, диаграммы классов, матрицы структуры зависимостей или графы зависимостей. Расширения можно использовать для поиска текста, сохранения дизассемблированного кода на диск, экспорта сборки в XMI/UML, сравнения различных версий или поиска кода. Другие расширения позволяют отлаживать процессы. Некоторые расширения предназначены для упрощения тестирования путем создания заглушек и оберток.

История

.NET Reflector был первоначально разработан Латцем Родером как бесплатное программное обеспечение. Первые версии программы датируются январем 2001 года. На Archive.org размещена коллекция ранних версий Reflector. 20 августа 2008 года компания Red Gate Software объявила о принятии на себя ответственности за дальнейшую разработку программного обеспечения. В феврале 2010 года Red Gate выпустила .NET Reflector 6 вместе с коммерческой Pro-версией, позволяющей пользователям пошагово отлаживать декомпилированный код в отладчике Visual Studio, как если бы это был их собственный исходный код. 10 января 2011 года Red Gate объявила, что .NET Reflector 7 будет включать в себя дополнение PowerCommands от Джейсона Хейли. 1 февраля 2011 года Red Gate объявила о переходе .NET Reflector на коммерческую модель распространения, начиная с версии 7, которая была выпущена 14 марта 2011 года. Это привело к появлению нескольких бесплатных альтернатив, включая dotPeek, CodeReflect и программу с открытым исходным кодом ILSpy. Впоследствии, 26 апреля 2011 года, в ответ на отзывы сообщества, Red Gate объявила о продолжении бесплатного предоставления .NET Reflector 6 существующим пользователям (в то время как новым пользователям потребуется приобрести Reflector).