.NET Reflector — это обозреватель классов , декомпилятор и статический анализатор программного обеспечения, созданного с помощью .NET Framework , первоначально написанный Лутцем Рёдером. Журнал MSDN назвал ее одной из десяти обязательных утилит для разработчиков, [1] а Скотт Хансельман включил ее в свою «Большую десятку утилит, меняющих жизнь и работу». [2]
Его можно использовать для проверки, навигации, поиска, анализа и просмотра содержимого компонента CLI, такого как сборка , и преобразования двоичной информации в удобочитаемую форму. По умолчанию Reflector позволяет декомпилировать сборки CLI в C# , Visual Basic .NET , C++/CLI [3] , а также Common Intermediate Language и F# (альфа-версия). Reflector также включает «дерево вызовов», которое можно использовать для детализации методов промежуточного языка и просмотра других методов, которые они вызывают. Он покажет метаданные , ресурсы и документацию XML . .NET Reflector может использоваться .NET-разработчиками для понимания внутренней работы библиотек кода, демонстрации различий между двумя версиями одной и той же сборки и того, как различные части приложения CLI взаимодействуют друг с другом. Для Reflector существует большое количество надстроек.
.NET Reflector можно использовать для отслеживания проблем с производительностью и ошибок , просмотра классов, а также для поддержки или помощи в ознакомлении с базами кода. Используя параметр «Анализатор», его также можно использовать для поиска зависимостей сборок и даже зависимостей Windows DLL . Есть дерево вызовов и наследование-браузер. Он будет использовать ту же документацию или комментарии, которые хранятся в XML-файлах вместе со связанными с ними сборками, которые используются для управления IntelliSense внутри Visual Studio . Возможна даже перекрестная навигация по связанной документации ( xmldoc
), поиск конкретных типов, членов и ссылок. Его можно использовать для эффективного преобразования исходного кода между C# и Visual Basic.
.NET Reflector был разработан для размещения надстроек, расширяющих его функциональность, многие из которых имеют открытый исходный код . Некоторые из этих надстроек предоставляют другие языки, которые также можно дизассемблировать, например PowerShell , Delphi и MC++ . Другие анализируют сборки разными способами, предоставляя метрики качества, диаграммы последовательностей, диаграммы классов, матрицы структур зависимостей или графы зависимостей. Можно использовать надстройки для поиска текста, сохранения дизассемблированного кода на диск, экспорта сборки в XMI/UML, сравнения различных версий или поиска кода. Другие надстройки позволяют отлаживать процессы. Некоторые надстройки предназначены для облегчения тестирования путем создания заглушек и оболочек.
.NET Reflector изначально был разработан Лутцем Рёдером как бесплатное ПО . Его первые версии датируются январем 2001 года. [4]
На Archive.org размещена коллекция ранних версий Reflector.
20 августа 2008 года Red Gate Software объявила, что берет на себя ответственность за будущую разработку программного обеспечения. [5]
В феврале 2010 года Red Gate выпустила .NET Reflector 6 вместе с коммерческой версией Pro, которая позволяла пользователям работать с декомпилированным кодом в отладчике Visual Studio, как если бы это был их собственный исходный код.
10 января 2011 года Red Gate объявила, что .NET Reflector 7 будет включать надстройку PowerCommands Джейсона Хейли. [6]
1 февраля 2011 года Red Gate объявила, что .NET Reflector станет коммерческим продуктом начиная с версии 7, [7] , выпущенной 14 марта 2011 года. Это привело к созданию нескольких бесплатных альтернатив, включая dotPeek, [8] CodeReflect и программа с открытым исходным кодом ILSpy. Впоследствии, 26 апреля 2011 года, благодаря отзывам сообщества, Red Gate объявили, что они продолжат предоставлять .NET Reflector 6 бесплатно для существующих пользователей (в то время как новым пользователям придется платить за Reflector). [9]