Сборки имеют следующие свойства.
Сборки реализованы как файлы EXE или DLL.
Сборки загружаются в память только в том случае, если они реально используются. Если они не используются, то они не загружаются. Благодаря этому свойству сборки могут быть эффективным средством для управления ресурсами в крупных проектах.
Сведения о сборке можно получить программным путем с помощью отражения. Дополнительные сведения см. в статьях Отражение (C#) и Отражение (Visual Basic).
Сборки в среде CLR
Сборки предоставляют сведения для среды CLR, которые нужны для распознавания реализаций типов. Для среды выполнения тип не существует вне контекста сборки.
Сборка определяет следующие сведения:
Граница безопасности. Сборка представляет собой единицу, для которой запрашиваются и предоставляются разрешения. Дополнительные сведения о границах безопасности в сборках см. в разделе Вопросы безопасности сборок.
Граница области действия ссылок. Манифест сборки содержит метаданные, используемые для разрешения типов и для выполнения связанных с ресурсами запросов. Манифест указывает типы и ресурсы, предоставляемые за пределами сборки, а также перечисляет другие сборки, от которых она зависит. При отсутствии связанного манифеста сборки код на промежуточном языке MSIL, находящийся в переносимом исполняемом (PE) файле, выполняться не будет.
Граница версий. Сборка является наименьшей единицей с поддержкой версий в среде CLR. Версия для всех типов и ресурсов в одной сборке назначается как единому целому. В манифесте сборки описываются зависимости определенных версий от других сборок. Дополнительные сведения об управлении версиями см. в разделе Управление версиями сборки.
Единица развертывания. При запуске приложения могут присутствовать лишь сборки, первоначально вызываемые приложением. Другие сборки, например, содержащие ресурсы локализации или вспомогательные классы, могут извлекаться по требованию. Это позволяет приложениям сохранять простую структуру и малый размер при первоначальном скачивании. Дополнительные сведения о развертывании сборок см. в разделе Развертывание приложений.
Единица параллельного выполнения. Дополнительные сведения о выполнении нескольких версий сборок см. в разделе Сборки и параллельное выполнение.
Создание сборки
Сборки могут быть статическими или динамическими. Статические сборки хранятся на диске в виде переносимых исполняемых (PE) файлов. Статические сборки могут включать интерфейсы, классы и ресурсы, такие как точечные рисунки, файлы JPEG и другие файлы ресурсов. Кроме того, можно создавать динамические сборки, которые запускаются непосредственно из памяти и не сохраняются на диск перед выполнением. Динамические сборки можно сохранить на диске после выполнения.
Существует несколько способов создания сборок. Можно использовать средства разработки, такие как Visual Studio, позволяющие создавать файлы DLL или EXE. Чтобы создать сборки с использованием модулей из других средств разработки, можно воспользоваться средствами из Windows SDK. Для создания динамических сборок также можно использовать интерфейсы CLR такие, как System.Reflection.Emit.
Чтобы создать сборку в Visual Studio, выберите пункт Сборка в меню Сборка.
Манифест сборки
Каждая сборка имеет файл манифеста сборки. Манифест сборки выполняет роль оглавления и содержит следующее:
Идентификатор сборки (ее имя и версию).
Таблица с описанием всех файлов, входящих в сборку. Например, сюда относятся другие ваши сборки, от которых зависит файл EXE или DLL, а также растровые изображения или файлы сведений.
Добавление ссылки на сборку
Чтобы использовать сборку в приложении, нужно добавить ссылку на нее. Когда вы добавите ссылку на сборку, в вашем приложении станут доступны все предоставленные в сборке типы, свойства, методы и другие члены пространств имен, как если бы их код являлся частью файла с исходным кодом вашего приложения.
На C# вы можете использовать две версии одной и той же сборки в одном приложении. Дополнительные сведения см. в разделе Псевдоним extern.
Что за папка assembly и можно ли ее удалить?
Некоторые пользователи в поисках свободного места на системном диске C обращают внимание на каталог Assembly, находящийся в папке Windows. Обычно его размер составляет от нескольких сот мегабайт, до нескольких гигабайт. Именно по этому возникает желание удалить папку Assembly и тем самым освободить место на диске C.
Любой здравомыслящий пользователь Windows перед тем как что – то удалять, а тем более из системной папки, попытается разобраться что в ней храниться и к чему может привести ее удаление. Специально для таких пользователей написана данная статья.
Что хранится в папке Assembly?
В данной папке находятся служебные и исполняемый файлы программной платформы NET Framework, которая в свою очередь обеспечивает работу большого количества программ, написанных с использованием NET Framework.
Содержимое папки Assembly
Проще говоря, папка Assembly содержит файлы необходимые для работы программ, которые написаны с использованием сборки NET Framework.
Также в ней могут находиться файлы, обеспечивающие подготовку обновлений операционной системы.
Можно ли удалить папку Assembly?
Конечно же делать этого не стоит. Так как последствиями может стать появление ошибок при запуске некоторых программ и игр.
Если же ситуация безвыходная и папка Assembly занимает непростительно много места, в этом случае лучше воспользоваться стандартными средствами очистки локального диска C через его свойства, предварительно создав контрольную точку восстановления.
Глобальный кэш сборок
На каждом компьютере с установленной средой CLR имеется кэш кода на уровне компьютера, называемый глобальным кэшем сборок. В глобальном кэше сборок сохраняются сборки, специально предназначенные для совместного использования на компьютере несколькими приложениями.
Организовывать совместное использование сборок путем установки их в глобальный кэш следует только при необходимости. Как правило, зависимости между сборками следует сохранять закрытыми, а сами сборки нужно размещать в папке приложения, если они не предназначены для совместного использования. Кроме того, не обязательно устанавливать сборки в глобальный кэш сборок для доступа к ним из COM-взаимодействия или из неуправляемого кода.
Существуют случаи, в которых явно не требуется установка сборки в глобальный кэш сборок. Если одна из составляющих приложения сборок помещается в глобальный кэш сборок, то после этого вы не сможете скопировать или установить приложение с помощью команды xcopy путем копирования каталога приложения. Для этого также потребуется переместить сборку в глобальный кэш сборок.
Существует два способа развертывания сборки в глобальном кэше сборок.
Использование программы установки, предназначенной для работы с глобальным кэшем сборок. Данный подход является предпочтительным при установке сборок в глобальный кэш.
Используйте инструмент разработчика под названием средство глобального кэша сборок (Gacutil.exe) из Windows SDK.
В сценариях развертывания для установки сборок в глобальный кэш используйте установщик Windows. Средство глобального кэша сборок используйте только при разработке, поскольку оно не обеспечивает подсчет ссылок на сборку и другие возможности, предоставляемые при использовании установщика Windows.
Администраторы часто защищают папку systemroot с помощью списка управления доступом, определяющего права на запись и выполнение. Так как глобальный кэш сборок устанавливается в подкаталоге каталога SystemRoot, он наследует этот список управления доступом. Рекомендуется разрешать удаление файлов из глобального кэша сборок только пользователям, имеющим права доступа администратора.
Сборки, развернутые в глобальном кэше сборок, должны иметь строгие имена. При добавлении сборки в глобальный кэш сборок выполняется проверка целостности всех входящих в нее файлов. Кэш выполняет такую проверку целостности, чтобы гарантировать, что сборка не была изменена (например, если файл был изменен, но изменения не были отражены в манифесте сборки).
BestProg
Содержание
Поиск на других ресурсах:
.NET Framework служит средой для поддержки, разработки и выполнения распределенных приложений, которые базируются на компонентах (элементах управления).
Приложения (программы) можно разрабатывать на разных языках программирования, которые поддерживают эту технологию.
.NET Framework обеспечивает:
Библиотека базовых классов включает в себя определение разнообразных примитивов, которыми могут быть: потоки, графические API-интерфейсы, реализация баз данных, файловый ввод-вывод и прочее.
3. Какой принцип действия общеязыковой среды выполнения CLR ( Common Language Runtime )?
Основное назначение CLR – превратить промежуточный код MSIL в исполнительный код в процессе выполнения программы.

Исполнительная среда CLR отвечает за определение места размещения сборки (assembly).
Запрашиваемый тип, который размещается в сборке (например, класс ArrayList или другой тип), определяется в двоичном файле ( *.dll или *.exe ) с помощью считывания метаданных этого файла.
После этого CLR размещает в памяти считанный из сборки тип.
Затем CLR превращает CIL-код в соответствующие инструкции, которые подстраиваются под конкретную платформу (в зависимости от ПК, операционной системы и т.п.). Кроме того, на этом этапе происходят необходимые проверки на предмет безопасности.
Последним происходит выполнение запрашиваемого программного кода.
4. Что такое промежуточный язык MSIL ( Microsoft Intermediate Language ) или CIL ( Common Intermediate Language )?
MSIL есть псевдокодом. MSIL определяет набор инструкций, которые:
Фактически, MSIL – это язык переносного ассемблера
Сборка предназначена для сохранения пространств имен ( namespaces ). Пространства имен содержат типы. Типами могут быть классы, делегаты, интерфейсы, перечисления, структуры.
Сборка может содержать любое количество пространств имен. Любое пространство имен может содержать любое количество типов (классов, интерфейсов, структур, перечислений, делегатов).
6. Что размещается в сборках?
7. Что такое манифест ( manifest )?
Манифест – это описание самой сборки с помощью метаданных.
В манифесте размещается информация:
Если в исходном коде используются библиотеки базовых классов (например из сборки mscorlib.dll ), то они загружаются с помощью загрузчика классов.
После этого приложение выполняется.
9. Какие существуют виды сборок?
Существует два вида сборок:
В многофайловой сборке один из модулей есть главным ( primary ).
10. В каком файле размещается главная сборка библиотеки MS Visual Studio?
Главная сборка размещается в файле “ mscorlib.dll ”.
Типами могут быть классы, интерфейсы, структуры, перечисления, делегаты.
12. Какое назначение общеязыковой спецификации CLS?
14. Что такое пространство имен ( namespace )?
Пространство имен предназначено для объединения группы типов, которые связаны между собою с семантической точки зрения. Типы размещаются в сборках ( assembly ). Под типами понимаются классы, делегаты, интерфейсы, структуры, перечисления.
Примеры названий пространств имен:
Например, в пространстве имен System.Data размещаются основные типы для работы с базами данных, в пространстве имен System.Collections размещаются основные типы для работы с коллекциями.
Рис. 3. Вызов утилиты Object Browser
Рис. 4. Окно Object Browser с выделенной сборкой mscorlib.dll
Рис. 5. Сборка mscorlib и список пространств имен, которые входят в нее
Аналогично раскрывается любое из пространств имен. В пространствах имен описываются типы. В типах описываются методы, свойства, константы и т.п.
Рис. 6. Содержимое класса BinaryReader
Примеры подключения пространств имен:
После подключения пространства имен можно обращаться к типам, которые в них реализованы.
Программирование: теория и практика
Рубрики
Свежие записи
При использовании материалов сайта, ссылка на сайт обязательна.
Assemblies have the following properties:
Assemblies are implemented as .exe or .dll files.
Assemblies are only loaded into memory if they are required. If they aren’t used, they aren’t loaded. This means that assemblies can be an efficient way to manage resources in larger projects.
You can programmatically obtain information about an assembly by using reflection. For more information, see Reflection (C#) or Reflection (Visual Basic).
Assemblies in the common language runtime
Assemblies provide the common language runtime with the information it needs to be aware of type implementations. To the runtime, a type does not exist outside the context of an assembly.
An assembly defines the following information:
Security boundary. An assembly is the unit at which permissions are requested and granted. For more information about security boundaries in assemblies, see Assembly security considerations.
Type boundary. Every type’s identity includes the name of the assembly in which it resides. A type called MyType that is loaded in the scope of one assembly is not the same as a type called MyType that is loaded in the scope of another assembly.
Reference scope boundary. The assembly manifest has metadata that is used for resolving types and satisfying resource requests. The manifest specifies the types and resources to expose outside the assembly, and enumerates other assemblies on which it depends. Microsoft intermediate language (MSIL) code in a portable executable (PE) file won’t be executed unless it has an associated assembly manifest.
Version boundary. The assembly is the smallest versionable unit in the common language runtime. All types and resources in the same assembly are versioned as a unit. The assembly manifest describes the version dependencies you specify for any dependent assemblies. For more information about versioning, see Assembly versioning.
Deployment unit. When an application starts, only the assemblies that the application initially calls must be present. Other assemblies, such as assemblies containing localization resources or utility classes, can be retrieved on demand. This allows apps to be simple and thin when first downloaded. For more information about deploying assemblies, see Deploy applications.
Side-by-side execution unit. For more information about running multiple versions of an assembly, see Assemblies and side-by-side execution.
Create an assembly
Assemblies can be static or dynamic. Static assemblies are stored on disk in portable executable (PE) files. Static assemblies can include interfaces, classes, and resources like bitmaps, JPEG files, and other resource files. You can also create dynamic assemblies, which are run directly from memory and aren’t saved to disk before execution. You can save dynamic assemblies to disk after they have executed.
There are several ways to create assemblies. You can use development tools, such as Visual Studio, that can create .dll or .exe files. You can use tools in the Windows SDK to create assemblies with modules from other development environments. You can also use common language runtime APIs, such as System.Reflection.Emit, to create dynamic assemblies.
To build an assembly in Visual Studio, on the Build menu, select Build.
Assembly manifest
Every assembly has an assembly manifest file. Similar to a table of contents, the assembly manifest contains:
The assembly’s identity (its name and version).
A file table describing all the other files that make up the assembly, such as other assemblies you created that your .exe or .dll file relies on, bitmap files, or Readme files.
Add a reference to an assembly
To use an assembly in an application, you must add a reference to it. Once an assembly is referenced, all the accessible types, properties, methods, and other members of its namespaces are available to your application as if their code were part of your source file.
In C#, you can use two versions of the same assembly in a single application. For more information, see extern alias.









