Categories: C#

Bir Shared Assembly Nasıl Oluşturulur ?

Normal şartlarda bir assembly oluşturduğumuz zaman bunlar private’dır. Dolayısıyla biz bu assembly’yi uygulamamizin buludunuğu dizinden baska bir dizine kopyaladığımız zaman sorunlarla karşılaşırız. Uygulamamız assembly’yi bulamadığı için düzgün çalışmayacaktır. Bu durumun dışında , bazen yazdığımız assembly’ler baska programlar tarafından da kullabilir. Bu durumda da bu assembly’yi tüm uygulamalar ortak bir yerden çağırmaları gereklidir. Lazim olan assemblyler için uygulamaların uğrayacağı ilk durak GAC (global assembly cache)dir. Yaptigimiz assembly’yi GAC’in içerisine atarsak sorunumuz hallolacaktir. GAC genellikle windows dizini altındaki assembly klasörüne denir.

Yalnız yapmış oldugumuz dll leri bu klasörün içine copy/paste usulu ile atamayiz ya da bu şekilde şansımızı zorlamamalıyız. Çünkü bu iş için .NET ile birlikte gelen gacutil.exe progamından faydalanmamız gerekmektedir. Ve dikkat etmemiz gereken bir diğer unsur da GAC’a atacağımız assemblylerin birer strong name sahibi olmalarıdır. GAC’da bulunacak assemblylerin farklı strong name lerde olmaları gerekmektedir.

GAC’in içerisinde “Derleme Adı” kolonuna baktığınızda bazı dosyaların isimlerinin aynı oldugunu goreceksiniz. Ama gözden kaçırdığınız birşeyler olabilir. Dikkat ederek bakarsanız bu dosyaların isimleri aynı gibi gozukebilir ancak ya Sürüm’leri ya da Genel Anahtar Simgesinin farklı oldugunu gorursunuz. İsimleri ile Genel Anahtar simgesi de aynı olabilir ama en azından birbirinden ayıran en az bir özellik olmalıdır. Microsoft.Build.Framework e baktığınız zaman göreceksiniz ki bundan 2 Ya da 3 tane var. Hatta Anahtar Simgeleri bile aynı. Ama dikkat edin Sürüm’leri mutlaka farklıdır.

Strong Name oluşturabilmek için .NET ile gelen bir araç daha mevcuttur. Bunun da adı sn.exe dir. Bu araç yardımıyla .snk uzantılı bir anahtar dosyası olusturduktan sonra projemizin AssemblyInfo.cs dosyasının manifest bölümündeki AssemblyKeyFile degerine bu dosyanın path ini gösterdikten sonra “gacutil /i Assemblymiz.dll” komutunu kullanarak assemblymizi GAC’a gömmüş olacaz. Ancak GAC’a gömdüğümüz bu assembly yi kullanabilmemiz için projemize Add Referance dedikten referans olarak Shared Assembly’yi gostermemiz gerekmektedir.

belgesi-2895

Belgeci

Recent Posts

Boşaltım Sistemi

Boşaltım sistemi vücutta homeostazın sağlanmasında çok önemli bir yere sahiptir.Böbrekler, üreterler ve mesaneden oluşan boşaltım…

10 saat ago

Atatürk ve Spor

Büyük Atatürk'ün ölümünü takip eden günlerde, o zamanlar yalnız Avrupa'nın değil, dünyanın en güçlü günlük…

22 saat ago

Atatürk’ün Hayatı

 Mustafa Kemal Atatürk 1881 yılında Selânik'te Kocakasım Mahallesi, Islâhhâne Caddesi'ndeki üç katlı pembe evde doğdu.…

1 gün ago

Özdeşlik

Bir şeyin başka bir şey değil de zorunlu olarak kendisi olması; bir şeyin kendisiyle bir…

2 gün ago

Uyurken Beynimiz Neler Yapıyor ?

Eğer bir insanın başına 'elektroensephalograf' (ezberlemeniz gerekmez!) adını taşıyan bir cihaz bağlarsanız, o insanın yaydığı…

2 gün ago

Stresi Yönetmek

Stres bağışıklık sisteminin ve genel direncin zayıflamasına neden olur. Duygusal dengeyi dengeleyen faktör ise sizin…

3 gün ago