Düsünkü bir .NET bileseni gelistirdiniz, ve bu bileseni bir çok müsteriniz kendi uygulamalarinda kullaniyor. Olusturdugunuz bu bileseninde birden fazla uygulamada ortak kullanilmasini hedefleyerek GAC(Global Assembly Cache)'e yüklediniz. Bu bilesenin ilerleyen bir zamanda yeni versiyonunu gelistridiginizde ne yaparsiniz? Iki secenek var: 1 - Bilesenle birlikte bu bilesenleri kullanan bütün uygulamalari da yeniden paketleyrek sifirdan kurulum yapmak 2 - Sadece üzerinde degisiklik yaptiginiz bilesenin yeni versiyonunu dagitarak uygulamalarin artik bu yeni bileseni kullanmalarini saglamak. Herhalde herkes 2. seçenegi seçecektir.
Peki bu islemi nasil yapabiliriz? Çözüm çok basit, .NET in Publisher Policy denilen Assembly lerini kullanacagiz. Publisher Policy isimli assembly GAC'a yüklenen özel assembly olup normal .net assemblylerinin yönlendirilmesini saglar; Söyle ki Publisher policy sayesiden eski versiyonlu assembly'ye uygulamalardan yapilan referanslar yeni versiyonlu assembly' e yönlendirilir.
Isterseniz adim adim bu islemi nasil yapacagimizi görelim : Öncelikle Asagidaki gibi publisher policy file olusturulur ki bu dosya XML tabanli bir dosyadir.
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="5dsa2e0X54g"
culture="en-us" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Ardindan AL yani Assembly Linker araci kullanilarak Publisher Policy Assembly si olusturulur. Bunun için sn.exe araciyla olusturulmus bir strong name dosyasina da ihtiyacimiz olacak.. Asagidaki formatta komut çalistirilir.
al /link:Publisher Policy File /out:Publisher Policy Assembly File /keyfile:Strong Name Dosyasi
Örnek Kullanim
al /link:publisherfile.config /out:policy.1.0.AssemblyIsmi.dll /keyfile:sn.snk
Burada dikkat edilmesi gereken nokte out parametresinde verilen Publisher Policy Assembly isminin formatidir. Bu format mutlaka asagidaki gibi olmalidir.
policy.VersiyonMajorNo.VersionMinorNo.AssemblyIsmi.dll
Son adim olarak ise olusan Publisher Policy Assembly gacutil yardimiyla GAC'a yüklenir :
gacutil /i policy.1.0.AssemblyIsmi.dll
Posted
Nov 04 2004, 08:53 PM
by
sefer