Общие сборки и GAC
Общие сборки и GAC
Общие сборки .NET хранятся в глобальном кэше сборок (GAC). Наличие глобального кэша экономит дисковое пространство и память, поскольку на стадии выполнения программы на диске или в памяти достаточно хранить лишь один экземпляр сборки. Конечно, при совместном использовании сборок возникают некоторые проблемы, присущие старому механизму совместного использования DLL на базе реестра. К счастью, средства контроля версии .NET позволяют хранить в GAC разные версии одной сборки, поэтому каждое приложение может использовать нужную версию. Постарайтесь как можно реже использовать глобальный кэш сборок и ограничиться следующими ситуациями:
Список сборок, находящихся в GAC, выводится утилитой gacutil.exe из каталога \bin .NET SDK. Команда имеет следующий синтаксис: gacutil.exe -1
Ниже приведено начало списка для одного из наших компьютеров. Полный список имеет внушительные размеры; даже на этой ранней стадии существования .NET он занимает около трех страниц:
Microsoft (R).NET Global Assembly Cache Utility.Version 1.0.2914.16
Copyright (C)Microsoft Corp,1998-2001,All rights reserved.
The Global Assembly Cache contains the following assemblies:
Accessibili ty.Version=1.0.2411.0,Culture=neutral,
PublicKeyToken-b03f5f7flld50a3a,Custom=null
ADODB,Version=2. 7.0.0.Culture-neutral,
PublicKeyToken-b03f5f7fIld50a3a, Custom=null
CRVsPackageLib.Version=1.0.0.0.Culture-neutral,
PublicKeyToken=4f3430cff154c24c,Custom=nul1
Crystal Deci si ons.Crystal
Reports.Engine.Version=9.1.0.0.Culture-neutral,
PublicKeyToken=4f3430cff154c24c,Custom=nul 1
Для общих сборок контроль версии играет гораздо более важную роль, чем для закрытых сборок, поэтому в списке указаны номера версий каждой сборки. Последнее из Четырех чисел в номере версии определяет номер ежедневного построения, изменение которого считается непринципиальным. Далее следует номер ревизии, изменение которого тоже считается непринципиальным. Изменения следующих двух чисел (дополнительного и основного номеров) принципиальны. Это означает, что если программа запрашивает сборку версии 2.0.0.0, а в GAC находится только версия 2.5.0.0, программа не будет работать, если не внести специальные изменения в конфигурационный файл. С другой стороны, версия 2.0.0.37 считается совместимой с версией 2.0.0.0 и успешно загружается.