[.net] Альтернативы Open Source для рефлектора?


Answers

Обновлено 13 декабря 2011

Доступны следующие инструменты с открытым исходным кодом:

Question

Просто спросить, знает ли кто-нибудь об альтернативе с открытым исходным кодом для Reflector от RedGate? Мне интересно узнать, как работает инструмент, похожий на Reflector.

Обратите внимание: если вы знаете бесплатную альтернативу Reflector, но не с открытым исходным кодом, вы можете ответить на следующий связанный с этим вопрос:

Основная информация - Обновлено 11 мая 2011

Быстрый обзор различных проектов и инструментов с открытым исходным кодом, которые были предложены:

  1. Общая инфраструктура компилятора (CCI)
  2. Моно Сесил
  3. ILSpy
  4. dnSpy (fork ILSpy, проект выглядит более активным, чем оригинал)
  5. Редактор Dotnet IL (DILE)
  6. IL.View
  7. Monoflector ( более не действует по состоянию на апрель 2011 года)

Также могут быть интересны следующие ресурсы:

  • TypeView.cs
  • Заметки Джейсона Хейли о разборке .NET
  • Недавнее сообщение в блоге Adrian Bank, в котором излагается ряд альтернатив Reflector, включая несколько вариантов, не упомянутых ниже.
  • Подробное сообщение блога Марка Лихтенберга, сравнивающее несколько альтернатив с открытым исходным кодом (DILE, ILSpy и Mono Cecil с использованием MonoDevelop) с Reflector.



В инструменте Reflector используется Reflection. - По-видимому, это неверно.

Вы попросили две вещи - код, который показывает, что делает отражатель, а также альтернатива рефлектору.

Вот пример, значительно упрощенный от того, что делает Reflector, но он показывает технику отражения: TypeView.cs

У меня нет предложения об замене рефлектора с открытым исходным кодом.




На самом деле, я уверен, что Reflector считается дизассемблером с некоторыми функциями декомпилятора. Disassembler, потому что он считывает байты из файла сборки и преобразует его на язык ассемблера (в этом случае ILasm). Функцию Decompiler, которую он предоставляет, анализируя IL в хорошо известные шаблоны (например, выражения и утверждения), которые затем переводятся на языки более высокого уровня, такие как C #, VB.Net и т. Д. Addin api for Reflector позволяет вам писать свой собственный переводчик языка, если вы хотите ... однако волшебство того, как он анализирует IL в деревьях выражений, - это тщательно охраняемая тайна.

Я бы рекомендовал взглянуть на любую из трех вещей, упомянутых выше, если вы хотите понять, как работают дисассемблеры IL: Dile, CCI и Mono - все это хорошие источники для этого материала.

Я также очень рекомендую получить спецификацию Ecma 335 и книгу Сержа Лидина.




Ну, Reflector сам является сборкой .NET, поэтому вы можете открыть Reflector.exe в Reflector, чтобы узнать, как он построен.




Сегодня Telerik выпустила бета-версию своего инструмента декомпиляции JustDecompile . Закрытый источник, но бесплатный и выглядит многообещающим.