Чтобы создать сборку со строгим именем, смотри предыдущий пост. Теперь перейдём к GAC. Global Assembly Cache (глобальный кэш сборок) - место, где располагаются совместно используемые сборки. Его можно найти по адресу: C:\Windows\assembly. Но этот кэш только для сборок .NET Framework 2.0 - 3.5. Для .NET Framework 4.0 GAC - C:\Windows\Microsoft.NET\assembly. Это изменение произошло в основном из-за того, чтобы приложения, написанные под CLR v2.0 не видели сборки в кэше, написанные для CLR v4.0.
Т.е GAC способна хранить сборки разных версий, то если они для одного и того же CLR (чтобы не "ломать" старые приложения).
Т.е GAC способна хранить сборки разных версий, то если они для одного и того же CLR (чтобы не "ломать" старые приложения).
Каталог обладает особой структурой. Имена вложенных каталогов генерируются по особому алгоритму. Ни в коем случае не стоит копировать файлы сборок в GAC вручную, вместо этого необходимо пользоваться, например, GACUtil.exe или Windows Installer (MSI). Сборку с нестрогим именем в GAC поместить нельзя!
По сути, внутренняя функция CLR принимает имя сборки, версию, региональные стандарты и маркер открытого ключа, возвращая путь к подкаталогу, в котором хранятся файлы указанной сборки.
И так, у нас есть сборка со строгим именем.
Для установки её в Global Assembly Cach необходимо в Visual Studio Command Prompt ввести команду:
gacutil –i C:\assem\Test\Test\bin\Debug\Test.dll
Если всё правильно сделали, то получим сообщение об успешности операции. Теперь нашу сборку можно найти по адресу (если сборка для CLR v4.0):
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Test\[версияCLR_рег.стандарт_маркер]\Test.dll
При установке сборки в GAC система рассчитывает хеш содержимого файла с декларацией и сравнивает полученное значение с цифровой подписью RSA, встроенной в PE-файл (после извлечения подписи с помощью открытого ключа). Идентичность значений означает, что содержимое файла не было модифицировано, а также что открытый ключ подписи соответствует закрытому ключу издателя.
Итерация свойственна человеку, рекурсия божественна (L. Peter Deutsch).
Итерация свойственна человеку, рекурсия божественна (L. Peter Deutsch).
Спасибо, замечательно!
ОтветитьУдалитьПросто пиздец ахуенно, я кончил радугой!
ОтветитьУдалить