Oluşturduğumuz assemblyleri Global Assembly Cache'e (GAC) yüklemek için gerek
gacutil konsol uygulamasını gerekse de Control Panel\Administrative Tools altındaki
Microsoft .NET Framework 2.0 Configuration aracını kullanarak manuel yükleme işlemini gerçekleştirebiliyoruz.
Peki bu işlemi yardımcı araçlar ile manuel olarak değil de bazı ihtiyaçlardan dolayı :) programatik olarak gerçekleştirmek isteyebilirsiniz. Reflector ile biraz .NET'i kurcaladığımda -
eh! .net framework kendi içinde böyle bir desteği mutlaka sağlıyordur mantığından yola çıkarak - aşağıdaki resimden de görebileceğiniz
GacUtil isimli bir sınıf ile karşılaştım.

Aşağıdaki basit bir reflection işlemi ile kendi assembly'imizi GAC'a yükleyebiliriz.
1: namespace BTAkademi.TestCodes
2: { 3: class Program
4: { 5: static void Main(string[] args)
6: { 7: //GAC'dan System.Web dll'i yükleniyor
8: Assembly asm = Assembly.Load(@"System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
9:
10: // Type bilgisi alınıyor
11: Type t = asm.GetType("System.Web.Configuration.GacUtil"); 12: // Metodu invoke edebilmek için GacUtil türünden nesne oluşturuluyor
13: object o = Activator.CreateInstance(t);
14:
15: //Metod bilgisi alınıyor
16: MethodInfo mi = o.GetType().GetMethod("GacInstall"); 17:
18: //metod çağrılıyor
19: mi.Invoke(o, new object[] { "C:\\gacTest.dll" }); 20:
21: }
22: }
23: }
Not : GAC'a yüklenmek istenen assembly'nin public key token'a sahip olması gerekmektedir.
13/7/2008 tarihli düzenleme :
try
{
System.EnterpriseServices.Internal.Publish gac = new System.EnterpriseServices.Internal.Publish();
gac.GacInstall(yuklenecekassemblyadi);
}
catch (System.Security.SecurityException se)
{
}
şeklinde de yüklenebiliniyormuş :))) Eh azmetmek gibisi yok.