Visual Studio için extension geliştirmek

Tahmini Okuma Süresi: 18 dakika

Bu yazıda Visual Studio için extension geliştirme konusunu anlatmaya çalışacağım. Visual Studio ile haşır neşir olanlar çeşitli eklentileri kurarak işlerini kolaylaştırmaya çalışıyor. Bunun için de gayet zengin bir seçenek listesi mevcut. Birçok bireysel ve ticari amaçlı yazılmış eklenti mevcut. Siz de bir eklenti yazıp bunu kişisel amaçla  kullanabilir veya topluluk katkısı olarak “market  place” de yayınlayabilirsiniz. Bunun için ön koşul Visual Studio SDK’ sının kurulu olması. Linkte bunu nasıl yapacağınızı anlatan bir yazı var : Visual Studio SDK kurulumu. Bundan sonrasını görsel destekle adım adım anlatmaya çalışacağım.

Çatışmalar başlasın

Visual Studio SDK kurulmuş bir oturumda yeni bir proje açtığınızda karşınıza aşağıdaki gibi bir ekran gelecektir.

VSIX Project

VSIX template’ini projeye anlamlı bir isim vererekten oluşturduktan sonra yapacağımız iş. Projede yer alan fakat ihtiyacımız olmayan dosyaları kaldırmak. Aşağıdaki resimde kırmızı ile işaretlediğim dosyalar projenin info sayfasını temsil ediyor. Kullanmaya gerek olmayan bu dosyaları projeden kaldırmak da herhangi bir sakınca yok.

2016-06-10_16-19-33

 Geriye kalan tek dosya ise bir manifesto dosyası aslen xml olan bu dosyayı edit modunda düzenlemek mümkün. Bu vatandaşın sağladığı fayda  ise uygulama bitip de projenizi “marketplace”e upload ettiğinizde bir takım tanım bilgileri doldurulmuş, stajer işi değil de daha profesyonel bir eklenti imajı vermek adına sunulan fırsattır. Bir eklenti indirmek istediğinizde extension default ikonlu ve empty vsix project isimli ise “bir dakika noluyor ya?” gibisinden bir tepki, indirsem mi acaba diye bir önyargı  oluşabilir. İkonu, preview resmi atanmış, güzelce açıklaması yazılmış, versiyonlanmış, ne idüğü belirli bir eklenti oluşturmak için bu dosyayı güzelce doldurmak gerekiyor.

manifest

Bundan sonraki aşamada projeye yeni bir obje ekleyerek kod geliştirilecek ortam hazırlanmaya başlanır.

costum command

Command nesnesine anlamlı bir isim verdikten ve “Add” butonuna tıkladıktan sonra bir gümbürtü, “o ne” bir sürü referans ekleniyor projeye. Bu noktada insanda bir “Daha biraz önce garibim info html sayfasını sildim gereksiz diye hop bir sürü abur cubur dosya geldi” hissi oluşuyor, bir kaotik ortam oluyor. Ben ilk eklediğimde şaşırmıştım. Resource klasörü altına png resim, ikon, Package dosyası, birkaç tane config dosyası. Uzantısı vcst olan kerâmeti kendinden menkul bir dosya. Neyse deyip incelemeye devam edeyim.

vsct (tahminimce visual studio context’ in kısaltması oluyor) dosyasının içeriği yukarıda görüldüğü üzere yarısı yorum satırı, sağolsun arkadaşlar her bir elementin ne işe yaradığını açıklamış. Auto generated bir dosya olmasından ötürü isimlendirmeler pek güzel değil açıkçası. Mesela guidImages diye bir liste koymuş. Ben belki bir tane resim koyacağım. Bu gibi atarlanmalar yaşamak mümkün. Bu dosya üzerinde eklentinin nereye konumlanacağı , icon’u , butonu gibi özellikler belirleniyor. “Çok da şaapmamak lazım”.

gelelim package dosyasına

En kritik kısmı override edilmiş Initialize methodu bu methodun içerisinde eklemiş olduğunuz command objesinin initialize methodu çağırılıyor.  Onun dışında bir takım attribute tanımları ile package’e ait bilgiler veriliyor.

Asıl gümbürtünün döneceği command cs kodu ise şu şekilde:

 

Contstructor’da command objesi package ile ilişkilendiriliyor ve commandService’e custom command attach ediliyor. Böylelikle eklentiniz visual studio içerisinde göstermek isteğiniz kısımda görünür ve tetiklenebilir bir hal alıyor. Menüde görüntülenen item’a basıldığında ise MenuItemCallback methodu çağırılıyor. Bu kısımda yapmak istediğiniz implementasyonu yaptıktan sonra extension hazır duruma geliyor. Otomatik oluşan kodda ShowMessageBox ile ki- bir üst satırda PoC comment’i eklenmiş yazmış olduğunuz eklentinin çalıştığı ispatlanıyor. Gerisi size kalmış diyor arkadaşlar.

Satırında id kısmında yer alan IDM_VS_MENU_TOOLS ibaresi bu item’ın tools menüsünde görüntüleneceğini belirtiyor. Kodu çalıştırdığımız zaman bir orjinallik daha karşımıza çıkıyor. Visual Studio’nun bir başka instance’ı açılıyor. Bu açılan Visual Studio test ortamı gibi değerlendirilebilir, yazmış olduğunuz extension otomatik olarak eklenmiş ve kullanıma, teste  hazır halde karşınıza çıkıyor. Bu özellik “Experimental Instance” olarak adlandırılmaktadır.

experimental

Tools menüsüne girildiğinde güzide extension’ımızı menüye eklenmiş olarak görüyoruz.

invoke

Ve item’a tıklandığında alınan sonuç:

showmessage

Menüde görüntülenen isime dikkat ederseniz “Invoke NewCommand” şeklinde bu ibare değiştirilmek istenirse vsct dosyasının içerisinde gezintiye çıkmak gerekiyor.

ButtonText etiketine dilediğiniz isimlendirmeyi yazabilirsiniz. Aynı şekilde ikonu değiştirmek için de resource dosyası içinde yer alan png dosyasını değiştirebilirsiniz. Artık extension geliştirmeye hazır hale geldi. İhtiyaca göre gerekli kodun implementasyonu yapıldıktan sonra extension dağıtıma hazır hale gelmektedir.

Son Tahlil

Bu  yazıda adım adım visual studio sdk’sı yardımıyla visual studio menülerine eklenti projesi oluşturmayı anlatmaya çalıştım. Çok özel ihtiyaçlar dışında pek işimiz düşmese de, zira bu işi meslek edinmiş vatandaşlar gayet güzel eklentileri yazıyorlar bizler için, yine de genel kültür olması açısından veya meraktan ilgilenilebilecek bir konu. Umarım faydalı olmuştur.

Leave a Reply

Your email address will not be published. Required fields are marked *