Содержимое сборок
В общем случае статическая сборка может состоять из четырех элементов.
Манифест сборки, который содержит метаданные сборки.
Метаданные типов.
Реализующий типы код на промежуточном языке MSIL.
Набор ресурсов.
Обязательным является лишь манифест сборки, однако остальные типы ресурсов необходимы для обеспечения нужной функциональности сборки.
Существует несколько способов группировки этих элементов в сборку. Все эти элементы можно объединить в одном физическом файле, как показано на следующей иллюстрации.
Сборка из одного файла
Или элементы сборки могут находиться в нескольких файлах. Эти файлы могут быть модулями скомпилированного кода. (. netmodule), ресурсами (например, BMP- или JPG-файлами) или иными файлами, необходимыми приложению. Сборка из нескольких файлов создается, если необходимо собрать модули, написанные на различных языках, и оптимизировать загрузку приложения, выделяя редко используемые пользовательские типы в модуль, который будет загружаться только при необходимости.
На следующем рисунке разработчик гипотетического приложения выделил в отдельный модуль некоторый вспомогательный код, а ресурс большого объема (BMP-рисунок) оставил в первоначальном файле. При использовании .NET Framework загрузка файла выполняется только при ссылке; процесс загрузки кода оптимизируется путем размещения в отдельном файле кода, ссылки на который используются редко.
Сборка из нескольких файлов
Примечание |
---|
Файлы, составляющие такую сборку, не являются физически связанными в файловой системе.Скорее они связываются друг с другом с помощью манифеста сборки, а среда CLR управляет ими как одним целым. |
На этом рисунке все три принадлежащих сборке файла описаны в манифесте сборки, который находится в файле MyAssembly.dll. Для файловой системы они являются тремя различными файлами. Следует иметь в виду, что файл Util.netmodule был скомпилирован как модуль, поскольку он не содержит данных о сборке. При создании сборки ее манифест был добавлен в файл MyAssembly.dll, что указывает на связь сборки с файлами Util. netmodule и Graphic.bmp.
При проектировании исходного кода необходимо принять определенные решения о способе разделения функций приложения между одним или несколькими файлами. При проектировании кода .NET Framework необходимо принять аналогичные решения о способе разделения функций между одной или несколькими сборками.