| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Просмотр исходников .Net библиотек |
| Автор: V0fka 20.8.2013, 17:40 |
| Привет! Есть 2 среды разработки: Visual Studio 2012 и Sharp Developer. Так вот, если в Визуал Студио перейти к определению типов Net, то открывается окно, где видно сигнатуру типа. А если из Шарп Девелопера перейти к определению типа, то там видно не только сигнатуру, а и исходный код. То что из Шарп Девелопера видно исходники, я обнаружил сегодня случайно. В связи с этим вопрос: из Визуал Студио можно исходники смотреть? |
| Автор: diadiavova 20.8.2013, 20:00 |
Можно сделать исходники доступными для отладчика, но там не все библиотеки доступны. А вообще можно воспользоваться http://ilspy.net/. |
| Автор: diadiavova 20.8.2013, 20:58 |
Илдазм - дизассемблер, а илспай - декомпилятор. Декомпилятор предоставляет код на шарпе, а илдазм на CIL. Там в настройках где-то галочку поставить надо, я не помню точно, поскольку исходники доступны только для шарпа, а я на нем пишу редко. Но если не найдешь, могу посмотреть, а может еще кто даст подробную инструкцию. Но илспай - то что надо, он, кстати для этих целей использует те же либы, что и шарпдевелоп. И вообще этот проект и создавался в рамках проекта шарпдевелоп, так что получишь ровно то же самое, что ты видел там. |
| Автор: gambit 21.8.2013, 00:52 |
| Я юзаю dotPeek, он хоть и отдельно от студии, но очень удобен. Из платного - решарпер, он в студию интегрируется и исходники может показать в ней, но это не основная его фишка, а так приятный бонус. Ну и гвоздь программы .NET Reflector, который после того, как внезапно стал платным, был позабыт, но его отличало, что он из il мог во многое сконвертить, в том числе и vb.net |
| Автор: diadiavova 21.8.2013, 09:44 | ||
ILSpy появился на свет как раз в ответ на то, что рефлектор стал платным. Его разработчики с самого начала заявляли, что функционал будет доведён до уровня рефлектора. У него похожий интерфейс, да и на сегодняшний день он не хуже рефлектора, по крайней мере последней версии, которую я видел. К заметным недостаткам по сравнению с рефлектором можно отнести пожалуй только отсутствие такого количества плагинов. На вбнет он тоже код отображает, у рефлектора, кстати, с этим были некоторые проблемы и он порой выдавал синтаксически некорректный код. |
| Автор: gambit 21.8.2013, 10:22 |
А как у него с baml, случайно не знаешь? |
| Автор: diadiavova 21.8.2013, 11:00 | ||
Отображает как хамл, ресурсы сохраняет в файл. Так на рефлекторе из плагинов я ставил сохранялку кода, можно было сохранить код класса в файл или всю либу в проект студии, но здесь это встроенная функция. Так в принципе, познакомившись с илспаем, я развитием рефлектора вообще перестал интересоваться, может там сейчас и есть какие-то преимущества, но мне илспая хватает вполне. |
| Автор: V0fka 21.8.2013, 13:57 | ||||
Нашел в настройках галку "Разрешить шаги в исходном коде .Net Framework". Поставил, студия попросила установить (или указать, не помню дословно) какие-то символы. Я перешел на соответствующую вкладку и нажал "ОК". Студия начала что-то грузить. Попробовал после этого Ф12 на методе Serialize типа XmlSerializer. В итоге ничего не поменялось и вижу только сигнатуру. Попробовал перезапустить студию. Результат не изменился. Попробовал в настройках Символов поставить галку в группе настроек "Места размещения символов \ Серверы символов Microsoft". Перезапустил студию, результат не изменился. Пробовал не по Ф12, а в режиме отладки Ф11 - но тоже эффекта ожидаемого не достиг. :(
Спасибо за прогу! Посмотрел, на первый взгляд прикольно, буду пользоваться Тоже посмотрю, спасибо! Но, как писал выше, было бы вообще супер, если б можно было из студии смотреть с помощью стандартных возможностей либо каких-то бесплатных инструментов. |
| Автор: diadiavova 21.8.2013, 14:48 |
| V0fka, все эти твои ф12 мне ни о чём не говорят, скорей всего у меня студия по другому настроена, так что пиши какую функцию запустил, а не шорткат, которым ты её вызвал. Исходники доступны в режиме пошаговой отладки, просто отладчик будет проходиться по ним также как по твоему коду, а из браузера объектов доступа нет. Кроме того можно просмотреть код, вызвав функцию "Перейти к определению" из контекстного меню. В студию илспай не интегрируется, но я просто добавил её в меню "сервис" как внешний инструмент, откуда он прекрасно запускается. |
| Автор: V0fka 21.8.2013, 15:07 | ||||
diadiavova, ф12 - у меня это "Перейти к определению". ф11 - это "Шаг с заходом". Т.е. в студии жму "Перейти к определению", получаю примерно такое:
Т.е. вижу только сигнатуру. Когда жму в отладке "Шаг с заходом" в строке с вызовом метода Serialize типа XmlSerializer, то перехожу на следующую строку и никуда в другое место отладчик не идет.
Ну и оттуда просто открываешь его и руками выбираешь какой класс смотреть? Или можно сделать, чтобы оно само подхватывало как-то из текущей строки? Или я много хочу? |
| Автор: diadiavova 21.8.2013, 15:22 |
Попробуй другой класс в другой библиотеке, но вообще, как я уже сказал, я этим чудом не пользуюсь, так что подробно описать не могу. Видимо да. |
| Автор: V0fka 21.8.2013, 17:45 |
| В общем я понял, буду вырабатывать привычку смотреть это не в визуал студио. diadiavova, gambit, спасибо за ответы! |
| Автор: V0fka 23.8.2013, 09:51 |
| Посмотрел dotPeek. Для меня, как для неискушенного пользователя, подходят и ILSpy и dotPeek diadiavova, gambit, ещё раз спасибо за ответы! |