Робимо проект стартовим і запускаємо на виконання. Результат:
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Створення DLL-бібліотеки як окремого рішення (в іншому процесі)

Основна мета створення і використання DLL-бібліотек – забезпечення повторного використання коду. Тому в реальних системах різні компоненти можуть викликати однакові бібліотечні методи. Для цього DLL-бібліотека повинна знаходитися в окремому рішенні.

Для підключення бібліотеки до проекту файл зі збіркою, що містить бібліотеку потрібно підключити з меню «Add Reference». Оскільки проект не включений в Рішення, то у вікні додавання посилань потрібно вказати шлях до проекту у файловій системі.

 

Теоретичні відомості

Многофайловая сборка - это коллекция взаимосвязанных модулей, которые развертываются в виде цельной логической единицы. В IDE-среде Visual Studio шаблона проекта для создания многофайловой сборки на С# не предусмотрено. Поэтому используется компилятор командной строки (csc.exe).

 

Задача: создать многофайловую сборку по имени Car. В главном модуле этой сборки (car.dll) должен содержаться единственный тип класса SportCar и соответствующий манифест, который указывает на наличие дополнительного файла *.netmodule по имени auto.netmodule, содержащего еще один класс Auto. Каждый класс должен размещаться в отдельном двоичном файле, а пространство имен у них будет одно — Car. Оба класса создать на С#

 

Порядок создания многофайловой сборки приведен ниже.

 

1. С помощью любого простого текстового редактора создадим определение для класса Auto и сохраним его в файле с именем auto.cs:

using System;

 

namespace Car

{

 public class Auto

{

   public void AutoInfo()

   {

       Console.WriteLine("Информация об автомобиле: ");

   }

}

}

 

2. Скомпилируем этот класс в .NET-модуль. Для этого откройте в Visual Studio 2010 окно командной строки, перейдите в папку, где был сохранен файл auto.cs, и введите следующую команду (опция module флага /t указывает, что должен быть создан файл *.netmodule, а не *.dll или *.ехе):

 

csc.exe /t:module auto.cs

 

В папке с файлом auto.cs появится новый файл по имени auto.netmodule.

 

3. Создадим новый файл sportcar.cs со следующим определением класса:

 

using System;

 

namespace Car

{

public class SportCar

{

   public void InfoSportCar()

   {

       Console.WriteLine("Audi R8");

   }

}

}

 

4.  Скомпилируем sportcar.cs так, чтобы главный модуль в этой многофайловой сборке назывался car.dll. Кроме того, он должен включать информацию о двоичном файле auto.netmodule.

Выбираем соответствующие опции /t: library и /out:.

Чтобы включить информацию о двоичном файле auto.netmodule в манифест сборки, также потребуется добавить соответствующий флаг /addmodule. Полностью необходимая команда выглядит следующим образом:

 

csc /t:library /addmodule:auto.netmodule /out:car.dll sportcar.cs

 

После выполнения этой команды в каталоге должен появиться главный модуль car.dll, а также второстепенный двоичный файл auto.netmodule.

 

5. Анализ манифеста.

5.1. Откроем файл auto.netmodule в утилите c:\program Files\Microsoft SDKs\Windows\v6.0A\bin\ildasm.exe (возможно, путь на вашем ПК будет иной). Сразу же можно будет заметить, что в нем содержится манифест уровня модуля, единственной задачей которого является перечисление всех внешних сборок, которые упоминаются в кодовой базе. Поскольку в классе Auto был практически добавлен только вызов Console.WriteLine(), обнаружится следующая ключевая информация:

5.2. Далее откроем в ildasm.exe файл главного модуля car.dll и изучим содержимое манифеста уровня всей сборки. В нем важно обратить внимание, что маркер .file используется для представления информации о других ассоциируемых с многофайловой сборкой модулях (в данном случае — auto.netmodule), а маркеры .class extern — для перечисления имен внешних типов, которые упоминаются как используемые во второстепенном модуле (в данном случае — Auto). Ниже приведена соответствующая информация:

Дата: 2019-02-25, просмотров: 228.