§ дружественного текстового имени и “культурной” информации,
§ идентификатора версии,
§ пары Открытый/Закрытый ключ,
§ цифровой подписи
Делаем общую сборку
1. Сначала – ЧАСТНАЯ сборка.
using System;
namespace SharedAssembly00
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class Class1
{
public Class1()
{
}
public void f0()
{
Console.WriteLine(“This is SharedAssembly00.f0()”);
}
}
}
2. Делаем пару Открытый/Закрытый ключ
Для чего в Visual Studio .NET 2003 Command Prompt командной строкой вызываем утилиту-генератор ключей
D:\...>sn –k theKey.cnk
3. В файле сборки AssemblyInfo.cs (таковой имеется в каждом проекте, ранее не использовался) дописываем в качестве значения ранее пустого атрибута AssemblyKeyFile полный путь к созданному утилитой sn файлу (в одну строчку):
4. Компилируем сборку и наблюдаем манифест сборки, в котором появляется открытый ключ. Открытый ключ размещается в манифесте сборки. Закрытый ключ хранится в модуле сборки, содержащим манифест, однако в манифест не включается. Этот ключ используется для создания цифровой подписи, которая помещается в сборку. Во время выполнения сборки среда выполнения проверяет соответствие маркера открытого ключа сборки, запрашиваемой клиентом (приложением, запускающим эту сборку) с маркером открытого ключа самой сборки общего пользования из GAC. Такая проверка гарантирует, что клиент получает именно ту сборку, которую он заказывал.
Клиентское приложение
Сборка общего пользования, установленная в GAC
В манифесте клиента имеется ссылка на внешнюю сборку общего пользования. Маркер открытого ключа этой сборки отмечен тегом :
::::::::::
.assembly extern SharedAssembly00
{
.publickeytoken =
(90 8E D8 5E 3E 37 72 08 ) // ...^>7r.
.ver 1:0:1790:37888
}
::::::::::
Манифест сборки общего пользования в GAC содержит такое же значение ключа:
908ED85E3E377208
Его можно увидеть при исследовании содержимого GAC (свойства элемента)
А закрытый ключ сборки общего пользования совместно с открытым ключом используется для создания цифровой подписи сборки и хранится вместе с подписью в самой сборке.
5. Размещаем общедоступную сборку в GAC. Для чего либо используем утилиту gacutil.exe с ключом \i и именем сборки с полным путём в качестве второго параметра. Либо просто перетаскиваем мышкой файл сборки в каталог, содержащий GAC. В случае успеха наблюдаем состояние GAC.