Ü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.

Şu Yazıları da Sevebilirsiniz

Leave a Comment

* Bu formu kullanarak, verilerinizin bu web sitesi tarafından saklanması ve kullanılmasını kabul ediyorsunuz.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul Et Daha Fazla Bilgi