Учебное пособие 1082
.pdfФГБОУ ВО «Воронежский государственный технический университет»
Кафедра автоматизированных и вычислительных систем
- 2017
СБОРКИ .NET
МЕТОДИЧЕСКИЕ УКАЗАНИЯ к выполнению контрольных работ по дисциплине
«Разработка приложений в Visual Studio» для студентов направления 09.03.01 «Информатика и вычислительная техника», профиля «Вычислительные машины, комплексы, системы и сети» заочной формы обучения
Воронеж 2017
1
Составитель: канд. техн. наук Е.А. Ганцева
УДК 681.3(075.8)
ББК 32.97я7
Сборки .NET: Методические указания к выполнению контрольных работ по дисциплине «Разработка приложений в Visual Studio» для студентов направления 09.03.01 «Информатика и вычислительная техника», профиля «Вычислительные машины, комплексы, системы и сети» заочной формы обучения / Воронеж: ФГБОУ ВО «Воронежский государственный технический университет», сост. Е.А. Ганцева, 2017. 46 с.
Методические указания предназначены для выполнения студентами контрольных работ по дисциплине «Разработка приложений в Visual Studio» и содержат краткие теоретические сведения, задания и практические примеры, необходимые для их выполнения.
Издание соответствует требованиям Государственного образовательного стандарта высшего образования по направлению 09.03.01 «Информатика и вычислительная техника», профилю «Вычислительные машины, комплексы, системы и сети», дисциплине «Разработка приложений в Visual Studio» и предназначено для студентов 4 курса заочной формы обучения.
Методические указания подготовлены в электронном виде в текстовом редакторе MS Word 2007 и содержится в файле МетУказанияСборки.pdf.
Табл. 5. Ил. 8. Библиогр.: 4 назв.
Рецензент: д-р техн. наук, ст. науч. сотр. В.А. Каладзе Ответственный за выпуск зав. кафедрой д-р техн. наук,
проф. С.Л. Подвальный
©Ганцева Е.А., 2017
©ФГБОУ ВО «Воронежский государственный технический университет», 2017
2
ВВЕДЕНИЕ
В методические указания вошли теоретические и практические материалы по созданию программного обеспечения в современной системе программирования Visual Studio. Издание предназначено для студентов заочной формы обучения профиля «Вычислительные машины, комплексы, системы и сети» и позволит им, освоив технику работы в Visual Studio, создавать приложения разного уровня сложности, уметь пользоваться всеми преимуществами современных средств программирования, выполнить предложенные контрольные работы, а также выпускную квалификационную работу.
Теоретический материал и практические примеры дают возможность изучить такие возможности системы программирования Visual Studio, как технологии использования сборок, рефлексии, динамического создания объектов в приложениях, работы с доменами и процессами.
1
РАБОТА № 1
СБОРКИ .NET. РАБОТА С ДИЗАССЕМБЛЕРОМ
Цель работы: изучение содержимого сборки, создание компонентов с заданными атрибутами.
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Сборка – это двоичный файл, который содержит описание самого себя, поддерживает версии и обслуживается CLR [1 - 4]. Преимущества сборок:
повторное использование кода; определение границ использования типов данных;
использование различных версий сборки на компьюте-
ре;
использование внешних ссылок и внутренних типов сборок;
использование частных и разделяемых сборока. Сборка может состоять из одного или нескольких фай-
лов.
Сборка .NET (*.dll или *.ехе) представлена разделами: заголовок файла Windows;
заголовок файла CLR; манифест сборки; метаданные типов; код на промежуточном языке; требуемые ресурсы.
Заголовок файла Windows позволяет загрузить сборку в память и определить тип приложения. Для просмотра заголовка используется утилита dumpbin.ехе (в окне командной строки Visual Studio 2010 – Tools/VS Command Promt) с флагом /headers:
dumpbin /headers Shapes.dll
2
Рис. 1. Windows заголовок сборки
Информация необходима при разработке компилятора
.NET и загрузке сборки в память.
Заголовок файла CLR позволяет CLR выполнять эту сборку, в нём присутствуют флаги местоположения внутри файла метаданных, ресурсов, версии исполняющей среды, значение открытого ключа и т.д.
Просмотр заголовка CLR выполняется утилитой dumpbin.exe с флагом /clrheader:
3
dumpbin /clrheader Shapes.dll
Рис. 2. Заголовок CLR
JIT-компилятор при выполнении CIL-кода создает инструкции, настроенные на конкретные платформу и процессор.
Рис. 3. Промежуточный код
4
Метаданные описывают формат типов самой сборки и типов, на которые ссылается сборка. Метаданные показывают местоположение типов внутри файла, используются в рефлексии.
Рис. 4. Метаданные сборки
Манифест описывает каждый модуль сборки, версию, ссылки на внешние сборки. Библиотеки типов СОМ не описывают внешние ссылки.
Впервом блоке манифеста перечисляются все необходимые внешние сборки. Например, mscorlib.dll и System.Drawing отображаются после слов .assembly extern.
Вкаждом блоке .assembly extern присутствуют директи-
вы .publickeytoken и .ver.
.publickeytoken появляется, если сборка была сконфигурирована со строгим именем.
.ver отображает версию сборки.
.custom перечисляет атрибуты сборки.
5
Рис. 5. Манифест сборки
Эти значения также можно установить в редакторе свойств проекта в окне Solution Explorer, на вкладке
Application, нажав кнопку Assembly Information.
Рис. 6. Информация о сборке
6
При этом внесение изменений обновляет файл
AssemblyInfo.cs
Ресурсы сборки (иконки приложения, графические файлы, звук, таблицы строк) не обязательны.
Существуют подчиненные сборки (satellite assemblies), в
которых находятся только ресурсы. Такие сборки позволяют разделить ресурсы для языков разных стран.
ЗАДАНИЕ
Создать проект библиотеки классов. Например, биб-
лиотеку фигур Shapes: окружность, треугольник. Каждый класс обладает двумя конструкторами, одному из которых вообще не требуются параметры, другому они необходимы для инициализации экземпляров. Каждый класс снабжен функцией, вычисляющей площадь фигуры.
namespace Shapes
{
public class Circle
{
double Radius; public Circle()
{
Radius = 0;
}
public Circle(double givenRadius)
{
Radius = givenRadius;
}
public double Area()
{
return System.Math.PI * (Radius*Radius);
}
}
public class Triangle
{
double Base; double Height;
7
public Triangle()
{
Base = 0;
Height = 0;
}
public Triangle(double givenBase, double givenHeight)
{
Base = givenBase; Height = givenHeight;
}
public double Area()
{
return 0.5 * Base*Height;
}
}
}
Построить проект.
Build/Build
или откомпилировать файл с помощью командной строки: csc /target:library shapes.cs
Опция /target:library указывает компилятору на необходимость создания модуля DLL, а не исполняемого файла.
Исследовать заголовки сборки с помощью утилиты dumpbin.
Исследовать содержимое построенного модуля с по-
мощью ildasm.
Исследовать манифест.
Исследовать метаданные и CLI-код.
Изменить номер версии и некоторые (по своему выбору) атрибуты модуля в AssemblyInfo.cs или shapes.cs. С помощью ildasm проследить за изменениями в файле shapes.dll.
Создать новый модуль moreshapes, в который будет до-
бавлен класс Square, изучить его свойства с помощью ildasm. Создать клиента, использующего shapes, например,
ShapeUser.cs.
namespace ShapeUser
8