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

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

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

Резюме - Обновлено 11 мая 2011 г.

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

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

Ответ 1

2 варианта, о которых я знаю.

  • CCI
  • Моно Сесил

Это не даст вам С#.

Ответ 2

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

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

  • ILSpy от команды SharpDevelop. Благодаря Scott Hanselman tweet, выделив инструмент.
  • Dotnet IL Editor (дизассемблер)
  • IL.View - альтернатива .NET Reflector, написанная в Silverlight 4 как приложение Silverlight Silverlight. Подробнее см. В этом блоге.

Ответ 3

Другая замена - dotPeek. JetBrains объявила об этом как бесплатный инструмент. Вероятно, у него будет больше возможностей при использовании с Resharper, но даже при использовании в одиночку оно работает очень хорошо.

Пользовательский интерфейс больше похож на MSVS, чем на автономный дизассемблер. Мне нравится чтение кода больше, чем в Reflector. Ctrl + T подходит мне тоже лучше. Просто синхронизация дерева с областью кода может быть лучше.

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

Ответ 4

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

Ответ 5

ILSpy отлично работает!

Насколько я могу судить, он делает все, что сделал Reflector, и выглядит так же.

Ответ 6

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

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

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

Ответ 7

Основная причина, по которой я использовал Reflector (и, я думаю, основную причину, по которой большинство людей использовали ее), был для своего декомпилятора: он может перевести метод IL обратно в исходный код.

В этом случае Monoflector будет проектом для просмотра. Он использует Cecil, который делает отражение, и Cecil.Decompiler, который выполняет декомпиляцию. Но Monoflector формирует пользовательский интерфейс поверх обеих библиотек, что должно дать вам очень хорошее представление о том, как использовать API.

Монофлектор также является достойной альтернативой рефлектору. Он позволяет просматривать типы и декомпилировать методы, которые составляют 99% того, для чего люди использовали Reflector. Это очень грубо по краям, но я думаю, что это изменится быстро.

Ответ 8

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

Ответ 9

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

Проект размещен на CodePlex = > http://asmanalyzer.codeplex.com/

Ответ 10

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

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

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

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