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

Bakû Kongresi ve Doğu’da Bolşevizm

Asya'da kitle halindeki bu ayaklanmanın sebepleri Türkiye'de bulunmaktadır ve bu akım mütarekeden sonra başlamıştır. Bunu…

3 saat ago

Kervanların Ulaştırdıkları

1920 yılının Ağustos ve Eylül aylarında Bakû'da toplanan ikinci kongrede Lenin, Doğu için, en acil…

15 saat ago

İstanbul’a Nasıl Girildi ?

Dukas, şehre girişi, Ulubatlı Hasan efsanesi temelinde değil de, açık bırakılmış olan Kerkoporta Kapısı'ndan gerçekleştiğini,…

1 gün ago

Tek Mesele

Hiçbir şey, bir yığın hatırayı sıraya koymak için gereken ilk sessizlik anları kadar değerli olamaz.…

2 gün ago

The role of technology in reshaping the gambling landscape

The role of technology in reshaping the gambling landscape The Evolution of Online Gambling The…

2 gün ago

Heck Kenetlenme Reaksiyonu

2.1. Heck Coupling 2.1.1. Tanım 2.1.2. Katalitik Döngü                  Şekil 2.1.1. Klasik Heck döngüsünün mekanizması.…

2 gün ago