48 cb
2.05 версия исполняющей среды
2158 [ B7C] RVA [size] каталога MetaData
1 флаги
Только IL
0 маркер записи
0 [ 0] RVA [size] каталога Resources
0 [ 0] RVA [size] каталога StrongNameSignature
0 [ 0] RVA [size] каталога CodeManagerTable
0 [ 0] RVA [size] каталога VTableFixups
0 [ 0] RVA [size] каталога ExportAddressTableJumps
0 [ 0] RVA [size] каталога ManagedNativeHeader
Сводка
2000 .reloc
2000 .rsrc
2000 .text
И снова важно отметить, что вам как разработчику приложений .NET Core не придется беспокоиться о тонких деталях информации заголовка файла CLR. Просто знайте, что каждая сборка .NET Core содержит данные такого рода, которые исполняющая среда .NET Core использует "за кулисами" при загрузке образа в память. Теперь переключите свое внимание на информацию, которая является намного более полезной при решении повседневных задач программирования.
Код CIL, метаданные типов и манифест сборки
В своей основе сборка содержит код CIL, который, как вы помните, представляет собой промежуточный язык, не зависящий от платформы и процессора. Во время выполнения внутренний код CIL на лету посредством JIT-компилятора компилируется в инструкции, специфичные для конкретной платформы и процессора. Благодаря такому проектному решению сборки .NET Core действительно могут выполняться под управлением разнообразных архитектур, устройств и ОС. (Хотя вы можете благополучно и продуктивно работать, не разбираясь в деталях языка программирования CIL, в главе 19 предлагается введение в синтаксис и семантику CIL.)
Сборка также содержит метаданные, полностью описывающие формат внутренних типов и формат внешних типов, на которые сборка ссылается. Исполняющая среда .NET Core применяет эти метаданные для выяснения местоположения типов (и их членов) внутри двоичного файла, для размещения типов в памяти и для упрощения удаленного вызова методов. Более подробно детали формата метаданных .NET Core будут раскрыты в главе 17 во время исследования служб рефлексии.
Сборка должна также содержать связанный с ней
Дополнительные ресурсы сборки
Наконец, сборка .NET Core может содержать любое количество встроенных ресурсов, таких как значки приложения, файлы изображений, звуковые клипы или таблицы строк. На самом деле платформа .NET Core поддерживает
Отличия между библиотеками классов и консольными приложениями
До сих пор в этой книге почти все примеры были консольными приложениями .NET Core. При наличии опыта разработки для .NET, вы заметите, что они похожи на консольные приложения .NET. Основное отличие касается процесса конфигурирования (рассматривается позже), а также того, что они выполняются под управлением .NET Core. Консольные приложения имеют единственную точку входа (либо указанный метод Main()
dotnet.exe).С другой стороны, библиотеки классов не имеют точки входа и потому не могут запускаться напрямую. Они используются для инкапсуляции логики, специальных типов и т.п., а ссылка на них производится из других библиотек классов и/или консольных приложений. Другими словами, библиотеки классов применяются для хранения всего того, о чем шла речь в разделе "Роль сборок .NET Core" ранее в главе.
Отличия между библиотеками классов .NET Standard и .NET Core