VS 2013 SDK:如何在 CommandBarPopup 菜单中添加行分隔符?

VS 2013 SDK: How to add a line separator in a CommandBarPopup menu?

C#VB.Net 中,使用 Visual Studio Package,如何向 CommandBarPopup 菜单添加分隔线?

我试过@Carlos J. Quintero在这个问题中给出的解决方案:

How do I insert a separator line between multiple Add-In commands in a menu command bar?

使用此代码:

    Private Sub AddSeparatorLine(ByRef cmndBarPopup As CommandBarPopup,
                                 ByVal index As Integer)

        Dim tempCommandBarButton As CommandBarButton =
            DirectCast(cmndBarPopup.Controls.Add(MsoControlType.msoControlButton, Missing.Value, Missing.Value, index, True), CommandBarButton)

        With tempCommandBarButton 
            .BeginGroup = True
            .Visible = True
            .Enabled = False
        End With

    End Sub

但是,它只是添加了一个空白space(没有名称的按钮)来做分隔符,而不是分隔线。

这是我期望的那种分隔线:

但这就是我得到的:

为包创建用户界面与为加载项创建用户界面完全不同。对于包,几乎所有内容都在 .vsct 文件中完成。行分隔符分隔组,所以如果你想要一个行分隔符,你需要声明一个新的组。参见 How to Create Reusable Groups of Buttons

您应该在 vsct 文件中定义符号、按钮和组,即使是上下文菜单。我会创建所有可能的项目,并决定哪些项目 enable/make 在执行时可见。或者,您可以为此使用 DynamicItemStart 命令标志。

我想建议您看一下这个 article,它很好地解释了使用 vspackages 的细节。这实际上是整个系列的一部分,当我需要在其他地方很难找到的 vspackage 信息时,它对我帮助很大。请查看您的问题的 "Separating command groups in a menu" 部分。

UPDATE

这是 Visual Studio 2013

的 GUID

VSDebug 消息

菜单数据:

Guid = {D309F791-903F-11D0-9EFC-00A0C911004F}
GuidID = 4
CmdID = 1037
Type = 0x00000400
Flags = 0x00000000
NameLoc = Code Window