【问题标题】:How to add commands dynamically in VSPackage (Visual Studio 2013 Package)如何在 VSPackage(Visual Studio 2013 包)中动态添加命令
【发布时间】:2013-12-04 14:46:37
【问题描述】:

我为 VS2012 开发了一个插件,它显示在代码窗口(编辑器的)上下文菜单中。有一个菜单,其中有一个子菜单。例如,子菜单项是动态添加的..

 Cut
 Copy
 Paste
   .
   .
   .
 My Menu >  sub menu item 1
            sub menu item 2
            sub menu item 3

现在对于 Visual Studio 2013,我需要将插件转换(几乎重写)为 VSPackage。

我可以创建一个命令,但我不能动态添加命令作为子菜单项。

请从http://sdrv.ms/INbIu2下载源代码(VSPackage for VS2013)

问题

如何在 VSPackage 中制作菜单和动态子菜单?

我真的很感激任何例子。

非常感谢!

【问题讨论】:

    标签: c# visual-studio visual-studio-2013 visual-studio-addins vspackage


    【解决方案1】:

    在 .vsct 文件中的命令定义上使用 DynamicItemStart 标志:How to: Dynamically Add Menu Items

    另外,请查看相应的“演练”主题。

    【讨论】:

    • 感谢 SergeyVlasov,让我按照指南/教程来看看会发生什么。
    • 好的,这个链接很有帮助。虽然这不是太简单,但是,我设法做到了。只有一个问题,它首先显示一个命令按钮,我需要先按下它才能开始显示菜单。我无法处理它。 (请看我在同一位置上传的图片:sdrv.ms/INbIu2)你能给我一些建议吗?
    • 要显示菜单,你的包应该被加载,但默认情况下,VS 不会在启动时加载包(例如,当你调用命令按钮之类的包命令时它会加载它们)。为您的主包类添加 ProvideAutoLoad 属性 msdn.microsoft.com/en-us/library/bb166762.aspx
    【解决方案2】:

    您正在创建的 VSPackage 仍然可以通过您在加载项中使用的相同 API 添加和删除命令。

    【讨论】:

    • 感谢 JaredPar,我知道这是可能的,问题是我该怎么做。 VSPackage 的实现看起来复杂而混乱。太多的依赖让我很难理解流程和动态行为。
    • 这似乎不是真的。添加菜单项的命令需要一个 Addin 实例,该实例不适用于 Extensions。所有这些调用都在 MSDN 中记录为 VS 2013 中的“已弃用”,这意味着它们不能依赖于将来存在(并且未来可能已经存在于 VS 2015 中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多