Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Menüler ve araç çubukları, kullanıcıların uzantınızdaki komutlara erişme şeklidir. Komutlarınızı kullanıcılara sunmanın kullanışlı grafik yollarıdır. Genellikle ilgili komutlar aynı menü veya araç çubuğunda birlikte kümelenir.
Menüler ve araç çubuklarıyla çalışma
Bu genel bakış, menüler ve araç çubuklarıyla çalışmaya yönelik şu en önemli senaryoları kapsar:
- Menü oluşturma
- Öğeleri menüye yerleştirme
- Araç çubuğu oluşturma
- Öğeleri araç çubuğuna yerleştirme
- Grup oluşturma
- Öğeleri bir gruba yerleştirme
- Grupları menüye veya araç çubuğuna yerleştirme
- Yerleştirme sıralama (Öncelik)
Menü oluşturma
Yeni Genişletilebilirlik Modeli ile bir menü oluşturmak için, sınıfı özniteliğiyle VisualStudioContribution donatan statik bir MenuConfiguration özellik ekleyin. Bu statik özellik, Uzantı projenizdeki herhangi bir sınıfa yerleştirilebilir. Yeni Genişletilebilirlik Modeli örneklerinde, basitlik için sınıfında bulunurlar Extension . Görünür alt öğeleri olmayan menüler kullanıcı arabiriminde görünmez.
[VisualStudioContribution]
public class ExtensionEntrypoint : Extension
{
[VisualStudioContribution]
public static MenuConfiguration MyMenu => new("%MyMenu.DisplayName%");
}
MenuConfiguration sınıfı
sınıfı, MenuConfiguration tanımanız gereken birkaç parametreye sahiptir:
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
| DisplayName | String | Yes | Menünüzün varsayılan görünen adı. Bu dizeyi yerelleştirmeyi etkinleştirmek için bu dizeyi '%' karakteriyle çevreleyin. Bkz. Meta verileri yerelleştirme. |
| Tooltiptext | String | Hayır | Menü vurgulandığında veya odaklanıldığında araç ipucu olarak görüntülenecek metin. Bu dizeyi yerelleştirmeyi etkinleştirmek için bu dizeyi '%' karakteriyle çevreleyin. Bkz. Meta verileri yerelleştirme. |
| Yerleşim | CommandPlacement[] | Hayır | Visual Studio'da menünün üst öğe olarak alınacağı mevcut Grupları belirtir. Bkz. IDE'de menü yerleştirme. |
| Çocuk | MenuChild[] | Hayır | Bu menünün üst öğesi olması gereken komut, menü ve grup kümesini açıklar. Bu öğelerin dizide tanımlanma sırası, IDE'de görsel olarak görünecekleri sırayı temsil eder. Bkz. Öğeleri bir menüye yerleştirme |
IDE'ye menü yerleştirme
Menüler, komutların olduğu gibi IDE'ye yerleştirilir. Bkz. IDE'ye komut yerleştirme.
public override MenuConfiguration MyMenu => new("%MyMenu.DisplayName%")
{
Placements = new CommandPlacement[]
{
CommandPlacement.KnownPlacements.ToolsMenu
},
};
Öğeleri menüye yerleştirme
Bir menüdeki öğeye yerleştirme işlemi, üzerindeki MenuConfigurationdiziye Children öğe eklenerek yapılır. Öğelerin bu diziye eklenme sırası, bu öğelerin IDE'de görsel olarak nasıl görüntüleneceğini belirler.
Menüye komut yerleştirme
Menüye komut yerleştirme yöntemi kullanılarak MenuChild.Command<T> yapılır ve şablon bağımsız değişkeninin yerine öğesinin Commandsınıf adı kullanılır.
[VisualStudioContribution]
public static MenuConfiguration MyMenu => new("%MyMenu.DisplayName%")
{
Children = new[]
{
MenuChild.Command<MyCommand>(),
},
};
Menüleri menüye yerleştirme
Menüleri menüye yerleştirme yöntemi kullanılarak MenuChild.Menu yapılır ve parametre olarak başka MenuConfiguration bir menü geçirilir.
[VisualStudioContribution]
public static MenuConfiguration MyChildMenu => new("My Child Menu!");
[VisualStudioContribution]
public static MenuConfiguration MyParentMenu => new("My Parent Menu!")
{
Children = new[]
{
MenuChild.Menu(MyChildMenu),
},
};
Menü öğelerini gruplara ayırma
Menüdeki öğeler, öğeler arasında bir MenuChild.Separator öğe bulunarak birlikte gruplandırılabilir. Görsel olarak, bu iki öğe arasına yerleştirilmiş ince bir çizgi gibi görünecektir.
[VisualStudioContribution]
public static MenuConfiguration MyMenu1 => new("%MyMenu.DisplayName%")
{
Children = new[]
{
MenuChild.Command<MyCommand1>(), // Assuming there is a `Command` defined in the extension called `MyCommand1`
MenuChild.Menu(MyMenu2), // Assuming there is a `MenuConfiguration` defined in the extension called `MyMenu2`
MenuChild.Separator,
MenuChild.Command<MyCommand2>(), // Assuming there is a `Command` defined in the extension called `MyCommand2`
MenuChild.Menu(MyMenu3), // Assuming there is a `MenuConfiguration` defined in the extension called `MyMenu3`
},
};
Bu, satır içi grup tanımlamak için yöntemini kullanarak MenuChild.Group da gerçekleştirilebilir. Ardından sınıfını GroupChild kullanarak öğeleri gruba üst öğe olarak eklersiniz.
[VisualStudioContribution]
public static MenuConfiguration MyMenu1 => new("%MyMenu.DisplayName%")
{
Children = new[]
{
MenuChild.Group(
GroupChild.Command<MyCommand1>(), // Assuming there is a `Command` defined in the extension called `MyCommand1`
GroupChild.Menu(MyMenu2)), // Assuming there is a `MenuConfiguration` defined in the extension called `MyMenu2`
MenuChild.Group(
GroupChild.Command<MyCommand2>(), // Assuming there is a `Command` defined in the extension called `MyCommand2`
GroupChild.Menu(MyMenu3)), // Assuming there is a `MenuConfiguration` defined in the extension called `MyMenu3`
},
};
Önceki iki örnekte, sonuçta elde edilen menü IDE'de aynı olacaktır. Menü MyMenu1 , aşağıdaki ekran görüntüsündeki menüye benzer olacaktır:

Araç çubuğu oluşturma
Yeni Genişletilebilirlik Modeli ile bir araç çubuğu oluşturmak için, sınıfı özniteliğiyle VisualStudioContribution donatan bir statik ToolbarConfiguration özellik ekleyin. Bu statik özellik, Uzantı projenizdeki herhangi bir sınıfa yerleştirilebilir. Yeni Genişletilebilirlik Modeli örneklerinde basitlik için sınıfta bulunurlar Extension .
[VisualStudioContribution]
public class ExtensionEntrypoint : Extension
{
[VisualStudioContribution]
public static ToolbarConfiguration MyToolbar => new("%MyToolbar.DisplayName%");
}
Placement özelliğinin ToolbarConfiguration olduğu gibi null bırakılması araç çubuğunu Standart Araç Çubuğu Çubuğu'na yerleştirir ve menüden araç çubuğu View -> Toolbars seçilerek görünür hale getirilebilir.
ToolbarConfiguration sınıfı
sınıfı, ToolbarConfiguration tanımanız gereken birkaç özelliğe sahiptir:
| Özellik | Type | Zorunlu | Açıklama |
|---|---|---|---|
| DisplayName | String | Yes | Araç çubuğunuzun varsayılan görünen adı. Bu dizeyi yerelleştirmeyi etkinleştirmek için bu dizeyi '%' karakteriyle çevreleyin. Bkz. Meta verileri yerelleştirme. |
| Tooltiptext | String | Hayır | Araç çubuğu üzerine gelindiğinde veya odaklanıldığında araç ipucu olarak görüntülenecek metin. Bu dizeyi yerelleştirmeyi etkinleştirmek için bu dizeyi '%' karakteriyle çevreleyin. Bkz. Meta verileri yerelleştirme. |
| Yerleşim | CommandPlacement[] | Hayır | Visual Studio'da araç çubuğunun üst öğesi olarak kullanılacak mevcut Grupları belirtir. Bkz. IDE'ye komut yerleştirme. Bu özelliğin olduğu gibi null bırakılması araç çubuğunu Standart Araç Çubuğu Çubuğu'na yerleştirir ve menüden araç çubuğu View -> Toolbars seçilerek görünür hale getirilebilir |
| Çocuk | ToolbarChild[] | Hayır | Bu araç çubuğunun üst öğesi olması gereken komut, menü ve grup kümesini açıklar. Bu öğelerin dizide tanımlanma sırası, IDE'de görsel olarak görünecekleri sırayı temsil eder. Bkz. Öğeleri araç çubuğuna yerleştirme |
Öğeleri araç çubuğuna yerleştirme
Bir araç çubuğuna komut yerleştirme yöntemi kullanılarak ToolbarChild.Command<T> yapılır ve şablon bağımsız değişkeninin yerine öğesinin Commandsınıf adı kullanılır.
[VisualStudioContribution]
public static ToolbarConfiguration MyToolbar => new("%MyToolbar.DisplayName%")
{
Children = new[]
{
ToolbarChild.Command<MyCommand>(),
},
};
Araç çubuğu öğelerini gruplara ayırma
Araç çubuğundaki öğeler, öğeler arasında bir ToolbarChild.Separator öğe bulunarak birlikte gruplandırılabilir. Görsel olarak, bu iki öğe arasına yerleştirilmiş ince bir çizgi gibi görünecektir.
[VisualStudioContribution]
public static ToolbarConfiguration MyToolbar => new("%MyToolbar.DisplayName%")
{
Children = new[]
{
ToolbarChild.Command<MyCommand1>(), // Assuming there is a `Command` defined in the extension called `MyCommand1`
ToolbarChild.Separator,
ToolbarChild.Command<MyCommand2>(), // Assuming there is a `Command` defined in the extension called `MyCommand2`
},
};
Bu, satır içi grup tanımlamak için yöntemini kullanarak ToolbarChild.Group da gerçekleştirilebilir. Ardından sınıfını ToolbarChild kullanarak öğeleri gruba üst öğe olarak eklersiniz.
[VisualStudioContribution]
public static ToolbarConfiguration MyToolbar => new("%MyToolbar.DisplayName%")
{
Children = new[]
{
ToolbarChild.Group(
GroupChild.Command<MyCommand1>(), // Assuming there is a `Command` defined in the extension called `MyCommand1`
ToolbarChild.Group(
GroupChild.Command<MyCommand2>(), // Assuming there is a `Command` defined in the extension called `MyCommand2`
},
};
Buradaki iki örnekte, sonuçta elde edilen araç çubuğu IDE'de aynı olacaktır. Araç çubuğu MyToolbar aşağıdaki ekran görüntüsündeki araç çubuğu gibi görünür:

Grup oluşturma
Grup, bitişik grupların son ve ilk öğeleri arasına ayırıcı yerleştirilecek öğelerin görsel bir gruplandırmadır. Yukarıdaki bölümlerde, veya ToolbarConfigurationözelliğinin MenuConfiguration bağlamı içinde grupların Children nasıl oluşturulacağını açıklar. Grupları kendi CommandGroupConfigurationiçinde tanımlamak da mümkündür. Kendi menünüzü veya araç çubuğunuzu tanımlamadan Visual Studio'da var olan bir menüye veya araç çubuğuna bir grup eklemek istediğinizde bu yararlı olur. Kodunuzu, grup tanımlarınızı menü ve araç çubuğu tanımlarınızdan ayıracak şekilde biçimlendirmek isterseniz de yararlı olabilir.
Yeni Genişletilebilirlik Modeli ile bir grup oluşturmak için statik CommandGroupConfiguration bir özellik ekleyin. Bu statik özellik, Uzantı projenizdeki herhangi bir sınıfa yerleştirilebilir. Yeni Genişletilebilirlik Modeli örneklerinde basitlik için sınıfta bulunurlar Extension . bir CommandGroupConfiguration belirtirse Placement, özniteliğiyle VisualStudioContribution de donatılmalıdır.
public static CommandGroupConfiguration MyGroup => new();
[VisualStudioContribution]
private static CommandGroupConfiguration MyGroupWithPlacement => new(GroupPlacement.KnownPlacements.ToolsMenu);
CommandGroupConfiguration sınıfı
sınıfı, CommandGroupConfiguration tanımanız gereken birkaç parametreye sahiptir:
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
| Yerleşim | GroupPlacement | Hayır | Visual Studio'da grubun üst öğesi olarak kullanılacak mevcut menüyü veya araç çubuğunu belirtir. Bkz. IDE'ye grup yerleştirme. |
| Çocuk | GroupChild[] | Hayır | Bu grubun üst öğesi olması gereken komut ve menü kümesini açıklar. Bu öğelerin dizide tanımlanma sırası, IDE'de görsel olarak görünecekleri sırayı temsil eder. Bkz. Öğeleri bir gruba yerleştirme |
IDE'ye grup yerleştirme
Visual Studio'da komutların yerleştirilebileceği iyi tanımlanmış bir dizi yer vardır. Bu yerleştirmeler sınıfındaki Commands.GroupPlacementözelliği CommandPlacement.KnownPlacements tarafından tanımlanır. Geçerli kümesi KnownPlacements :
ToolsMenu- Komut, Visual Studio'da üst düzey "Araçlar" menüsünün altındaki bir gruba yerleştirilir.ViewOtherWindowsMenu- Komut, Visual Studio'da üst düzey "Görünüm" -> "Diğer Pencereler" menüsünün altındaki bir gruba yerleştirilir.ExtensionsMenu- Komut, Visual Studio'da üst düzey "Uzantılar" menüsünün altındaki bir gruba yerleştirilir.
[VisualStudioContribution]
public static CommandGroupConfiguration MyGroup1 => new(GroupPlacement.KnownPlacements.ToolsMenu);
[VisualStudioContribution]
public static CommandGroupConfiguration MyGroup2 => new(GroupPlacement.KnownPlacements.ExtensionsMenu.WithPriority(0x100));
Öğeleri bir gruba yerleştirme
Komutlar ve menüler, üzerindeki CommandGroupConfigurationdizi özelliği kullanılarak Children gruplara yerleştirilebilir.
Komutları bir gruba yerleştirme
Bir gruba komut yerleştirme yöntemi kullanılarak GroupChild.Command<T> yapılır ve şablon bağımsız değişkeninin yerine öğesinin Commandsınıf adı kullanılır.
[VisualStudioContribution]
public static CommandGroupConfiguration MyGroup => new(GroupPlacement.KnownPlacements.ToolsMenu)
{
Children = new[]
{
GroupChild.Command<MyCommand>(),
},
};
Menüleri bir gruba yerleştirme
Menüleri bir gruba yerleştirme yöntemi kullanılarak GroupChild.Menu yapılır ve parametre olarak geçirilir MenuConfiguration .
[VisualStudioContribution]
public static MenuConfiguration MyMenu => new("%MyMenu.DisplayName%");
[VisualStudioContribution]
public static CommandGroupConfiguration MyGroup => new(GroupPlacement.KnownPlacements.ToolsMenu)
{
Children = new[]
{
GroupChild.Menu(MyMenu),
},
};
Grupları menüye veya araç çubuğuna yerleştirme
Menüye grup yerleştirme yöntemi kullanılarak MenuChild.Group yapılır ve parametre olarak geçirilir CommandGroupConfiguration . Bir grubu araç çubuğuna yerleştirme yöntemi kullanılarak ToolbarChild.Group yapılır ve parametre olarak geçirilir CommandGroupConfiguration . Menülere veya araç çubuklarına bu şekilde üst öğeli gruplar dışında nullherhangi bir değere ayarlanmış özelliğine CommandGroupConfiguration sahip Placement olamaz ve özniteliğiyle VisualStudioContribution donatılmamalıdır.
private static CommandGroupConfiguration MyGroup => new()
{
Children = new[]
{
GroupChild.Command<MyCommand1>(), // Assuming there is a `Command` defined in the extension called `MyCommand1`
GroupChild.Command<MyCommand2>(), // Assuming there is a `Command` defined in the extension called `MyCommand2`
},
};
[VisualStudioContribution]
public static MenuConfiguration MyMenu => new("%MyMenu.DisplayName%")
{
Children = new[]
{
MenuChild.Group(MyGroup),
},
};
private static CommandGroupConfiguration MyGroup => new()
{
Children = new[]
{
GroupChild.Command<MyCommand1>(), // Assuming there is a `Command` defined in the extension called `MyCommand1`
GroupChild.Command<MyCommand2>(), // Assuming there is a `Command` defined in the extension called `MyCommand2`
},
}
[VisualStudioContribution]
public static ToolbarConfiguration MyToolbar => new("%MyToolbar.DisplayName%")
{
Children = new[]
{
ToolbarChild.Group(MyGroup),
},
};
Yerleştirme sıralama (Öncelik)
Yerleştirmeler, VSCT'de tanımlanan bir denetime üst öğe eklendiğinde, aynı grup, menü veya araç çubuğuna üst öğe ekli diğer öğelere göre kendi özelliğinin değerine Priority göre sıralanır. Priority özelliği bir unsigned short'dir. ve GroupPlacement CommandPlacement için varsayılan Priority değer ve değeri0, istenen Priority değeri geçirerek veya GroupPlacement.WithPriority yöntemleri çağrılarak CommandPlacement.WithPriority değiştirilebilir. Priority ve yöntemleri kullanılarak CommandPlacement.VsctParent GroupPlacement.VsctParent ve istenen Priority doğrudan geçirilerek de ayarlanabilir.
Priority VisualStudio.Genişletilebilirlik modeli kullanılarak yapılandırma nesneleri aracılığıyla tanımlanan denetimler için öğelerin üst öğesi eklendiğinde (örneğin, üst öğesinin üstlendiği grup, menü veya araç çubuğu , MenuConfigurationveya ToolbarConfigurationkullanılarak CommandGroupConfigurationtanımlandığında) özelliği söz konusu değildir.
GroupPlacement
GroupPlacement.KnownPlacements.ToolsMenu.WithPriority(0x0500);
// Parenting a group to the "Help" top level menu
GroupPlacement.VsctParent(new Guid("{d309f791-903f-11d0-9efc-00a0c911004f}"), id: 0x0088, priority: 0x0500);
CommandPlacement
CommandPlacement.KnownPlacements.ToolsMenu.WithPriority(0x0500);
// Parenting a command to the "Help -> About" group
CommandPlacement.VsctParent(new Guid("{d309f791-903f-11d0-9efc-00a0c911004f}"), id: 0x016B, priority: 0x0801);