Просто спросить, знает ли кто-нибудь альтернативу RedGate's Reflector с открытым исходным кодом ? Мне интересно узнать, как на самом деле работает инструмент, похожий на Reflector.
Обратите внимание: если вам известна бесплатная, но не открытая альтернатива Reflector, вы можете ответить на следующий связанный вопрос:
Резюме - Обновлено 11 мая 2011
Краткий обзор различных проектов и инструментов с открытым исходным кодом, которые были предложены:
- Общая инфраструктура компилятора (CCI)
- Моно Сесил
- ILSpy
- dnSpy (форк ILSpy, проект выглядит более активным, чем оригинальный)
- Dotnet IL Editor (DILE)
- IL.View
- Монофлектор ( больше не активен с апреля 2011 года)
Также могут представлять интерес следующие ресурсы:
- TypeView.cs
- Заметки Джейсона Хейли о разборке .NET
- Недавнее сообщение в блоге Adrian Bank, в котором кратко изложены некоторые альтернативы Reflector, включая несколько вариантов, не упомянутых ниже.
- Подробный пост Марка Лихтенберга, в котором сравниваются некоторые альтернативы с открытым исходным кодом (DILE, ILSpy и Mono Cecil с использованием MonoDevelop) с Reflector.
.net
reflection
open-source
reflector
MagicAndi
источник
источник
Ответы:
2 варианта, которые я знаю.
Это не даст вам C #, хотя.
источник
Обновлено 13 декабря 2011
Доступны следующие инструменты с открытым исходным кодом:
источник
Еще одна замена будет dotPeek . JetBrains объявил это как бесплатный инструмент. Вероятно, он будет иметь больше возможностей при использовании с их Resharper, но даже если он используется один, он работает очень хорошо.
Пользовательский опыт больше похож на MSVS, чем на отдельный дизассемблер. Мне нравится читать код больше, чем в Reflector. Навигация по Ctrl + T мне тоже подходит. Синхронизация дерева с панелью кода может быть лучше.
В общем, он все еще находится в разработке, но уже очень пригоден для использования.
источник
Сегодня Telerik выпустил бета-версию собственного инструмента декомпиляции JustDecompile . Закрытый источник, но бесплатный и выглядит многообещающе.
источник
ILSpy отлично работает!
Насколько я могу судить, он делает все то же, что и Reflector, и выглядит так же.
источник
На самом деле, я уверен, что Reflector считается дизассемблером с некоторыми функциями декомпилятора. Дизассемблер, потому что он считывает байты из файла сборки и преобразует его в язык ассемблера (в данном случае ILasm). Функциональность декомпилятора, которую он обеспечивает, анализируя IL в хорошо известные шаблоны (например, выражения и операторы), которые затем переводятся на языки более высокого уровня, такие как C #, VB.Net и т. Д. Apin-модуль add для Reflector позволяет вам писать свой собственный языковой переводчик, если Вы хотите ... однако магия того, как он разбирает IL на деревья выражений, является тщательно охраняемым секретом.
Я бы порекомендовал взглянуть на любую из трех вещей, упомянутых выше, если вы хотите понять, как работают дизассемблеры IL: Dile, CCI и Mono - хорошие источники для этого материала.
Я также настоятельно рекомендую получить спецификацию Ecma 335 и книгу Сержа Лидина.
источник
Основная причина, по которой я использовал Reflector (и, как мне кажется, основная причина, по которой его использовали большинство людей), заключалась в его декомпиляторе: он может переводить IL метода обратно в исходный код.
На этот счет Monoflector будет проект для просмотра. Он использует Cecil, который выполняет отражение, и Cecil.Decompiler, который выполняет декомпиляцию. Но Monoflector накладывает пользовательский интерфейс поверх обеих библиотек, что должно дать вам очень хорошее представление о том, как использовать API.
Monoflector также является достойной альтернативой Reflector. Он позволяет вам просматривать типы и декомпилировать методы, что составляет 99% от того, для чего люди использовали Reflector. Это очень грубо по краям, но я думаю, что это быстро изменится.
источник
Что ж, Reflector сам по себе является сборкой .NET, поэтому вы можете открыть Reflector.exe в Reflector, чтобы проверить, как он построен.
источник
В настоящее время я работаю над дизассемблером / декомпилятором с открытым исходным кодом, который называется Assembly Analyzer. Он генерирует исходный код для методов, отображает метаданные сборки и ресурсы, а также позволяет просматривать зависимости.
Проект размещен на CodePlex => http://asmanalyzer.codeplex.com/
источник
Инструмент «Отражатель» использует «Отражение».- видимо это не правильно.Вы просили две вещи - код, который показывает, что делает рефлектор, а также альтернативу рефлектору.
Вот пример, значительно упрощенный по сравнению с тем, что делает Reflector, но он показывает технику отражения: сравнению TypeView.cs
У меня нет предложений по замене рефлектора с открытым исходным кодом.
источник
System.Reflection
в фреймворке, как заметил Редер очень рано из-за проблем с загрузкой и выгрузкой сборок.System.Reflection
пространство имен было расширено с первых дней .NET Reflector. Теперь он поддерживает загрузку и выгрузку сборок в контексте только для отражения: stackoverflow.com/questions/225330/…