Для демонстрации примера вида и структуры метаданных используем программу на C# HelloConsole:
При компиляции программы в CIL создается сборка, сохраняемая на диске как управляемый файл HelloConsole.exe. Из сборки при исполнении генерируется исполняемый бинарный файл, который исполняется на-лету.
Внимание. Сам бинарный файл на диске не сохраняется.
Для просмотра (при желании) метаданных получившейся сборки необходима утилита ildasm.exe(Intermediate Language Disassembler - дизассемблер промежуточного языка). Она из файла сборки HelloConsole.exe. формирует сборку в виде сохраняемого файла. Для запуска утилиты нужна и динамическая библиотека fusion.dll. Если их нет, то их нужно скачать из Интернета.
Для просмотра метаданных выполните утилиту ildasm. В окне программы выберите команду Open открытия файла
В открывшемся диалоговом окне найдите нужный файл сборки HelloConsole. Вы увидите содержимое сборки, из которой порождается бинарный файл. Сборка включает манифест и сведения о программе HelloConsole.
Для демонстрации манифеста необходимо выполнить двойной щелчок левой кнопкой мыши на разделе MANIFEST. Представление манифеста имеет следующий вид (отображена только левая часть окна).
Манифест содержит полную системную информацию о сборке. Эта информация наиболее активно используется при разработке сложных динамически загружаемых приложений - для начала краткое описание содержимого манифеста сборки:
Секция .assembly extern mscorlib, в ней описываются зависимости от внешних сборок, используемых в данной программе. Здесь для каждой сборки указывается версия и контрольная сумма. Эти данные берутся из сборок при компиляции программы, что гарантирует во время работы приложения использование именно тех сборок, которые использовались при компиляции и тестировании,
Секция .assembly, но уже без модификатора extern. С этой директивы и начинается описание сборки.
Секция .hash algorithm определяет функцию, по которой будет вычисляться хэш-код. Он нужен для подтверждения правильности сборки
Секция .ver описывает версию сборки.
Затем в манифесте располагаются описания имени самого программного модуля, подсистемы исполнения, информация о выравнивании секций и еще некоторые данные.
Папка HelloConsole содержит коды самой программы на CIL. Они распределены по вложенным папкам:
Классы
Методы
Главная программа Main
Внимание. Писать программу на языке CIL вряд ли целесообразно. Пусть с ним работает CLR.