C# 如何使用VSPackage在Visual Studio 2012中添加多个菜单项?
为了在VisualStudio2012中使用VSPackage添加自定义菜单命令,我研究了这一点 一切都很好,直到我想添加更多的菜单项 在提供的文档中,他们没有解释如何再添加一个菜单项 例如,我在C# 如何使用VSPackage在Visual Studio 2012中添加多个菜单项?,c#,visual-studio-2012,sdk,C#,Visual Studio 2012,Sdk,为了在VisualStudio2012中使用VSPackage添加自定义菜单命令,我研究了这一点 一切都很好,直到我想添加更多的菜单项 在提供的文档中,他们没有解释如何再添加一个菜单项 例如,我在tfsutibility.vsct文件中进行了以下设置: <Menus> <Menu guid="guidTfsUtilityCmdSet" id="TfsUtility" priority="0x700" type="Menu"> <Parent
tfsutibility.vsct
文件中进行了以下设置:
<Menus>
<Menu guid="guidTfsUtilityCmdSet" id="TfsUtility" priority="0x700" type="Menu">
<Parent guid="guidSHLMainMenu" id="IDG_VS_MM_TOOLSADDINS" />
<Strings>
<ButtonText>Tfs Utility</ButtonText>
<CommandName>Tfs Utility</CommandName>
</Strings>
</Menu>
</Menus>
Tfs实用程序
Tfs实用程序
树枝
问题:
if ( null != mcs )
{
// Create the command for the menu item.
CommandID menuCommandID = new CommandID(guidCommandGroup, myCommandID);
MenuCommand menuItem = new MenuCommand(MenuItemCallback, menuCommandID );
mcs.AddCommand( menuItem );
}
有关更多信息,请参阅
if ( null != mcs )
{
// Create the command for the menu item.
CommandID menuCommandID = new CommandID(guidCommandGroup, myCommandID);
MenuCommand menuItem = new MenuCommand(MenuItemCallback, menuCommandID );
mcs.AddCommand( menuItem );
}
有关更多信息,请参阅。我找到了解决方案:
PkgCmdIDList
页面中,添加一些常量,如:
public const uint cmdiChangesets = 0x101; // or cmdiYourMenu instead of cmdiChangesets
public const uint cmdidCheckin = 0x102;
public const uint cmdidGet = 0x103;
private void TfsMenuItemBranchCallback(object sender, EventArgs e)
{
// do something
}
private void TfsMenuItemPendingCallback(object sender, EventArgs e)
{
// do something
}
...
节点中创建按钮
<Button guid="guidTfsUtilityCmdSet" id="cmdidChangesets" priority="0x0101" type="Button">
<Parent guid="guidTfsUtilityCmdSet" id="MyMenuGroup" />
<Strings>
<ButtonText>Changesets</ButtonText>
</Strings>
</Button>
<Button guid="guidTfsUtilityCmdSet" id="cmdidCheckin" priority="0x0102" type="Button">
<Parent guid="guidTfsUtilityCmdSet" id="MyMenuGroup" />
<Strings>
<ButtonText>Pending changes</ButtonText>
</Strings>
</Button>
变更集
挂起的更改
节点中添加IDSymbol
<Button guid="guidTfsUtilityCmdSet" id="cmdidChangesets" priority="0x0101" type="Button">
<Parent guid="guidTfsUtilityCmdSet" id="MyMenuGroup" />
<Strings>
<ButtonText>Changesets</ButtonText>
</Strings>
</Button>
<Button guid="guidTfsUtilityCmdSet" id="cmdidCheckin" priority="0x0102" type="Button">
<Parent guid="guidTfsUtilityCmdSet" id="MyMenuGroup" />
<Strings>
<ButtonText>Pending changes</ButtonText>
</Strings>
</Button>
0x0101
必须与PkgCmdIDList
类中的常量值相匹配,即0x101
,并且该值必须不同,以便显示所有菜单项我找到了解决方案:
PkgCmdIDList
页面中,添加一些常量,如:
public const uint cmdiChangesets = 0x101; // or cmdiYourMenu instead of cmdiChangesets
public const uint cmdidCheckin = 0x102;
public const uint cmdidGet = 0x103;
private void TfsMenuItemBranchCallback(object sender, EventArgs e)
{
// do something
}
private void TfsMenuItemPendingCallback(object sender, EventArgs e)
{
// do something
}
...
节点中创建按钮
<Button guid="guidTfsUtilityCmdSet" id="cmdidChangesets" priority="0x0101" type="Button">
<Parent guid="guidTfsUtilityCmdSet" id="MyMenuGroup" />
<Strings>
<ButtonText>Changesets</ButtonText>
</Strings>
</Button>
<Button guid="guidTfsUtilityCmdSet" id="cmdidCheckin" priority="0x0102" type="Button">
<Parent guid="guidTfsUtilityCmdSet" id="MyMenuGroup" />
<Strings>
<ButtonText>Pending changes</ButtonText>
</Strings>
</Button>
变更集
挂起的更改
节点中添加IDSymbol
<Button guid="guidTfsUtilityCmdSet" id="cmdidChangesets" priority="0x0101" type="Button">
<Parent guid="guidTfsUtilityCmdSet" id="MyMenuGroup" />
<Strings>
<ButtonText>Changesets</ButtonText>
</Strings>
</Button>
<Button guid="guidTfsUtilityCmdSet" id="cmdidCheckin" priority="0x0102" type="Button">
<Parent guid="guidTfsUtilityCmdSet" id="MyMenuGroup" />
<Strings>
<ButtonText>Pending changes</ButtonText>
</Strings>
</Button>
0x0101
必须与PkgCmdIDList
类中的常量值相匹配,该常量值为0x101
,并且该值必须不同才能显示所有菜单项