15 Haziran 2010 Salı

Global Assembly Cache (GAC)'a assembly yüklenmesi

Daha önce Windows Server 2008 üzerinde Global Assembly Cache(GAC)'a assembly yüklenmesi başlıklı yazımda geliştirdiğimiz projenin dllini gac'a atmanın bi yolunu göstermiştim.
Çoğu kez bu yöntemle yükleme yaparken geçenlerde bu yöntemle dahi yapsam "access denied" hatası alıyor ve bir türlü yükleme yapamıyordum. Sistemde gacutil de yüklü olmayınca kendi çözüm yolumu kendi gacutilimi geliştirerek buldum :)

using System;
using System.EnterpriseServices.Internal;
using System.IO;
namespace MyGacutil
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Lütfen seçiminizi yapınız: Gac'a Yükleme(i), Gac'tan Silme(u)");
string secim = Console.ReadLine();
switch (secim)
{
case "i":
case "u":
GacInstallOrRemove(secim);
break;

default:
Console.WriteLine("Yalnızca i veya u seçilmelidir.");
break;
}

Console.ReadLine();
}

private static void GacInstallOrRemove(string secim)
{
Console.WriteLine("Gac'a yüklenecek dll'in olduğu adresi \"d:\\abc.dll\" şeklinde giriniz.");
string assemblyPath = Console.ReadLine();
bool assemblyExists = string.IsNullOrEmpty(assemblyPath) ? false : new FileInfo(assemblyPath).Exists;
if (assemblyExists)
{
if (secim == "i")
{
Console.WriteLine("Yükleme Başladı");
new Publish().GacInstall(assemblyPath);
Console.WriteLine("Yükleme Bitti");
}
else if (secim == "u")
{
Console.WriteLine("Silme Başladı");
new Publish().GacRemove(assemblyPath);
Console.WriteLine("Silme Bitti");
}
}
else
{
Console.WriteLine("Dll bulunamadı");
}
}
}
}


Yukarıdaki kodda da göreceğiniz üzere
System.EnterpriseServices.Internal.Publish
sınıfı ile Gac'a assembly yükleme ve silme işlemlerini yapabilmekteyiz.

Hiç yorum yok: