我通过安装新的vsix软件包来安装新的菜单项。这是我得到的:
我尝试更改不同的值以使VS对我的菜单项进行排序,但没有运气。 这是我的.vsct文件的一部分:
<Buttons>
<Button guid="guidWizardPackage2010Project" id="AddImpl" priority="0x0301" type="Button">
<Parent guid="guidWizardPackage2010Project" id="MyMenuGroup" />
<Icon guid="guidImages" id="logo" />
<CommandFlag>DynamicVisibility</CommandFlag>
<Strings>
<CommandName>Add Implementation [VER]...</CommandName>
<ButtonText>Add Implementation [VER]...</ButtonText>
</Strings>
</Button>
</Buttons>
...
<GuidSymbol name="guidVSPackage2012Pkg" value="{random generated}" />
<GuidSymbol name="guidWizardPackage2010Project" value="{random generated}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="AddImpl" value="0x0100" />
</GuidSymbol>
我尝试增加像&#34; MyMenuGroup&#34;这样的值。价值,&#34; AddImpl&#34; value,guids,priority =&#34; 0x0301&#34;希望其中一个用于排序,但不是。
我可以手动自定义订单,但应在安装后对其进行排序。
有没有办法以编程方式(自动)自定义或排序菜单项?
答案 0 :(得分:1)
这是我复杂的解决方案(从Package.Initialize()运行):
DTE2 dte = GetGlobalService(typeof (DTE)) as DTE2;
CommandBars commandBars = (CommandBars) dte.CommandBars;
CommandBar projectMenu = commandBars["Project"];
CommandBarControl control = null;
foreach (CommandBarControl barControl in projectMenu.Controls)
if (...) // currently added control
{
control = barControl;
}
// finding new position for the control
control.Move(projectMenu, newPosition); // move control to correct place
control.BeginGroup = false; // remove ugly separator above
我有很多控件,所以他们不应该同时运行这个代码,只是最后一个。 我希望你有更好的答案。
答案 1 :(得分:0)
优先级属性是控制菜单项相对顺序的属性。奇怪的是它不适合你。