Не могли бы вы порекомендовать бесплатный инструмент для изучения скомпилированных сборок .NET. Мне нужно уметь:
Опционально буду рад, если он поддерживает:
Несколько лет назад я работал с .NET Reflector, и он поддерживал большинство вышеперечисленных функций (фактически все, кроме интеграции с Xamarin). Я пытался использовать его снова несколько недель назад, но теперь он стал коммерческим продуктом, и моя старая бесплатная версия больше не работает.
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 работал со всем, что мне было нужно), но они могут лучше соответствовать вашим требованиям.
Есть еще один инструмент, разработанный телериком — JustDecompile . Он работает очень хорошо и обладает всеми функциями .NET Reflector, а также некоторыми другими. (Включая визуальное расширение студии). Это также бесплатно, что приятно. Я использовал его каждый раз, так как он вышел, и это довольно приятно.
Одна из моих любимых функций находится в меню инструментов «Создать проект», она берет сборку и создает из нее файл csproj.
Лично я большой поклонник dotPeek от Jetbrains, поскольку он очень хорошо связан с Resharper и имеет некоторые дополнительные функции, которые можно использовать в .pdb:
Ответы здесь хороши для того времени, когда вопрос был задан. Между тем, ИМХО, dnSpy превзошел их.
Есть у него и другие полезные функции:
Раньше я использовал dotPeek, но 2 года назад заменил его на dnSpy, и я счастлив.
Ивайло Славов