Книга: C# для профессионалов. Том II

Строгие имена и глобальный кэш

Строгие имена и глобальный кэш

Устойчивое (строгое) имя делает сборку глобально уникальной. Оно состоит из идентификатора сборки, открытого ключа и цифровой подписи. Так как сборка, созданная с одним открытым ключом имеет другое имя, чем сборка, созданная с другим открытым ключом, то уникальность имени сборки гарантирована. Нельзя изменить сборку с устойчивым именем, не имея доступа к открытому ключу, использованному при ее создании, следовательно, устойчивое имя гарантирует, что никто не сможет создать другие версии этой сборки. Устойчивые имена предоставляют также жесткий контроль целостности. Создание устойчивого имени является двухшаговым процессом. Сначала необходимо создать или иметь ключевую пару. Создание ключевой пары можно выполнить в командной строке с помощью команды:

sn -k <имя файла ключа>

Например, чтобы создать файл ключа examplekey.key, надо ввести:

sn -k examplekey.key

После создания файл ключа используется для присвоения устойчивого имени сборке двумя способами. Из командной строки можно использовать утилиту alink следующим образом:

al /keyfile: <имя файла ключа> <имя сборки>

Чтобы задать для FirstLibrary.dll строгое имя, можно выполнить:

al /keyfile:examplekey.key FiretLibrary.dll

или в VS.NET изменить атрибут [assembly: AssemblyKeyFile("")] в файле AssemblyInfo.cs. Замените просто пустую строку на строку, представляющую имя файла ключа. Сборку FirstLibrary.dll можно затем ассоциировать с ключом, меняя атрибут AssemblyKeyFile на [assembly: AssemblyKeyFile("examplekey.key")]. Какой бы метод ни использовался, конечный результат получается тот же самый. CLR будет устанавливать ключ в файл с помощью Crypto Service Provider (CSP). Работа CSP не представлена в данном приложении.

Все сборки в глобальном кэше сборок должны иметь устойчивое имя. Глобальный кэш сборок применяется для хранения сборок, специально созданных для общего использования несколькими приложениями на машине. Существует несколько способов размещения сборки в глобальном кэше сборок. Можно использовать программу установки, созданную для работы с глобальным кэшем сборок, .NET Framework SDK предоставляет программу установки с именем gacutil.exe. Чтобы поместить FirstLibrary.dll в глобальный кэш сборок, воспользуйтесь командой:

gacutil -i FirstLibrary.dll

Можно использовать Проводник Windows для перетаскивания сборок в кэш. Отметим, что необходимо иметь привилегии администратора на машине, чтобы устанавливать сборки в глобальный кэш сборок, независимо от используемого подхода.

Оглавление книги


Генерация: 2.816. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз