books-read.com
books-read.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

ildasm /all /METADATA /out=CarLibrary.il

    .CarLibrarybinDebugnet5.0CarLibrary.dll

Раздел манифеста

Manifest
дизассемблированных результатов начинается со строки
//Metadata version: 4.0.30319
. Непосредственно за ней следует список всех внешних сборок, требуемых для библиотеки классов:

// Metadata version: v4.0.30319

.assembly extern System.Runtime

{

  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )

  .ver 5:0:0:0

}

.assembly extern System.Console

{

  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )

  .ver 5:0:0:0

}

Каждый блок

.assembly extern
уточняется директивами
.publickeytoken
и
.ver
. Инструкция
.publickeytoken
присутствует только в случае, если сборка была сконфигурирована со строгим именем. Маркер
.ver
определяет числовой идентификатор версии ссылаемой сборки.

На заметку! Предшествующие версии .NET Framework в большой степени полагались на назначение строгих имен, которые вовлекали комбинацию открытого и секретного ключей. Это требовалось в среде Windows для сборок, подлежащих добавлению в глобальный кеш сборок, но с выходом .NET Core необходимость в строгих именах значительно снизилась.

После ссылок на внешние сборки вы обнаружите несколько маркеров .custom, которые идентифицируют атрибуты уровня сборки (кроме маркеров, сгенерированных системой, также информацию об авторском праве, название компании, версию сборки и т.д.). Ниже приведена (совсем) небольшая часть этой порции данных манифеста:

.assembly CarLibrary

{

  ...

  .custom instance void ... TargetFrameworkAttribute ...

  .custom instance void ... AssemblyCompanyAttribute ...

  .custom instance void ... AssemblyConfigurationAttribute ...

  .custom instance void ... AssemblyFileVersionAttribute ...

  .custom instance void ... AssemblyProductAttribute ...

  .custom instance void ... AssemblyTitleAttribute ...

Такие настройки могут устанавливаться либо с применением окна свойств проекта в Visual Studio, либо путем редактирования файла проекта и добавления надлежащих элементов. Находясь в среде Visual Studio, щелкните правой кнопкой мыши на имени проекта в окне Solution Explorer, выберите в контекстном меню пункт Properties (Свойства) и перейдите не вкладку Package (Пакет) в левой части открывшегося диалогового окна (рис. 16.4).

Язык программирования C#9 и платформа .NET5 - _105.png

Добавить метаданные к сборке можно и прямо в файле проекта

*.csproj
. Следующее обновление главного узла
PropertyGroup
в файле проекта приводит к тому же результату, что и заполнение формы, представленной на рис. 16.4:

 <PropertyGroup>

<b>    &lt;TargetFramework&gt;net5.0&lt;/TargetFramework&gt;</b>

<b>    &lt;Copyright&gt;Copyright 2020&lt;/Copyright&gt;</b>

<b>    &lt;Authors&gt;Phil Japikse&lt;/Authors&gt;</b>

<b>    &lt;Company&gt;Apress&lt;/Company&gt;</b>

<b>    &lt;Product&gt;Pro C# 9.0&lt;/Product&gt;</b>

<b>    &lt;PackageId&gt;CarLibrary&lt;/PackageId&gt;</b>

<b>    &lt;Description&gt;This is an awesome library for cars.&lt;/Description&gt;</b>

<b>    &lt;AssemblyVersion&gt;1.0.0.1&lt;/AssemblyVersion&gt;</b>

<b>    &lt;FileVersion&gt;1.0.0.2&lt;/FileVersion&gt;</b>

<b>    &lt;Version&gt;1.0.0.3&lt;/Version&gt;</b>

  &lt;/PropertyGroup&gt;

На заметку! Остальные поля информации о сборке на рис. 16.4 (и в показанном выше содержимом файла проекта) используются при генерировании пакетов NuGet из вашей сборки. Данная тема раскрывается позже в главе.

Исследование кода CIL

Вспомните, что сборка не содержит инструкций, специфичных для платформы; взамен в ней хранятся инструкции на независимом от платформы общем промежуточном языке (Common Intermediate Language — CIL). Когда исполняющая среда .NET Core загружает сборку в память, ее внутренний код CIL компилируется (с использованием JIT-компилятора) в инструкции, воспринимаемые целевой платформой. Например, метод

TurboBoost()
класса
SportsCar
представлен следующим кодом CIL:

.method public hidebysig virtual

   instance void  TurboBoost() cil managed

{

  .maxstack  8

  IL_0000:  nop

  IL_0001:  ldstr &quot;Ramming speed! Faster is better...&quot;

  IL_0006:  call  void [System.Console]System.Console::WriteLine(string)

  IL_000b:  nop

  IL_000c:  ret

}

// end of method SportsCar::TurboBoost

Большинству разработчиков приложений .NET Core нет необходимости глубоко погружаться в детали кода CIL. В главе 19 будут приведены дополнительные сведения о синтаксисе и семантике языка CIL, которые могут быть полезны при построении более сложных приложений, требующих расширенных действий вроде конструирования сборок во время выполнения.

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор books-read.com


Прокомментировать
Подтвердите что вы не робот:*