Global Assembly Cache etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Global Assembly Cache etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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.

29 Mart 2010 Pazartesi

Windows Server 2008 üzerinde Global Assembly Cache(GAC)'a assembly yüklenmesi

Window Server 2003 üzerinde Global Assembly Cache(GAC)'a ilgili dll dosyasını sürekleyip bıraktığımızda GAC'a assembly yüklenmiş oluyordu.
Window Server 2008 ile aynı işlemi yapmak istediğimizde yükleme başarız oluyor ve aşağıdaki mesajı alıyoruz.
Eğer böyle bir hata ile sizde karşılaşırsanız yapmanız gerekenleri aşağıda belirtmekteyim.
  • Administrator olarak "command prompt" ekranını açıyoruz.
  • GAC'a yükleyeceğimiz dll'in bulunduğu klasörü açıyoruz. (explorer d:\projects\myApp)
  • Global Assembly Cache açıyoruz. (explorer c:\windows\assembly)
Administrator olarak iki klasörü de açtıktan sonra ilgili assembly'i GAC'a yükleyebiliriz.

Not: Window Server 2008 Enterprise service pack 2 üzerinde çalışılmıştır.