В
Чтобы сборка имела доступ к другой сборке, которую строите вы (или кто-то другой), необходимо добавить ссылку из вашей сборки на другую сборку и обладать физическим доступом к этой другой сборке. В зависимости от инструмента разработки, применяемого для построения приложений .NET Core, вам будут доступны различные способы информирования компилятора о том, какие сборки должны включаться в цикл компиляции.
Исследование сборки с помощью ildasm.exe
Если вас начинает беспокоить мысль о необходимости освоения всех пространств имен .NET Core, то просто вспомните о том, что уникальность пространству имен придает факт наличия в нем типов, которые каким-то образом
Утилита ildasm.exe
(Intermediate Language Disassembler — дизассемблер промежуточного языка) дает возможность загрузить любую сборку .NET Core и изучить ее содержимое, включая ассоциированный с ней манифест, код CIL и метаданные типов. Инструмент ildasm.exe
позволяет программистам более подробно разобраться, как их код C# отображается на код CIL, и в итоге помогает понять внутреннюю механику функционирования .NET Core. Хотя для того, чтобы стать опытным программистом приложений .NET Core, использовать ildasm.exe
вовсе
На заметку! Утилита ildasm.exe
не поставляется с исполняющей средой .NET 5. Получить этот инструмент в свое распоряжение можно двумя способами. Первый способ предусматривает его компиляцию из исходного кода исполняющей среды .NET 5, который доступен по ссылке https://github.com/dotnet/runtime
. Второй и более простой способ — получить пакет NuGet по ссылке https://www.nuget.org/packages/Microsoft.NETCore.iLDAsm/
. Удостоверьтесь в том, что выбираете корректную версию (для книги понадобится версия 5.0.0 или выше). Добавьте пакет ILdasm
в свой проект с помощью команды dotnet add package Microsoft .NETCore.ILDAsm --version 5.0.0
. На самом деле команда не загружает ILDasm.exe
в ваш проект, а помещает его в папку пакета (на компьютере Windows): %userprofile%\.nuget\packages\microsoft.netcore.ildasm\5.0.0\runtimes\native\
.
Утилита ILDasm.exe
версии 5.0.0 также включена в папку Chapter_01
(и в папки для других глав, где применяется ILDasm.exe
) хранилища GitHub для данной книги.
После загрузки утилиты ildasm.exe
на свой компьютер вы можете запустить ее из командной строки и просмотреть справочную информацию. Чтобы извлечь код CIL, понадобится указать как минимум имя сборки.
Вот пример команды:
ildasm /all /METADATA /out=csharp.il calc.cs.dll
Команда создаст файл по имени csharp.il
и экспортирует в него все доступные данные.
Резюме
Задачей настоящей главы было формирование концептуальной основы, требуемой для освоения остального материала книги. Сначала исследовались ограничения и сложности, присущие технологиям, которые предшествовали инфраструктуре .NET Core, после чего в общих чертах было показано, как .NET Core и C# пытаются упростить текущее положение дел.
По существу .NET Core сводится к механизму исполняющей среды (.NET Runtime) и библиотекам базовых классов. Исполняющая среда способна обслуживать любые двоичные модули .NET Core (называемые сборками), которые следуют правилам управляемого кода. Вы видели, что сборки содержат инструкции CIL (в дополнение к метаданным типов и манифестам сборок), которые с помощью JIT-компилятора транслируются в инструкции, специфичные для платформы. Кроме того, вы ознакомились с ролью общеязыковой спецификации (CLS) и общей системы типов (CTS).
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT