• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

.NET Сборка (assembly)

Wise

Green Team
19.01.2018
32
11
BIT
0
.NET Сборка (assembly)

И так мы установили и бегло познакомились с основными компонентами платформы .NET Framework, но для того, чтобы двигаться дальше, необходимо познакомиться с таким понятием, как сборка (assembly)


Сборка — это наименьшая единица в мире .NET, которая представлена в виде файлов с расширением .exe или .dll, и содержит внутри себя код на промежуточном языке IL (Intermediate Language).


Чтобы лучше понять, что такое .net сборка, разберём небольшой пример.


Компиляция и создание файла сборки


Для начала создадим новый консольный проект и напишем в нём любой произвольный код. Для того, чтобы получить сборку, выполните одно из следующих действий:


  1. нажмите клавишу F6, после чего произойдет

  1. компиляция проекта (её выполнит компилятор языка c# — csc.exe)
  2. создание файла сборки

net-sborka-assembly_1.png



  • Ещё один способ, заключается в нажатие клавиши: F5 или сочетания клавиш: Ctrl+F5, вместо F6
  • компиляция проекта
  • создание файла сборки
  • запуск приложения в режиме отладки или без отладки (Ctrl+F5)

net-sborka-assembly_2.png



Так же хочется отметить, что для каждого языка .NET существует свой компилятор, например: для языка си шарп компилятор csc.exe (C-Sharp Compiler), для Visual Basic vbс.exe и так далее.


И так Вы выбрали один из способов описанных выше, выполнили компиляцию и получили файл сборки. Возникает вопрос, где искать созданный файл?

Путь к файлу .NET Сборки

Перейдите в окно Solution Explorer и нажмите правой кнопкой мыши на имени текущего проекта, на рисунке он обозначен словом Auto и выделен, синим цветом.


atributy-xml-fajla_13.png



далее выберите пункт: Properties


atributy-xml-fajla_2.png



В открывшемся окне, перейдите на вкладку «Build»


kak-dobavit-xml-fajl-v-solution-explorer_1.png



найдите надпись: «Output Path», в этой строке указан путь к файлу сборки: «bin\Debug\», для того, чтобы посмотреть полный путь или изменить текущий, используйте кнопку Browse, которая расположена рядом с этой строкой.


kak-peredat-dannye-mezhdu-formami-v-c_1.png



Путь к файлу сборку определён.


Для того, чтобы быстро перейти в папку, содержащую файл сборки, используйте следующие действия:


Нажмите на значок папки, либо используйте сочетание клавиш: Ctrl+O


net-sborka-assembly_3.png



После чего откроется окно содержащие папки и файлы текущего проекта


kak-dobavit-xml-fajl-v-solution-explorer_2.png



Зайдите в папку bin, затем в папку Debug, внутри папки Вы увидите файл с именем нашего проекта и расширением .exe или .dll. Расширение файла зависит от того, какой тип приложения Вы создаете в данный момент, будь-то динамическая библиотека(.dll), или исполняемый файл(.exe). На рисунке нужный нам файл помечен жёлтым цветом, на остальные файлы пока не обращайте внимания, они создаются во время режима отладки.


kak-najti-xml-jelement-po-ego-atributu-v-xml-fajle_1.png


Состав файла .NET сборки:

На каком бы языке мы не писали код в платформе .NET, после компиляции, Вы получаете однофайловую сборку (один файл с расширением .exe или .dll), которая содержит следующие компоненты:


  1. инструкции (код) на промежуточном языке IL
  2. Метаданные
  3. Манифест
  4. Ресурсы

net-sborka-assembly_4.png



На самом деле после компиляции мы можем получить не однофайловую, а многофайловую сборку. Но используются такие сборки реже, и чаще всего Вы будете встречать первый вид сборок — однофайловые.


О промежуточном языке IL поговорим более подробно в следующей статье, а пока разберем остальные компоненты сборки.

Метаданные

Метаданные генерируются автоматически компилятором .NET в момент создание сборки, они описывают типы и члены, содержащиеся внутри сборки.


Типы: класс, интерфейс, структура, перечисление, делегат.
Члены: поля, свойства, методы, события, конструкторы и так далее


Типы, могут содержать любое количество членов.


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


Для просмотра метаданных, а так же других компонентов сборки применяется утилита ildasm, о которой Вы можете прочитать в следующей статье.

Манифест

Помимо выше перечисленного сборка так же содержит ещё одни метаданные, который описывает саму сборку, такие метаданные называют — манифест. Эти данные формируются так же автоматически в процессе компиляции.


Файл манифест содержит такую информацию, как


  1. имя сборки
  2. название фирмы
  3. текущая версия сборки
  4. например:1.0.0.0
  5. список ссылок на внешние сборки
  6. например:System.Windows.Forms.dll
  7. авторские права
  8. и многое другое
Ресурсы

И так 4 компонент сборки, это ресурсы.


Ресурсы — это добавленные в нашу сборку: значки, картинки, звуки, иконки, и другие данные, которые являются необязательными.


Если в приложение нам не нужны звуки и картинки, мы просто не будем их добавлять. Соответственно наша сборка не будет содержать ресурсы, но при этом стоит помнить, что IL-код, метаданные и манифест, присутствуют всегда.


На самом деле сборка содержит ещё несколько дополнительных компонентов, знания о которых не требуются обычным разработчикам, поэтому они не были упомянуты.


Так же стоит знать, что сборки бывают нескольких типов: общие, приватные и дружественные. Более подробно о типах сборок, вы узнаете в следующих статьях.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!