Основы языка C# 2005. Евсеева О.Н - 13 стр.

UptoLike

Составители: 

17
системном реестре. Без этого приложение СОМ просто не станет работать! А в
.NET приложение готово к использованию сразу же после переноса на
компьютер.
При описании манифеста говорилось про списки используемых сборок.
Это означает, что приложение может иметь в своем составе сборки других
приложений, разрешенные к совместному использованию. Исходя из этого,
сборки могут быть двух типов: приватные и разделяемые.
Приватные сборки (private assemblies) доступны только в рамках
приложения-владельца. Разделяемые сборки (shared assemblies) – для всех
заинтересованных приложений. Такие сборки должны храниться в специальном
глобальном кэше сборок. Обычно он находится в папке .WINNT\Assembly. Но
для разделяемых сборок необходимо соблюдать правило уникальности
именования. Если приложение хочет использовать разделяемую сборку, оно не
должно содержать одноименную сборку.
Метаданные
Когда компилятор .NET создает код MSIL, параллельно он производит и
метаданные, которые включаются в файлы сборки приложения. Метаданные
содержат всю информацию о приложении, необходимую для его исполнения в
среде выполнения CLR. Важной составной частью метаданных является
манифест, который уже был рассмотрен. Но помимо него метаданные
включают и другие сведения:
имя приложения;
публичный ключ;
информацию о типах;
атрибуты;
ресурсы.
Публичный ключ необходим в системе безопасности среды выполнения
CLR для расшифровки зашифрованных сборок.
Информация о типах определяет, какие типы экспортируются
приложением. Она включает название типа, его доступность, базовый класс и
члены типа (поля, методы, события).
Атрибуты сборкинастраиваемый набор элементов. Разработчик может
добавить сюда собственные элементы с любой необходимой информацией о
сборке или экспортируемых типах. Если сборка содержит метаданные, то код
приложения является управляемымпригодным для выполнения в среде
выполнения CLR. В противном случае код называется неуправляемым.
Компиляторы Delphi, C#, Visual Basic генерируют управляемый код.
Компилятор C++, в зависимости от настроек, может создавать коды обоих
видов. Если приложение .NET работает с каким-либо сервером СОМ, то оно
использует неуправляемый код.