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

Basic Grammar-Questions

There are two kinds of questions: yes or no questions and wh- questions. You ask…

12 saat ago

Basic Grammar-Positive And Negative Sentences

A positive sentence tells you that something is so. A sentence that tells you something…

24 saat ago

Basic Grammar-The Imperative

Use the base form of a verb to give commands or make direct requests. This…

1 gün ago

Basic Grammar-Sentences

A sentence is a group of words that expresses a complete thought. A sentence must…

2 gün ago

Basic Grammar-Interjections

An interjection is a word that expresses a sudden, strong feeling such as surprise, pain,…

2 gün ago

Basic Grammar-Conjunctions

A conjunction is a linking word such as and, or, but. Conjunctions are used to…

3 gün ago