Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Просмотр исходников .Net библиотек 
V
    Опции темы
V0fka
Дата 20.8.2013, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Привет!

Есть 2 среды разработки: Visual Studio 2012 и Sharp Developer. Так вот, если в Визуал Студио перейти к определению типов Net, то открывается окно, где видно сигнатуру типа. А если из Шарп Девелопера перейти к определению типа, то там видно не только сигнатуру, а и исходный код. То что из Шарп Девелопера видно исходники, я обнаружил сегодня случайно. В связи с этим вопрос: из Визуал Студио можно исходники смотреть?
PM MAIL   Вверх
diadiavova
Дата 20.8.2013, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(V0fka @  20.8.2013,  18:40 Найти цитируемый пост)
 из Визуал Студио можно исходники смотреть? 

Можно сделать исходники доступными для отладчика, но там не все библиотеки доступны. А вообще можно воспользоваться ILSpy.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
V0fka
Дата 20.8.2013, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Цитата(diadiavova @  20.8.2013,  20:00 Найти цитируемый пост)
Можно сделать исходники доступными для отладчика, но там не все библиотеки доступны.

А можно узнать как? smile

Цитата(diadiavova @  20.8.2013,  20:00 Найти цитируемый пост)
А вообще можно воспользоваться ILSpy.

Я как-то смотрел утилитку ILDasm. Оно от ILSpy чем-то отличается?
PM MAIL   Вверх
diadiavova
Дата 20.8.2013, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(V0fka @  20.8.2013,  21:13 Найти цитируемый пост)
Я как-то смотрел утилитку ILDasm. Оно от ILSpy чем-то отличается? 

Илдазм - дизассемблер, а илспай - декомпилятор. Декомпилятор предоставляет код на шарпе, а илдазм на CIL.
Цитата(V0fka @  20.8.2013,  21:13 Найти цитируемый пост)
А можно узнать как? 

Там в настройках где-то галочку поставить надо, я не помню точно, поскольку исходники доступны только для шарпа, а я на нем пишу редко. Но если не найдешь, могу посмотреть, а может еще кто даст подробную инструкцию. Но илспай - то что надо, он, кстати для этих целей использует те же либы, что и шарпдевелоп. И вообще этот проект  и создавался в рамках проекта шарпдевелоп, так что получишь ровно то же самое, что ты видел там.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
gambit
Дата 21.8.2013, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Я юзаю dotPeek, он хоть и отдельно от студии, но очень удобен.

Из платного - решарпер, он в студию интегрируется и исходники может показать в ней, но это не основная его фишка, а так приятный бонус.
Ну и гвоздь программы .NET Reflector, который после того, как внезапно стал платным, был позабыт, но его отличало, что он из il мог во многое сконвертить, в том числе и vb.net
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 21.8.2013, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(gambit @  21.8.2013,  01:52 Найти цитируемый пост)
Ну и гвоздь программы .NET Reflector, который после того, как внезапно стал платным

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


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
gambit
Дата 21.8.2013, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Цитата(diadiavova @  21.8.2013,  09:44 Найти цитируемый пост)
ILSpy 

А как у него с baml, случайно не знаешь?
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 21.8.2013, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(gambit @ 21.8.2013,  11:22)
Цитата(diadiavova @  21.8.2013,  09:44 Найти цитируемый пост)
ILSpy 

А как у него с baml, случайно не знаешь?

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


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
V0fka
Дата 21.8.2013, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Цитата(diadiavova @  20.8.2013,  20:58 Найти цитируемый пост)
Там в настройках где-то галочку поставить надо, я не помню точно, поскольку исходники доступны только для шарпа, а я на нем пишу редко.

Нашел в настройках галку "Разрешить шаги в исходном коде .Net Framework". Поставил, студия попросила установить (или указать, не помню дословно) какие-то символы. Я перешел на соответствующую вкладку и нажал "ОК". Студия начала что-то грузить. Попробовал после этого Ф12 на методе Serialize типа XmlSerializer. В итоге ничего не поменялось и вижу только сигнатуру. Попробовал перезапустить студию. Результат не изменился. Попробовал в настройках Символов поставить галку в группе настроек "Места размещения символов \ Серверы символов Microsoft". Перезапустил студию, результат не изменился. Пробовал не по Ф12, а в режиме отладки Ф11 - но тоже эффекта ожидаемого не достиг. :(

Цитата(diadiavova @  20.8.2013,  20:58 Найти цитируемый пост)
Но илспай - то что надо, он, кстати для этих целей использует те же либы, что и шарпдевелоп. И вообще этот проект  и создавался в рамках проекта шарпдевелоп, так что получишь ровно то же самое, что ты видел там.

Спасибо за прогу! Посмотрел, на первый взгляд прикольно, буду пользоваться smile . Но для меня было бы вообще супер, если б можно было то же самое смотреть из студии.

Цитата(gambit @  21.8.2013,  00:52 Найти цитируемый пост)
Я юзаю dotPeek, он хоть и отдельно от студии, но очень удобен.

Тоже посмотрю, спасибо! Но, как писал выше, было бы вообще супер, если б можно было из студии смотреть с помощью стандартных возможностей либо каких-то бесплатных инструментов.
PM MAIL   Вверх
diadiavova
Дата 21.8.2013, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



V0fka, все эти твои ф12 мне ни о чём не говорят, скорей всего у меня студия по другому настроена, так что пиши какую функцию запустил, а не шорткат, которым ты её вызвал. Исходники доступны в режиме пошаговой отладки, просто отладчик будет проходиться по ним также как по твоему коду, а из браузера объектов доступа нет. Кроме того можно просмотреть код, вызвав функцию "Перейти к определению" из контекстного меню.
В студию илспай не интегрируется, но я просто добавил её в меню "сервис" как внешний инструмент, откуда он прекрасно запускается.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
V0fka
Дата 21.8.2013, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



diadiavova, ф12 - у меня это "Перейти к определению". ф11 - это "Шаг с заходом". Т.е. в студии жму "Перейти к определению", получаю примерно такое:

Код

using System;
using System.CodeDom.Compiler;
using System.IO;
using System.Reflection;
using System.Runtime;
using System.Security.Policy;
using System.Xml;

namespace System.Xml.Serialization
{
    // Сводка:
    //     Сериализует и десериализует объекты в документы XML и из них.System.Xml.Serialization.XmlSerializer
    //     позволяет контролировать способ кодирования объектов в XML.
    public class XmlSerializer
    {
        // Сводка:
        //     Инициализация нового экземпляра класса System.Xml.Serialization.XmlSerializer.
        protected XmlSerializer();
        //
        // Сводка:
        //     Initializes a new instance of the System.Xml.Serialization.XmlSerializer
        //     class that can serialize objects of the specified type into XML documents,
        //     and deserialize XML documents into objects of the specified type.
        //
        // Параметры:
        //   type:
        //     Тип объекта, который может быть сериализован данным System.Xml.Serialization.XmlSerializer.
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        public XmlSerializer(Type type);
        //
        // Сводка:
        //     Инициализирует экземпляр класса System.Xml.Serialization.XmlSerializer с
        //     помощью объекта, сопоставляющего один тип с другим.
        //
        // Параметры:
        //   xmlTypeMapping:
        //     System.Xml.Serialization.XmlTypeMapping, сопоставляющий один тип с другим.
        public XmlSerializer(XmlTypeMapping xmlTypeMapping);
...


Т.е. вижу только сигнатуру.

Когда жму в отладке "Шаг с заходом" в строке с вызовом метода Serialize типа XmlSerializer, то перехожу на следующую строку и никуда в другое место отладчик не идет.

Цитата(diadiavova @  21.8.2013,  14:48 Найти цитируемый пост)
В студию илспай не интегрируется, но я просто добавил её в меню "сервис" как внешний инструмент, откуда он прекрасно запускается.

Ну и оттуда просто открываешь его и руками выбираешь какой класс смотреть? Или можно сделать, чтобы оно само подхватывало как-то из текущей строки?  Или я много хочу? smile
PM MAIL   Вверх
diadiavova
Дата 21.8.2013, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(V0fka @  21.8.2013,  16:07 Найти цитируемый пост)
Т.е. вижу только сигнатуру

Попробуй другой класс в другой библиотеке, но вообще, как я уже сказал, я этим чудом не пользуюсь, так что подробно описать не могу.
Цитата(V0fka @  21.8.2013,  16:07 Найти цитируемый пост)
Или я много хочу? 

Видимо да. 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
V0fka
Дата 21.8.2013, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



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

diadiavova, gambit, спасибо за ответы!
PM MAIL   Вверх
V0fka
Дата 23.8.2013, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Посмотрел dotPeek. Для меня, как для неискушенного пользователя, подходят и ILSpy и dotPeek smile . Буду иметь в арсенале два инструмента smile .

diadiavova, gambit, ещё раз спасибо за ответы!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.