Создаём новую сборку, в которой предполагается использовать наше детище. Затем добавляем ссылку на сборку. Не всё так просто. Сначала надо отыскать соответствующую .dll’ку. Наличие ключа в манифесте сборки приводит к тому, что сборка (в отличие от частных сборок) не будет копироваться в каталог запускающей сборки. Вместо этого исполняющая среда будет обращаться в GAC. Дальше – проще.
Объявленные в сборке классы оказываются доступны запускающей сборке. Набрали аж 3 сборки общего пользования. Дело не хитрое…
using System;
using SharedAssembly00;
using SharedAssembly01;
using SharedAssembly02;
namespace AssemblyStarter01
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class startClass
{
/// <summary>
/// The main entry Point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
try
{
SharedAssembly00.Class1 c001 = new SharedAssembly00.Class1(); c001.f0();
SharedAssembly01.Class1 c011 = new SharedAssembly01.Class1(); c011.f0();
SharedAssembly02.Class1 c021 = new SharedAssembly02.Class1(); c021.f0();
}
catch(TypeLoadException e)
{
Console.WriteLine(“We are the problem: “ + e.Message);
}
}
}
}
Итак, подключили общедоступную сборку. Она не копируется, а остаётся в GAC. При создании клиента были выполнены определённые телодвижения, в результате которых клиент сохраняет информацию о свойствах располагаемых в GAC компонентах. Свойства этих компонент можно посмотреть после подсоединения данного элемента из GAC к References клиента. В частности, там есть свойство Copy local (по умолчанию установленное в false). Это означает, что соответствующая компонента из GAC клиентом не копируется. Общую сборку можно превратить в частную сборку, если это свойство установить в true.