VSPackage:添加上下文菜单项,其他扩展名可能会发生冲突

时间:2014-12-18 03:55:09

标签: oracle visual-studio contextmenu vspackage

我已经为Visual Studio安装了Oracle Developer Tools,我正在尝试创建一个VSPackage扩展,用于打包Oracle脚本以便发布。我希望扩展能够工作,允许用户在Oracle DB项目的解决方案资源管理器中右键单击部署脚本,并显示上下文菜单选项以捆绑脚本。

我创建了VSPackage项目并定义了菜单项。我将它的父设置为IDM_VS_CTXT_ITEMNODE。如果我运行Visual Studio实验实例,请加载解决方案并右键单击Oracle Db项目中缺少菜单项的任何项目。

此外,我尝试将非sql项目(* .cs文件)添加到Oracle Db项目中。当我右键单击Oracle Db项目中的该项时,我的菜单项不存在。

如果我在同一解决方案中右键单击其他项目类型中的任何项目(例如* .cs文件),我会看到我的菜单项。

使用PowerShell我查询了IDE的CommandBars列表,我想我找到了项目项的实例ID(DBProjScriptCtx - 0x0613),但因为这没有在vsshlids.h中定义,所以我无法引用它...或者至少我无法弄清楚如何引用它。所以我的问题是:有没有办法让我的菜单项进入上下文菜单,该菜单似乎由Oracle Developer Tools for VS加载项拥有?

我使用VS 2013 SDK在VS 2013(12.0.31101.00 Update 4)中工作。

测试解决方案环境 - 安装了ODAC 12c Release 2和Visual Studio的Oracle Developer Tools(12.1.0.1.2),并创建了一个包含一个Oracle Db项目和一个非Oracle Db项目的解决方案。 使用Visual Studio包项目模板创建VSPackage。

提前感谢您的任何帮助。

*更新* 此项已解决 - 请参阅VSPackage: add a context menu item where another extension may be conflicting

1 个答案:

答案 0 :(得分:0)

执行此操作的最简单方法是确定在右键单击解决方案资源管理器中的部署脚本节点时显示的上下文菜单中的guid:id对是什么。可能是,他们可能正在显示完全不同的上下文菜单。

使用EnableVSIPLogging registry value,找到上下文菜单本身的guid:id对。然后,您需要在.VSCT中创建一个组。您的命令应该是组的父级,该组应该是Oracle上下文菜单的父级。

您需要自己在.VSCT文件中定义这些符号,因为VSSDK显然不会将这些值设置为它自己的标题: - )

此致 埃德多尔