Öncelikle eğer kurulu değilse visual studio sdk yı makinenize kurmanız gerekiyor
Kurduktan sonra other Project types kısmına template geliyor.
Biz visual studio package seçerek projemizi oluşturuyoruz.Projemizin adını seçtikten sonra package wizard ekranları karşımıza çıkıyor.
Hangi dilde yazacağımızı seçiyoruz.
Bu ekranda ise biz sağ tuş menüsü yapacağımız için menucommand seçmemiz yeterli
Oluşacak menü commandımızın idsi ve adını belirliyoruz
Unittest projelerini biz create etmeyeceğimiz icin burada seçim yapmıyoruz bunun yerine oluşacak projede experimental mode dediğimiz mode ile testlerimizi yapıyor olacağız
Şekildeki gibi wizard bitiminde projemiz oluşuyor.
Yazdığımız projemizi experimental mode almak icin,package csproj properties kısmından debuga gelerek,start actionı start external program olarak visual studiomuzun versiyonun deven.exe sini seçiyoruz.
Start optiona ise /rootsuffix Exp komutunu yazıyoruz.(Bu komut mevcut visual studio ayarlarımıza dokunmadan bağımsız bir visual studio profile oluşturulmasına olanak sağlıyor)
Oluşan projemizde özellikle iki dosya çok önemli
.vsct dosyası(Visual Studio Command File) burada yapacağımız custom commandımızın nerede gözükeceği,ilk açılırken görünüp görünmeyeceği gibi ayarlar mevcut.Biz context menu(sağ tuş J)yapmak istediğimiz için öncelikle custom commandımızın group ayarında id kısmına IDM_VS_CTXT_ITEMNODE keywordünü yazıyoruz bu visual studioya özel bir keyword,customcommandımızın nerede gözükeceğine iddeki keywordlere göre karar veriliyor.Bu keylerin daha fazlasını msdnden bakabilrisiniz ama bunlar specific keywordler oldugu icin geçerli olanı yazmanız gerekiyor
Diğer dosya ise Package.cs dosyası
https://msdn.microsoft.com/en-us/library/cc826118.aspx
(Guids and IDs of Visual Studio Menus)
https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.vsmenus_fields%28v=vs.90%29.aspx(VS menu fields)
Bu ayarımızı yaptıktan sonra ,artık experimental instance ayarlarımızda yapıldıgı icin kodumuzu start new instance diyerek başlatmış olduk.
Açılan visual studio instancemızdan bir tane solution açalım ve örnek bir classa sağ tıkladıgımızda yeni yarattıgımız custom commandımızı görebiliyoruz.
Peki bu yazdımız customcommandımıza bir işlev kazandaralım.Bu tuşa bastıgımızda bir form açalım ve bu formdan tıklanan classla ilgili bilgiler alıp bunu kaydedelim.
Bu işlemleri yapacağımız yer ise Package.cs dosyası,bizim örneğimizde
VSBilgehanPackagePackage.cs classı,bu classa çift tıkladıgımızda ise wizarddan gelen otomatik oluşan kodları görmekteyiz.Commandımızıa ait event ise wizardla oluşan (isterseniz değiştirebilirsiniz) MenuItemCallback Metodu
Senaryomuza uygun olarak ben bir tane Windows form oluşturarak bu metoda bağlıyorum,öncelikle projemizin içine bir tane Windows form oluşturuyorum
…Package.cs sınıfımıza geçip MenuItemCallback eventinde wizardın kodunu commentleyerek formu açan kodumuzu yazalım.
Projemizi tekrar start new instance çalıştırıp açılan visual studio instance açtıgımız projemizde tekrar custom commandımıza tıkladıgımızda artık tanımladıgımız formun açıldıgını görüyoruz
Extension yazmak ile daha detaylı bilgi için lütfen bu makalenin devam yazısını okuyunuz…