118
Глава.3 .Совместно.используемые.сборки.и.сборки.со.строгим.именем
publicKeyToken="32ab4ba45e0a69a1" culture="neutral"/>
oldVersion="1.0.0.0" newVersion="2.0.0.0" />
href="http://www.Wintellect.com/SomeClassLibrary.dll"/>
Конечно, издатель может определять политику только для своих сборок. Кроме
того, показанные здесь элементы — единственные, которые можно задать в конфи-
гурационном файле политики издателя. Например, в конфигурационном файле
политики нельзя задавать элементы
probing
и
publisherPolicy
.
Этот конфигурационный файл заставляет CLR при каждой ссылке на версию
1.0.0.0 сборки
SomeClassLibrary
загружать вместо нее версию 2.0.0.0. Теперь вы, как
издатель, можете создать сборку, содержащую конфигурационный файл политики
издателя. Для создания сборки с политикой издателя вызывается утилита
AL exe
со следующими параметрами:
AL.exe /out:Policy.1.0.SomeClassLibrary.dll
/version:1.0.0.0
/keyfile:MyCompany.snk
/linkresource:SomeClassLibrary.config
Ниже приведены краткие описания параметров командной строки
AL exe
.
Параметр
/out
приказывает
AL exe
создать новый PE-файл с именем
Policy 1 0 SomeClassLibrary dll
, в котором нет ничего, кроме манифеста. Имя этой
сборки имеет очень большое значение. Первая часть имени,
Policy
, сообщает
CLR, что сборка содержит информацию политики издателя. Вторая и третья
части имени,
1 0
, сообщают CLR, что эта политика издателя предназначена для
любой версии сборки
SomeClassLibrary
, у которой старший и младший номера
версии равны 1.0. Политики издателя применяются только к старшему и млад-
шему номерам версии сборки; нельзя создать политику издателя для отдельных
построений или редакций сборки. Четвертая часть имени,
SomeClassLibrary
,
указывает имя сборки, которой соответствует политика издателя. Пятая и по-
следняя часть имени,
dll
, — это просто расширение, данное результирующему
файлу сборки.
Параметр
/version
идентифицирует версию сборки с политикой издателя,
которая не имеет ничего общего с версией самой сборки. Как видите, версиями
119
Дополнительные.административные.средства.(конфигурационные.файлы)
сборок, содержащих политику издателя, тоже можно управлять. Сейчас издате-
лю нужно создать политику, перенаправляющую CLR от версии 1.0.0.0 сборки
SomeClassLibrary
к версии 2.0.0.0, а в будущем может потребоваться политика,
перенаправляющая от версии 1.0.0.0 сборки
SomeClassLibrary
к версии 2.5.0.0.
CLR использует номер версии, заданный этим параметром, чтобы выбрать самую
последнюю версию сборки с политикой издателя.
Параметр
/keyfile
заставляет
AL exe
подписать сборку с политикой издателя
при помощи пары ключей, принадлежащей издателю. Эта пара ключей также
должна совпадать с парой, использованной для подписания всех версий сбор-
ки
SomeClassLibrary
. В конце концов, именно это совпадение позволяет CLR
установить, что сборка
SomeClassLibrary
и файл с политикой издателя для этой
сборки созданы одним издателем.
Параметр
/linkresource
заставляет
AL exe
считать конфигурационный
XML-файл отдельным файлом сборки. При этом в результате компоновки
получается сборка из двух файлов. Оба следует упаковывать и развертывать
на пользовательских компьютерах с новой версией сборки
SomeClassLibrary
.
Между прочим, конфигурационный XML-файл нельзя встраивать в сборку, вы-
зывая
AL exe
с параметром
/embedresource
, и создавать таким образом сборку
из одного файла — CLR требует, чтобы сведения о конфигурации в формате
XML размещались в отдельном файле.
Сборку, скомпонованную с политикой издателя, можно упаковать с файлом
новой версии сборки
SomeClassLibrary dll
и передать пользователям. Сборка с по-
литикой издателя должна устанавливаться в GAC. Саму сборку
SomeClassLibrary
можно установить в GAC, но это не обязательно. Ее можно развернуть в базовом
каталоге приложения или в другом каталоге, заданном в URL-адресе из элемента
codeBase
.
Do'stlaringiz bilan baham: