ILSpy — open source альтернатива .NET Reflector

    Как вы все знаете, Reflector становится платным. Такой шаг компании Red Gate не мог не сподвигнуть разработчиков сделать бесплатную альтернативу. Вот и всем известные разработчики open source решений для .NET IC#Code (на их счету так же IDE SharpDevelop) взялись за разработку своего Reflector'а.
    Разработка началась совсем недавно, поэтому проект ещё не оброс всеми нужными фичами, но есть надежда на успешное продолжение.

    Что умеет ILSpy


    Умеет, надо сказать, пока не очень много.
    Внешне программа очень напоминает Reflector: слева доступные сборки, справа — код.
    main
    Но вот досада: просмотреть код какого-то конкретного метода пока нельзя.
    notimplemented
    Навигация по коду пока удобством не блещет: гиперссылок на используемые члены классов нету, при декомпиляции некоторых методов вместо тела метода мы видим загадочное «Exception during decompilation». Drag'n'drop сборок в окно программы пока не реализован, но поддерживается в дереве сборок для их упорядочивания.

    Что будет уметь ILSpy


    Естественно, в перспективе при должной поддержке разработчиков — всё то же, что умеет Reflector.
    Как заверяют разработчики, в скором времени они улучшат декомпиляцию и скорость работы приложения, добавят историю навигации и ещё несколько фич, которые всегда можно увидеть на странице проекта.

    Резюме


    Проект подаёт большие надежды на то, чтобы при должной поддержке комьюнити стать полноценной бесплатной заменой Reflector. По крайней мере относительная успешность других проектов IC#Code позволяет в это верить. Если разрабочики успеют к 30 мая (последний день работы бесплатной версии Reflector) сделать юзабельную и не сильно обделённую фичами версию, то честь им и хвала.

    Ссылки


    Страница проекта: ilspy.net.
    Исходный код @ github.
    Скачать последнюю версию можно здесь.

    UPD.
    Как сообщает outcoldman в комментарии, автоматическу проверку апдейтов лучше пока не отменять. О баге сообщено разработчикам.
    Поделиться публикацией

    Комментарии 44

      +2
      Это не может не радовать. Результат просто отличный, с учетом того, что девелопить они начали его на прошлой неделе, как я понимаю. Так что если так всё и продолжится то к 30 мая они точно успеют выпустить достойную замену решарперу.
        +2
        Да, если проект продолжит расти такими темпами, то будет хорошая замена. Для альфа-версии всё очень неплохо. Я уверен, что разработчики из ic#code могут довести проект до логического завершения.
          +11
          замену решарперу
          Хорошая оговорка :)
          +1
          Вот и славненько. Поселилась в папочке с тулзами.

          П.С. Походу Open from GAC работает быстрее чем .Net Reflector.

          П.П.С. А там еще и Mono подтянется.
            0
            Только не запускайте диалоговое меню about :)
              0
              почему? всё хорошо открывается, на первый взгляд.
                +1
                А оказывается действия такие — снимаем галку про проверку на новую версию, идем тыкать на about и наслаждаемся ;)

                Чтобы открыть приложение в следующий раз нормально идем в c:\Users\user\AppData\Roaming\, находим папку ICSharpCode и прибиваем.
                  0
                  Спасибо, проапдейтил пост и сообщил разработчикам о баге.
                    0
                    хотел сам сообщить, зарегистрировался на community.sharpdevelop.net, но не получил email с временным паролем :( Но, хорошо что о баге сообщено :)
                      +1
                      Я поступил проще: создал новое issue в github :)
                        0
                        О! Точно, а я что-то про github совсем забыл, полез на их офф сайт искать баг трекер. И нашел, правда без этого проекта bugtracker.sharpdevelop.net :)
              +1
              Чем оно лучше рефлектора из MonoDevelop? Тот вроде как умеет декомпилировать методы.
                0
                Хотя бы тем, что разработчикам, использующим VS, нет нужды устанавливать MonoDevelop только ради декомпилера.
                  –2
                  короче, варианты такие:
                  1. платим за Reflector и декомпилим всё
                  2. ставим monodevelop и декомпилим всё
                  3. кушаем кактус пользуем ILSpy и декомпилим всё, кроме методов.
                  Я ничего не упустил?
                    +1
                    Упустили то, что ILSpy только 7 дней отроду. Думаю уж что-что, но декомпиляция методов будет в ближайших релизах, а в скором времени времени будет и всё остальное.
                      +1
                      Ок
                      Впечатляет.
                        +1
                        И это, вы не так поняли. Декомпиляция методов есть, просто сейчас, чтобы посмотреть метод, нужно декомпилировать весь класс. Не скажу, конечно, что там отличный декомпилятор сейчас, среднее между C# и IL кодом :) Вообще, за 7 дней офигительный старт.
                          0
                          На первом скриншоте русским по белому написано «Exception during decompilation», на втором — «NotImplementedException». Как иначе это можно понять?
                            0
                            Возможно, скриншот не совсем удачный. Но там подпись есть: «гиперссылок на используемые члены классов нету, при декомпиляции некоторых методов вместо тела метода мы видим загадочное «Exception during decompilation»»
                0
                Кстати, такое ощущение по первому комиту, что идея ILSpy родилась четыре года назад. И вот толчком послужила новость о платном .net reflector.
                  0
                  Вот и мне кажется, что года два назад я это уже видел… Хотя, все клоны рефлектора похожи друг на друга…
                    0
                    Просто все клоны Рефректора похожи на Рефлектор :)
                  0
                  спасибо! будем следить и сочувствовать — сообщать о багах.
                    –1
                    И почему мне кажется, что модель покупки ПО в массовом понимании уже устарела, может стоит подумать о более новых моделях монетеизации?

                    А то ребята из рефлектора думали, что подсадят на иглу, а потом деньги будут грести.
                      +2
                      Я уверен, что люди будут покупать и Рефлектор, несмотря на бесплатные аналоги. К нему привыкли, он удобен, и стоит то впринципе эквивалентно паре часов работы рядового программиста. Если говорить о компаниях, то может что-нибудь придумают с корпоративными лицензиями. Другое дело, что возможность покупки есть не у всех, а кто-то просто из убеждений пользуется бесплатными аналогами. Так что альтернатива нужна, но как показывает практика, даже при наличии альтернатив разработчики платного ПО всегда отхватят свой честно заработанный кусок :)
                        +1
                        Странно, ведь модель покупки колбасы, кажется, не устарела?
                          0
                          Понимаете, смысл в том, что колбаса — это материальная вещь. Которую нельзя ни раскопировать, ни скачать откуда нибудь.
                            0
                            Ну, дело ведь не в этом, на самом деле. А в том, что в изготовление колбасы вложен труд людей, который должен быть оплачен.

                            Полотно Гогена, например, стоит подороже, чем холст и краски. Я уж не говорю про концерты, например.
                              0
                              Продажи картин для меня всегда оставались загадкой, этого я тоже не понимаю.

                              По-моему, Малевич пытался как раз высмеять эту идея, создав «шедевр» который стоит милионы долларов.

                              Я понимаю, что труд должен быть оплачен, но здесь вы говорите о физическом труде. Где стоимость пропорциональна сделаному и потраченному времени.
                                0
                                Все-таки это как-то узко-материально. Талантливый человек может сделать быстро и без усилий нечто, что дурень будет делать год, и все равно получится никому не нужно. Так чей труд должен быть оплачен? Например, хирург учился 20 лет, а провести операцию, спасти человеку жизнь сможет за полчаса. Предложите ему денег столько, сколько за эти же полчаса какой-нибудь рабочий зарабатывает, и он уйдет в адвокаты. Кто от такой модели выиграет?

                                Самое интересное, что большинство здесь присутствующих, похоже, получают-таки деньги за программные продукты, которые они производят. Или я ошибаюсь?
                        0
                        Отличная новость! Будет отлично, если они еще выделят отдельную либу для дизассемблирования, чтобы можно было использовать в других проектах.
                          0
                          Судя по всему, они используют Mono.Cecil
                            0
                            Mono.Cecil вроде ж решает обратную задачу — кодогенерацию в рантайме.
                              0
                              Исправляюсь, насчет Mono.Cecil.Decompiler не знал.
                          +3
                          Вопрос по багам декомпиляции методов, я думаю, их очень быстро решат. Вряд ли они сами писали декомпилятор. Скорее всего используется mono::cecil::decompiler. Т.к. он застрял на версии 0.6 mono::cecil, в нем есть определенные баги (очень похожие на то что происходит в ILSpy), которые я когда-то правил. Они не сложные. Хорошо если его использование подстегнет многоуважаемого Jb Evian перетащить decompiler на mono::cecil версии 0.9 тогда отказ .NET Reflector'a от бесплатности сыграет на руку всем (кроме разработчиков .NEt Reflector'a). Поскольку при использовании mono::cecil + mono::cecil::decompiler вопрос написания собственного .NET Reflector'a — вопрос двух недель кодинга (без учета плагинов).
                            0
                            А существует ли способ преобразования куска кода на IL в c# или какой-нибудь высокоуровненый псевдокод?
                              0
                              Погодите, а разве Reflector и прочие не делают именно это? 0_o
                                0
                                Иногда бывает так, что в нем код на c# не показывается (из-за обфускации), но на msil — показывается. Отсюда и возник мой вопрос про конвертацию куска кода на msil.
                                  0
                                  Понял вас, спасибо.
                                  Получается ваш вопрос про-деобфускацию хотя бы до «высокоуровненый псевдокод»?
                                  Ответа на этот вопрос я не знаю.
                                    0
                                    Я похоже был не в теме. Получается, что если деобфусцировать код, то тогда рефлектор будет показывать не только msil, но и c#.

                                    Но вопрос изначально был не про деобфускацию, а именно про конвертирование msil в c#. Но я таких утилит не встречал.
                              +1
                              А пока ILSpy набирает фичи рефлектора, можно и $35 заплатить )
                                0
                                35? Это где? Какой-то апгрейд для тех, кто уже пользовался им раньше? Вроде с 70 цены начинаются.
                                  0
                                  Ничего, что я это больше года назад написал? :) Сколько сейчас — без понятия
                                0
                                Сделано с блеском. Последний релиз освобождает от необходимости тратить $35.

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое