XML komut tablosu (.vsct) dosyalarını tasarlama
XML komut tablosu (.vsct) dosyası, VSPackage için komut öğelerinin düzenini ve görünümünü açıklar. Komut öğeleri düğmeler, birleşik giriş kutuları, menüler, araç çubukları ve komut öğesi gruplarını içerir. Bu makalede XML komut tablosu dosyaları, komut öğelerini ve menülerini nasıl etkiledikleri ve bunların nasıl oluşturulacağı açıklanmaktadır.
Komutlar, menüler, gruplar ve .vsct dosyası
.vsct dosyaları komutlar, menüler ve komut grupları etrafında düzenlenir. .vsct dosyasındaki XML etiketleri, komut düğmeleri, komut yerleşimi ve bit eşlemler gibi diğer ilişkili öğelerle birlikte bu öğelerin her birini temsil eder.
Visual Studio paket şablonunu çalıştırarak yeni bir VSPackage oluşturduğunuzda, şablon seçimlerinize bağlı olarak menü komutu, araç penceresi veya özel düzenleyici için gerekli öğeleri içeren bir .vsct dosyası oluşturur. Bu .vsct dosyası daha sonra belirli bir VSPackage gereksinimlerini karşılayacak şekilde değiştirilebilir. .vsct dosyasını değiştirme örnekleri için bkz. Menüleri ve komutları genişletme.
Yeni, boş bir .vsct dosyası oluşturmak için bkz. Nasıl yapılır: .vsct dosyası oluşturma. Oluşturulduktan sonra, komut öğesi düzenini açıklamak için dosyaya XML öğeleri, öznitelikler ve değerler eklersiniz. Ayrıntılı xml şeması için bkz . VSCT XML şema başvurusu.
.ctc ve .vsct dosyaları arasındaki farklar
Bir .vsct dosyasındaki XML etiketlerinin arkasındaki anlam, kullanım dışı bırakılmış .ctc dosya biçimindeki etiketlerle aynı olsa da, uygulamaları biraz farklıdır:
Yeni <extern> etiketi, Visual Studio araç çubuğu için bu dosyalar gibi derlenecek diğer .h dosyalarına başvurabileceğiniz yerdir.
.vsct dosyaları .ctc dosyaları gibi /include deyimini desteklese de, yeni <bir içeri aktarma> öğesi de içerir. Aradaki fark, /include tüm bilgileri getirirken <içeri aktarma> yalnızca adları getirir.
.ctc dosyaları, önişlemci yönergelerinizi tanımladığınız bir üst bilgi dosyası gerektirir, ancak .vsct dosyaları için gerekli değildir. Bunun yerine, yönergelerinizi .vsct dosyasının <en altında bulunan Sembol öğelerinde bulunan sembol> tablosuna yerleştirin.
.vsct dosyaları, notlar ve hatta resimler gibi istediğiniz bilgileri eklemenizi sağlayan bir <Ek Açıklama> etiketine sahiptir.
Değerler, öğede öznitelik olarak depolanır.
Komut bayrakları tek tek veya yığılmış olarak depolanabilir. Ancak IntelliSense, yığılmış komut bayraklarında çalışmaz. Komut bayrakları hakkında daha fazla bilgi için bkz . CommandFlag öğesi.
Bölme açılan menüleri, birleşik girişler vb. gibi birden çok tür belirtebilirsiniz.
GUID'ler doğrulanmaz.
Her ui öğesi, kendisiyle birlikte görüntülenen metni temsil eden bir dizeye sahiptir.
Üst öğe isteğe bağlıdır. Atlanırsa, Grup Bilinmiyor değeri kullanılır.
Simge bağımsız değişkeni isteğe bağlıdır.
Bit eşlem bölümü: Bu bölüm bir .ctc dosyasındakiyle aynıdır, ancak artık derleme zamanında vsct.exe derleyicisi tarafından çekilecek Href aracılığıyla bir dosya adı belirtebilirsiniz.
ResID: Eski bit eşlem kaynak kimliği kullanılabilir ve yine de .ctc dosyalarındakiyle aynı şekilde çalışır.
HRef: Bit eşlem kaynağı için bir dosya adı belirtmenize olanak tanıyan yeni bir yöntem. Kullanılan bölümünü atlayabileceğiniz için tümünün kullanıldığını varsayar. Derleyici önce dosya için yerel kaynakları, ardından tüm ağ paylaşımlarında ve /I anahtarı tarafından tanımlanan tüm kaynaklarda arama yapacaktır.
Anahtar bağlama: Artık bir öykünücü belirtmeniz gerekmez. Bir tane belirtirseniz, derleyici düzenleyici ile öykünücünün aynı olduğunu varsayar.
Keychord: Keychord bırakıldı. Yeni biçim Key1,Mod1,Key2,Mod2 şeklindedir. Karakter, onaltılık veya VK sabiti belirtebilirsiniz.
Yeni derleyici vsct.exe hem .ctc hem de .vsct dosyalarını derler. Ancak eski ctc.exe derleyicisi .vsct dosyalarını tanımaz veya derlemez.
Var olan bir .cto dosyasını .vsct dosyasına dönüştürmek için vsct.exe derleyicisini kullanabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: Var olan bir .cto dosyasından .vsct dosyası oluşturma.
.vsct dosya öğeleri
Komut tablosunda aşağıdaki hiyerarşi ve öğeler bulunur:
CommandTable öğesi: VSPackage ile ilişkili tüm komutları, menü gruplarını ve menüleri temsil eder.
Extern öğesi: .vsct dosyasıyla birleştirmek istediğiniz tüm dış .h dosyalarına başvurur.
Include öğesi: .vsct dosyanızla birlikte derlemek istediğiniz tüm ek üst bilgi (.h) dosyalarına başvurur. .vsct dosyası, IDE'nin veya başka bir VSPackage'ın sağladığı komutları, menü gruplarını ve menüleri tanımlayan sabitleri içeren .h dosyalarını içerebilir.
Commands öğesi: Yürütülebilecek tek tek tüm komutları temsil eder. Her komut aşağıdaki dört alt öğeye sahiptir:
Menus öğesi: VSPackage'daki tüm menüleri ve araç çubuklarını temsil eder. Menüler, komut gruplarının kapsayıcılarıdır.
Groups öğesi: VSPackage'daki tüm grupları temsil eder. Gruplar tek tek komut koleksiyonlarıdır.
Düğmeler öğesi: VSPackage'daki tüm komut düğmelerini ve menü öğelerini temsil eder. Düğmeler, komutlarla ilişkilendirilebilen görsel denetimlerdir.
Bit eşlemler öğesi: VSPackage'daki tüm düğmelerin tüm bit eşlemlerini temsil eder. Bit eşlemler, bağlama bağlı olarak komut düğmelerinin yanında veya üzerinde görüntülenen resimlerdir.
CommandPlacements öğesi: TEK tek komutların VSPackage menülerinde yer alması gereken ek konumları gösterir.
VisibilityConstraints öğesi: Bir komutun her zaman mı yoksa yalnızca belirli bir iletişim kutusu veya pencerenin görüntülendiği gibi belirli bağlamlarda mı görüntüleneceğini belirtir. Bu öğe için bir değere sahip menüler ve komutlar yalnızca belirtilen bağlam etkin olduğunda görüntülenir. Varsayılan davranış, komutu her zaman görüntülemektir.
KeyBindings öğesi: Komutlar için tüm anahtar bağlamalarını belirtir. Diğer bir ifadeyle, komutu yürütmek için basılması gereken bir veya daha fazla tuş bileşimi (örneğin, Ctrl+S).
UsedCommands öğesi: Visual Studio ortamına, belirtilen komut başka bir kod tarafından uygulansa da geçerli VSPackage etkin olduğunda komut uygulamasını sağladığını bildirir.
Symbols öğesi: Paketteki tüm komutlarınızın sembol adlarını ve GUID kimliklerini içerir.
.vsct dosya tasarımı yönergeleri
Bir .vsct dosyasını başarıyla tasarlamak için bu yönergeleri izleyin.
Komutlar yalnızca gruplara, gruplar yalnızca menülere ve menüler ise yalnızca gruplara yerleştirilebilir. IDE'de yalnızca menüler görüntülenir, gruplar ve komutlar görüntülenmez.
Alt menüler doğrudan bir menüye atanamaz, ancak sırayla bir menüye atanan bir gruba atanmalıdır.
Komutlar, alt menüler ve gruplar, tanımlama yönergesinin üst alanı kullanılarak bir üst grup veya menüye atanabilir.
Komut tablosunu yalnızca yönergelerdeki üst alanlar aracılığıyla düzenlemenin önemli bir sınırlaması vardır. Nesneleri tanımlayan yönergeler yalnızca bir üst bağımsız değişken alabilir.
Komutların, grupların veya alt menülerin yeniden kullanılması, nesnenin kendi
GUID:ID
çiftiyle yeni bir örneğini oluşturmak için yeni bir yönergenin kullanılmasını gerektirir.Her
GUID:ID
çift benzersiz olmalıdır. Örneğin, bir menüye, araç çubuğuna veya bağlam menüsüne yerleştirilmiş bir komutu yeniden kullanım arabirimi tarafından IOleCommandTarget işlenir.Komutlar ve alt menüler de birden çok gruba atanabilir ve komutlar öğesi kullanılarak gruplar birden çok menüye atanabilir.
.vsct dosya notları
Hem derledikten hem de yerel bir uydu DLL'sine yerleştirdikten sonra .vsct dosyasında herhangi bir değişiklik yaparsanız, devenv.exe /setup /nosetupvstemplates komutunu çalıştırmanız gerekir. Bunun yapılması, deneysel kayıt defterinde belirtilen VSPackage kaynaklarını yeniden okunmaya ve Visual Studio'yu açıklayan iç veritabanının yeniden oluşturulmasını zorlar.
Geliştirme sırasında, IDE'de karışıklığa yol açabilecek deneysel kayıt defteri kovanında birden çok VSPackage projesi oluşturulup kaydedilebilir. Bunu düzeltmek için deneysel kovanı varsayılan ayarlara sıfırlayarak tüm kayıtlı VSPackage'ları ve IDE'de yapmış olabilecekleri değişiklikleri kaldırabilirsiniz. Deneysel kovanı sıfırlamak için Visual Studio SDK ile birlikte gelen CreateExpInstance.exe aracını kullanın. Bu adresi şu konumda bulabilirsiniz:
%PROGRAMFILES(x86)%\Visual Studio\<version> SDK\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe
CreateExpInstance /Reset komutunu kullanarak aracı çalıştırın. Bu aracın normalde Visual Studio ile yüklü olmayan tüm kayıtlı VSPackage'ları deneysel kovandan kaldırdığını unutmayın.