Visual Studio Paketleriniz Açılışta Yüklensin

Üzerinde çalıştığım Visual Studio Paketlerinden birisinde çalışma zamanında otomatik olarak oluşturulan menülerim var. Bu sayede daha az uğraşarak Visual Studio içerisine menü ekleyebilmek, aynı zamanda da daha esnek bir mimariye sahip oluyordum. Fakat getirilerinin yanında bu mimari problemler getiriyor; menülerim kendi paketim içerisindeki kodlarla oluşturulduğu için paketimin Visual Studio tarafında başlangıçta yüklenmek zorunda. Mevcut yapısında paketim ancak uzantısını verdiğim dosya türümün kullanıcı tarafından açılması ve editörümün oluşturulmasıyla veya dinamik olmayan menülerimden birisini tıklamasıyla çalışıyordu. Bu problemi nasıl aşabileceğimi düşünürken Windows Kayıt defterine bir göz atmaya karar verdim; bu sayede problemimi çözmek için bir ipucu bulurum diye umdum. Öyle de oldu; kayıt defteri içerisinde HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0 (tabi bu Visual Studio 2005 için geçerli; eğer 2003 kullanıyorsanız bakmanız gereken yer HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1 olacaktır)altında AutoLoadPackages adıyla bir kayıt buldum. Ama bu seferde başka bir problem vardı karşımda; bu kayıt altındakiler GUID’lerdi sadece, tek başlarına bir anlam ifade etmiyordu :\ İçlerinde birini seçerek internette araştırma yapmaya karar verdim. Neyse, detaylarla sizi çok fazla sıkmak istemem, araştırmam sonunda gördüm ki bu GUID’ler özel durumları ifade etmek için kullanılıyor ve sadece başlangıç’ı ifade eden bir GUID yok. Bunun yerine kullanılması gereken kayıt UICONTEXT_NoSolution için tanımlanmış olan GUID {0xadfc4e64, 0x0397, 0x11d1, {0x9f, 0x4e, 0x00, 0xa0, 0xc9, 0x11, 0x00, 0x4f}}, başka bir deyişle {ADFC4E64-0397-11D1-9F4E-00A0C911004F}. Bu girdi Visual Studio hiç bir proje yüklü olmadığı durumu ifade ediyor; ama siz herhangi bir dosyayı veya projeyi seçip açmış bile olsanız Visual Studio ilk olarak bu durumla açılır ve ardından projeyi yükler.

Tek yapmanız gereken yukarıda belirttiğim adres altındaki GUID içerisine DWord olarak bir kendi paketinizin GUIDsini eklemek.

Unutmadan ekleyim, Visual Studio 2003/2005 SDK’sı ile birlikte gelen vsshell.h dosyası içerisinde başka kullanışlı GUID’ler de bulabilirsiniz.

Umarım bu bilgi işinize yarar.

GÜNCELLEME 19.04.2006 :
Tamamen farklı bir konuyu araştırırken yukarıda bahsettiğim probleme çok daha kolay bir çözüm buldum. Tek yapmanız gereken aşağıdaki Attribute’ü paketinizin başına koymak :

ProvideAutoLoad("ADFC4E64-0397-11D1-9F4E-00A0C911004F")]

ya da daha basit bir şekild :

  ProvideAutoLoad(UIContextGuids.NoSolution)]

    UIContextGuids’i daha yakından inceleyecek olursanız işinize yarayacak başka GUID’ler de bulabilirsiniz.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir