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 , 2280 belge yazmış

Cevap Gönderin