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

Gıdalarda Boya Maddeleri Aranması

  01. Et ve Et Ürünlerinde Boya Maddeleri Aranması    01.01. Organik Boya Aranması   …

10 saat ago

Fosfataz Deneyi

      01. Yöntemin Prensibi    Yöntem , sütün iyi bir şekilde pastörize edilip…

22 saat ago

1838 Osmanlı-İngiliz Serbest Tic. Anlaşması

"Islahat hareketlerinin babası ve 19.yüzyıl Osmanlı siyaset adamlarının fikir ustası" (1) olarak tanınan Hariciye Nazırı…

1 gün ago

Düşünce Akımı

DUSUNCE AKIMLARI Ortaya atilan her yeni "dusunce akimi"nin yandaslari, ileri surdukleri goruslerin bir "yeni dunya…

2 gün ago

DOMATESLERDE 4-CPA (4-klorofenoksiasetik asit) KALINTI MİKTARI TAYİNİ

      01. Yöntemin Prensibi Domateslerde 4-CPA kalıntı analizi yönteminin temel prensibi örneğe uygulanan…

2 gün ago

Etanol Tayini

  01. Meyve Sularında Etanol Tayini   01.01. Yöntemin Prensibi    Örnekten damıtılarak ayrılan etanolün,…

3 gün ago