Проект Metadata Explorer
Подобные приложения: Reflector, Phoenix, ILDASM.
Краткое описание:
Приложение Metadata Explorer позволяет просматривать метаданные сборок .NET версий 1.x - 2.x: классы, поля, методы, MSIL код и т.д.. Так же есть возможность просмотра PDB отладочных файлов, физическое расположение метаданных благодаря доступу к просмотру PE и CLR заголовков файла, таблица импорта, расширенный поиск по метаданным. Главное отличие от других подобных проектов - открытая архитектура. Код 100% managed. Так же есть возможность удобного подключения плагинов при помощи Metadata Explorer Plugin API.
Требование к проекту:
1) Интерфейс выполняется на английском языке. Так что весь нэйминг переменных тоже должен быть на грамотном языке.
2) Язык: C# 2.0
3) Лицензия: GNU GPL v.3
Используемые технологии:
1) .NET Framework 2.0
2) Windows Forms 2.0
3) Reflection API
4) Fusion
На данный момент готово:
1) Графический интерфейс - вялый пока, но всё же несёт функционал;
2) Возможность просмотра зависимостей сборки, атрибутов, фактических и формальных параметров конструктора атрибута.
На данный момент доступна альфа версия [SIZE=2]2.0.23.1098 от 14.10.2006(здесь: http://www.barsu.ru/forum/topic.php?forum=4&topic=3). Подробности версии и её баги можно прочитать в файле readme.en.[/SIZE]
[SIZE=2]За проектом так же можно следить на www.barsu.ru в разделе программирование.[/SIZE]
[SIZE=2]К сожалению, пока нельзя загружать файлы большого объёма на этот сайт (я думаю эта проблема решаема), поэтому все желающие пишите мне в PM вышлю исходники и бинарники.
[/SIZE]
Скоро появиться FTP, на котором можно будет скачать исходники.
ftp://projects.codenet.ru.
Что касается Metadata Explorer Lite, то исправлены все изображения в TreeView, загрузка списка изображений убрана из события загрузки дочерней формы в родительскую, что позволило убрать тормознутость программы довольно существенно. Убраны фильтры вывода метаданных (соответственно файл Filters.cs тоже убран). Вместо этого введена система сортировки метаданных - по области видимости, по способу доступа типа и т.д.. Сделан класс Namespace для сбора типов одного пространства имён в одну логическую структуру. Типы выводятся в соответствующих пространствах имён.
Скоро откроется FTP репозиторий, предназначенный для проектов:
Что касается Metadata Explorer Lite, то исправлены все изображения в TreeView, загрузка списка изображений убрана из события загрузки дочерней формы в родительскую, что позволило убрать тормознутость программы довольно существенно. Убраны фильтры вывода метаданных (соответственно файл Filters.cs тоже убран). Вместо этого введена система сортировки метаданных - по области видимости, по способу доступа типа и т.д.. Сделан класс Namespace для сбора типов одного пространства имён в одну логическую структуру. Типы выводятся в соответствующих пространствах имён.
Переписан код форматирования метаданных. Тормозов стало ещё чуть меньше. Убрал несколько классов за ненадобностью. Утверждёны виды сортировок метаданных. Можно сортировать как вашей душе угодно. Сделаны выводы и сортировка полей, типов, пространств имён, вложенных типов. Работаю над методами.
В версии 2.0.24.56 (всё ещё альфа) сделано кэширование часто используемых сборок. Используется простой собственный формат файла MDC (Binary-сериализация + ZIP-сжатие) для этой цели. Это помогает каждый раз не грузить большие сборки заново. Так же введена система JIT-просмотра данных. В этом режиме парсятся только те классы, которые необходимы пользователю (естественно прозрачно). Этот режим просмотра включается, если сборка достаточно большая, т.к. в отключённом режиме приходится ждать 4 минуты для парсинга сборки mscorlib.dll (на Celeron 2200 MHz) что далеко не всех устраивает.
Наконец-то решён вопрос - где скачать? На проекте CodePlex (сайт Microsoft'а для opensource-проектов). Мой проект находится здесь:
Есть уже дизассемблер в язык MSIL. Синтаксическая подсветка тоже присутствует.
Есть возможно смотреть заголовоки PE файла, в том числе и CLI заголовки, которые указывают на физическое расположение метаданных.
[SIZE=2][COLOR=#800000][COLOR=#000000]Почти доделана возможность просматривать содержимое файлов PDB - генерируемые MSVS2005 которые содержат отладочную информацию не доступную через Reflection - имена локальных переменных, ссылки на исходные коды и т.д..[/COLOR]
[/COLOR][/SIZE]
Добавлен очень полезный плагин - GAC Explorer. Позволяет управлять Глобальным Кэшем сборок (Global Assembly Cache) прямо из Metadata Explorer. Появилась нормальный список импортируемых классов, если проще - то таблица импорта.
В этом релизе - ну практически полностью законченный дизассемблер (с типами-генериками осталосось разобраться), умеет уже выводить исходный код всей сборки (в меню Explorer->Plug-ins->MSIL Provider->Manfiest Disassembling включить, потом выделить корневой узел в закладке Assembly и нажать кнопку показа исходного кода).
Добавил отображения некоторых таблиц метаданных - TypeSpec, TypeRef, MemberRef и т.д..
Для желающих потестировать это дело - заполняем отчёты, выложенные в аттаче. Можно и на английском (там образцы тоже есть). Заполняем В СООТВЕТСТВИИ с форматом документа (заголовки, шрифты, отступы).
Скачать исходные коды и бинарники можно всё там же: www.codeplex.com/mde, т.к. здесь большие файлы выкладывать не получается.
Как и обещал, тестирую, пока только внешние данные :-)
Для начала первые впечатления..
Первый запуск...
1) Splash-screen необходимо починить, и поточнее обозначить места для создания полигонов. сейчас белые кубики вокруг картинки. (см. аттач)
2) Получил исключение, не смог найти часть пути к мануалу Help\Custom\.
/хватило их создания, для работы/
3) Диалог выбора сборки из GAC, не плохо бы отобразить сборки в DataGridView. /нечитабельно/ + убрать из TaskBar.
Сорри, позже продолжу (( отрывают..
PS: начал разбираться с логикой. Понравилось ;)
PPS: буду обновлять это сообщение по мере тестов.
Можно подсобить с разработкой интерфейса