Cамоучитель по VB.NET

         

Манифест


Теоретически сборка может быть устроена весьма сложно, поэтому в нее включается манифест — совокупность всех сведений о сборке, необходимых исполнительной


среде (CLR) для загрузки, компиляции (при необходимости) и выполнения сборки. В манифест входят следующие сведения:

  • информация, необходимая для поиска модулей, от которых зависит работа сборки;
  • имена всех файлов, входящих в сборку;
  • имена и метаданные всех сборок и файлов, используемых сборкой;
  • данные о версии сборки;
  • информация о типах, используемая исполнительной средой для экспортирования типов из сборки (по аналогии с информацией, находящейся в библиотеке типов СОМ).

Именно благодаря наличию манифеста появляется возможность создания сборок, состоящих из нескольких файлов. Кроме того, данные манифеста заменяют сложную систему регистрации компонентов в реестре. Первое представление о сборке и ее манифесте дает файл Assemblylnfo.vb; чтобы просмотреть содержимое этого файла, дважды щелкните на соответствующей строке окна решения VS .NET. Как видно из приведенного ниже примера, этот текстовый файл содержит многочисленные атрибуты сборки. Большинство атрибутов (например, название организации) можно редактировать вручную, хотя чаще значения задаются в IDE при помощи диалоговых окон свойств проекта.

Imports System.Reflection

Imports System.Runtime.InteropServices

'Следующая группа атрибутов содержит общую информацию о сборке. ' Измените значения этих атрибутов, чтобы изменить данные. ' связанные со сборкой.

'Review the values of the assembly attributes

<Assembly:AssemblyTitle("Sample")>

<Assembly:AssemblyDescription("")>

<Assembly:AssemblyCompany("Apress")>

<Assemblу:AssemblуProduct("")>

<Assembly:AssemblyCopyright("2001")>

<Assembly:AssemblyTrademark("")>

<Assembly:CLSCompliant(True)>

' Следующий QUID используется для идентификации библиотеки типов.

' если проект будет использоваться в СОМ

<Assembly:Guid("5D7BAFDE-EACA-4653-9C55-BA619E13D447")>

' Данные версии для сборки состоят из следующих четырех величин:

' Основная версия

' Дополнительная версия

' Ревизия

' Номер построения

' Вы можете задать значения всех атрибутов или задать номера построения и ревизии по умолчанию.

' Для этого используется знак '*', как показано ниже.

<Assembly:AssemblyVersion("1.0.*")>


В каталоге \bin .NET SDK находится полезная программа ILDASM, которая может использоваться для исследования сборок и их манифестов. На рис. 13.1 показано, какую информацию выдает ILDASM для программы Employee из главы 4.

 

Исследование манифеста

При двойном щелчке на строке Manifest из рис. 13.1 открывается окно, показанное на рис. 13.2. Обратите внимание на перечисление всех сборок, от которых зависит данная сборка, а также на описание класса Employee.

Манифест сборки всегда содержит два обязательных атрибута, указанных в верхней и нижней части рис. 13.2:

  • имя сборки;
  • основной и дополнительный номер версии.

В качестве имени сборки может использоваться любое допустимое имя файла. Обычно имя сборки задается в диалоговом окне — выполните команду Project > Properties и перейдите на страницу General в категории Common Properties.

Рис. 13.1. Программа ILDASM в действии

Номера версии (основной, дополнительный, ревизия и построение) хранятся в следующем формате:

<0сн>.<дополн>.<ревизия>.<построение>

Эти значения можно задать прямо в файле Assemblylnfo.vb. Чтобы включить режим автоматической нумерации, введите версию в формате «х.у .*». Знак «*» указывает VS на то, что номера ревизии и построения должны генерироваться автоматически.


Во многих сборках также встречаются еще два атрибута:

  • локальный контекст;
  • сильное имя.

Локальный контекст (culture) содержит информацию о национальных стандартах, поддерживаемых сборкой. Не путайте локальный контекст с языком. Например, и в Великобритании и в США говорят на\нглийском языке, но локальные контексты в этих странах различаются (так, в них используются разные форматы вывода дат и денежных сумм).

Рис. 13.2. Манифест класса Employee

Сильное имя (strong name) можно считать аналогом GUID, хотя оно устроено несколько сложнее. Сильные имена используются лишь для общих сборок. Дополнительная информация приведена в следующем разделе.


На момент написания книги в среде программирования не поддерживалось создание сборок, состоящих из нескольких файлов. Если такая необходимость возникала, программисту приходилось обращаться к документации и использовать соответствующие утилиты .NET SDK. Все компиляторы командной строки .NET позволяют создавать многофайловые сборки. Хотя в книге данная тема не рассматривается, мы хотим обратить ваше внимание на одну интересную особенность многофайловых сборок: они тоже могут устанавливаться простым копированием, причем устанавливать сразу все файлы на компьютер конечного пользователя не обязательно — компоненты могут копироваться по мере надобности. Эта возможность очень удобна для установки по Интернету, где приходится учитывать объем пересылаемой информации. Например, в многофайловой сборке прием компонента справочной системы можно отложить до того момента, когда пользователь захочет вызвать справку.



Содержание раздела