Бесплатный инструмент для изучения скомпилированных сборок .NET, альтернатива .NET Reflector?

Не могли бы вы порекомендовать бесплатный инструмент для изучения скомпилированных сборок .NET. Мне нужно уметь:

  • Изучите исходный код сборок и визуализируйте IL на выбранном языке CLR (C#, VB.NET, управляемый C++ и т. д.).
  • Поддерживает навигацию между классами (например, через Ctrl + клик по названию класса или другим удобным способом).
  • Разрешить проверку встроенных ресурсов в сборке, если таковые имеются (текст, изображения и т. д.)
  • Возможность обработки сборок, начиная с .NET версии 2.0.

Опционально буду рад, если он поддерживает:

  • Экспорт классов в исходные файлы.
  • Интеграция с Visual Studio 2010 (не обязательно бесплатная), позволяющая отлаживать исходный код.
  • Интеграция с Xamarin Studio IDE (ранее MonoDevelop) была бы плюсом, хотя здесь я слишком оптимистичен.

Несколько лет назад я работал с .NET Reflector, и он поддерживал большинство вышеперечисленных функций (фактически все, кроме интеграции с Xamarin). Я пытался использовать его снова несколько недель назад, но теперь он стал коммерческим продуктом, и моя старая бесплатная версия больше не работает.

Ответы (4)

ILSpy — один из самых популярных декомпиляторов FOSS .NET. Он довольно интуитивно понятен в использовании, хотя я еще не пробовал Reflector, поэтому не могу их сравнивать.

К сожалению, он не полностью удовлетворяет вашим требованиям, хотя и приближается к этому. Декомпиляция в C++/CLI не поддерживается, хотя она хорошо работает для IL, C# и VB.NET.

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

Вы можете экспортировать классы в исходные файлы и даже целые сборки в .csprojфайлы (сборки MS). Для более простых проектов их можно скомпилировать напрямую. Многие более сложные проекты, как правило, не компилируются без модификации - в частности, на их сайте упоминается, что он не может декомпилировать, а затем перекомпилировать себя. Если вам нужно декомпилировать всю сборку, у вас, вероятно, останется много работы, чтобы привести ее в компилируемое состояние.

К сожалению, декомпиляция не идеальна. Некоторые более сложные языковые конструкции, такие как C# dynamic, еще не поддерживаются и могут привести к искажению вывода. Вы все еще можете получить общий алгоритм через беспорядок, но он определенно не будет работать, если вы просто хотите скопировать какой-то код.

интеграция с IDE. Была ранняя попытка для Visual Studio, хотя, похоже, от нее отказались. Также, кажется, нет никакой интеграции для Xamarin (когда это произошло?). Однако разработчики ILSpy также создали SharpDevelop, и последние новости указывают на то, что они планируют интеграцию с SharpDevelop .


Если вам нужны другие варианты, есть также dotPeek и JustDecompile . Они утверждают, что имеют расширения Visual Studio и могут быть более совершенными, если за ними стоят некоторые известные компании. У меня не было необходимости использовать ни один из них (ILSpy работал со всем, что мне было нужно), но они могут лучше соответствовать вашим требованиям.

Отличное объяснение, спасибо! C++/CLI — это вариант, без которого я могу жить, и экспорт всего проекта кажется классной функцией. Xamarin Studio — недавний игрок, так как судьба MonoDevelop (её прежняя версия) несколько лет назад была неясна. Поддержка SharpDevelop IDE также может подтолкнуть меня к знакомству с этой IDE. Я думаю, что искаженный вывод всегда является проблемой при декомпиляции, и я сомневаюсь, что кто-то будет использовать декомпилированный код один к одному в реальном проекте. Тогда ILSpy кажется достаточным инструментом для моих нужд.

Есть еще один инструмент, разработанный телериком — JustDecompile . Он работает очень хорошо и обладает всеми функциями .NET Reflector, а также некоторыми другими. (Включая визуальное расширение студии). Это также бесплатно, что приятно. Я использовал его каждый раз, так как он вышел, и это довольно приятно.

Одна из моих любимых функций находится в меню инструментов «Создать проект», она берет сборку и создает из нее файл csproj.

Просто декомпилируйте с поставщиком данных Mysql

Лично я большой поклонник dotPeek от Jetbrains, поскольку он очень хорошо связан с Resharper и имеет некоторые дополнительные функции, которые можно использовать в .pdb:

введите описание изображения здесь

Добро пожаловать в раздел «Рекомендации по программному обеспечению» и спасибо за участие! Хотя это хорошее начало, к сожалению, ваш пост не содержит достаточно информации, чтобы считаться качественным ответом. Пожалуйста , прочитайте наше обсуждение того, что делает ответ качественным , чтобы увидеть, сможете ли вы включить некоторые из этих улучшений в свой ответ. В частности, вам нужно указать, насколько рекомендуемый вами продукт соответствует требованиям ОП. Некоторые указания на стабильность, надежность и производительность также могут быть полезными ;) Спасибо!

Ответы здесь хороши для того времени, когда вопрос был задан. Между тем, ИМХО, dnSpy превзошел их.

  • ✓ Визуализировать как C# или VB.NET - или IL
  • ✓ Навигация между классами - Ctrl+Click
  • ✓ Изучение ресурсов - предварительный просмотр в реальном времени
  • ? Обрабатываю .NET с 2.0 - такой старой программы для тестирования не нашел :-)
  • ✓ Экспорт классов в исходные файлы - только весь проект. Я не мог найти его для отдельных классов

Есть у него и другие полезные функции:

  • редактировать код напрямую
  • подсветка синтаксиса
  • отлаживать

Раньше я использовал dotPeek, но 2 года назад заменил его на dnSpy, и я счастлив.