我正在开发一个 Visual Studio 扩展,在其中我将元素添加到项目中引用的右键单击(上下文)菜单。这是通过Group
用 的父级定义 a 来完成的IDM_VS_CTXT_REFERENCE
。
我想根据单击的引用显示隐藏菜单元素,因此我将菜单项定义为OleMenuCommand
:
if (commandService != null)
{
var menuCommandID = new CommandID(CommandSet, CommandId);
var menuItem = new OleMenuCommand(this.MenuItemCallback, menuCommandID);
menuItem.BeforeQueryStatus += (sender, args) =>
{
var button = (OleMenuCommand)sender;
button.Visible = this.CommandVisible();
};
commandService.AddCommand(menuItem);
}
我在实施该CommandVisible
方法时遇到了麻烦。假设为了示例的缘故,如果引用的名称以 . 开头,我想显示菜单A
。我该怎么做?
我觉得我被困在互操作地狱中,盲目地因任意 id、guid 和不存在/难以理解的文档而跌跌撞撞。
我已经设法挖掘出我的引用所在的项目作为引用的一个IVsProject
和一些 id,但调用GetMkDocument
不会返回任何内容(它适用于项目中的文件,但不适用于引用)。
我该怎么做呢?我在哪里可以找到有关如何执行此操作的文档?