15 Temmuz 2011 Cuma

Sharepoint Projesinde Class Library nasıl kullanılır?

Diyelim ki kapsamlı bir Sharepoint projesi geliştiriyorsunuz. Bu projenizi, katmanlı mimarinin ve yazılım geliştirme mantığının doğası gereği alt projelere böldünüz. Core, Logging, UI vs... Bu durum aslında geliştirdiğimiz her projede rastladığımız bir senaryo. Bu makalede çözmeye çalıştığımız durum da bu senaryonun bir Sharepoint 2010 projemizde başımıza gelmesi durumu. İnceleyelim.

Şimdi diyeceksiniz, "amann ne var canım bunda, class library'i sharepoint projesinde referans olarak göster bitsin gitsin!" Ama öyle olmuyor maalesef, yani olmuyormuş ben de patlayınca öğrendim :) Adım adım Class Library, Sharepoint projesinde nasıl kullanılır görelim:

  1. İlk adım zaten her zaman yaptığımız gibi, Class Library'i geliştirdikten sonra, kullanmak istediğimiz Sharepoint projesinde referans olarak göstermek.
























    Yalnız ne zaman ki bu class library elemanlarını, Sharepoint projesinde kullanıyoruz (ki zaten kullanmak için referans olarak ekledik) build sırasında şu hatayı alırız;

    Assembly generation failed -- Referenced assembly 'CoreLibrary' does not have a strong name

    Eklediğimiz Class Library'i her Sharepoint bileşeni gibi strong name ile işaretlemek gerektiğini söylüyor hata. Bunu da yapmak için, Class Library projemizi sağ tıklayıp Properties ile özelliklerine gidiyoruz. Açılan ekranda sol menüden Signing'i seçtikten sonra sağ menüde Sign the assembly kutucuğunu seçili hale getirip, Choose a strong name key file açılır menüsünde New seçimini yapıyoruz.
















    Yeni açılan ekranda, Key File Name'e istediğimiz bir ismi verdikten sonra, gerek olmadığı için "Protect my key file with a password" seçimini kaldırıyoruz ve Ok'liyouz.















    Bu şekilde class library'imizi strong key name ile işaretledikten sonra projemizi derlediğimizde herhangi bir hata almadığımızı göreceğiz.


  2. Peki bitti mi? Hayır tabii ki! Bu şekilde bırakıp, paketleme işlemi yaparsak paketlenmiş wsp dosyamız içerisinde Class Library dll'imiz olmadığını göreceğiz. Bu durum da deployment sonrasında şu postta yazmış olduğum hatayı beraberinde getirecek. Bu nedenle class library dll'imiz bir şekilde pakete eklememiz gerekiyor.

    Bunun için öncelikle Sharepoint projemiz altındaki Package.package elemanına çift tıklıyoruz.
















    Açılan ekranda bir bakıyoruz ki soldaki sütunda pakete eklenecek elemanlar arasında Class Library'imiz yok! Aaa!











    Nerde bu diye dövünmeye gerek yok. Sol alttaki Advanced butonuna tıklıyoruz. Yeni açılan ekranda Add --> Add Assembly from Project Output işlemini yapıyoruz.




    Yeni açılan ekranda Source Project olarak ilgili Class Library'imizi, Deployment Target olarak da varsayılan olan GlobalAssemblyCache'i seçiyoruz ve Ok'liyoruz.
























    Kaydettikten sonra paketleme işlemi yaptığımızda wsp içerisinde bu sefer Class Library dll'imizin olduğunu görüyoruz. Bu wsp'yi de şu postta anlattığım üzere sunucuya deploy ettikten sonra Class Library'imizi kullanan bir webpart sahibi olduğumuzu görüyoruz.
Görüldüğü üzere Sharepoint 2010 projelerimizde Class Library kullanmak bir miktar çetrefilli. Ancak bu işlemi sadece bir kez yapıyorsunuz ve inanın SP 2007'den sonra bu çetrefil sayılmaz ;)

Kolay gelsin,

3 yorum:

Adsız dedi ki...

deployment target olarak ne seçmemiz gerekiyor acaba?

Adsız dedi ki...

deployment target olarak ne seçmemiz gerekiyor acaba?

Onur Yavuz dedi ki...

Screenshot'ta gözükmemiş :) Default olan GlobalAssemblyCache seçilecek Deployment Target olarak.