上下文菜单项不在代码编辑器中出现.cshtml文件

时间:2017-01-10 12:20:39

标签: visual-studio visual-studio-extensions

我创建了a Visual Studio extension,在右键单击两个位置时出现的上下文菜单中添加了两个条目:解决方案资源管理器中的项目,以及打开的代码编辑器窗口中的任何位置。

我遇到的问题是,在代码编辑器窗口中单击时不显示菜单条目如果正在编辑的文件是SELECT * FROM Movies WHERE(movie_date BETWEEN movie_date AND NOW()) ORDER BY views DESC LIMIT 5 文件(单击时会显示)但是在解决方案资源管理器中。对于我测试的任何其他文件类型,它可以正常工作。

以下是我如何定义.cshtml文件中的菜单条目:

.vsct

菜单条目在命令构造函数中创建为<Groups> <Group guid="guidBrowseInRemoteGitRepoCommandPackageCmdSet" id="MyMenuGroup" priority="0x0600"> <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE"/> </Group> <Group guid="guidBrowseInRemoteGitRepoCommandPackageCmdSet" id="MyMenuGroup" priority="0x0600"> <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/> </Group> </Groups> <Buttons> <Button guid="guidBrowseInRemoteGitRepoCommandPackageCmdSet" id="BrowseInRemoteGitRepoCommandId" priority="0x0100" type="Button"> <Parent guid="guidBrowseInRemoteGitRepoCommandPackageCmdSet" id="MyMenuGroup" /> <Icon guid="guidImages" id="bmpPicGit" /> <CommandFlag>DynamicVisibility</CommandFlag> <Strings> <ButtonText>Browse in remote repository</ButtonText> </Strings> </Button> <Button guid="guidBrowseInRemoteGitRepoCommandPackageCmdSet" id="CopyRemoteGitRepoUrlCommandId" priority="0x0100" type="Button"> <Parent guid="guidBrowseInRemoteGitRepoCommandPackageCmdSet" id="MyMenuGroup" /> <Icon guid="guidImages" id="bmpPicGit" /> <CommandFlag>DynamicVisibility</CommandFlag> <Strings> <ButtonText>Copy URL of remote repository version</ButtonText> </Strings> </Button> </Buttons> 的实例:

OleMenuCommand

var commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; if (commandService == null) return; var browseMenuCommandID = new CommandID(CommandSet, BrowseCommandId); var browseMenuItem = new OleMenuCommand(BrowseMenuItemCallback, browseMenuCommandID); browseMenuItem.BeforeQueryStatus += MenuItemOnBeforeQueryStatus; commandService.AddCommand(browseMenuItem); //same for the other entry MenuItemOnBeforeQueryStatus senderVisible设为真或假。

那么,我在这里错过了什么?

修改

为了完整性,以下是我需要在Enabled文件中进行的更改,以实现the change suggested by Carlos Quintero

1)在.vsct内添加了以下内容:

<Symbols>

2)在<GuidSymbol name="guidCshtmlCodeEditor" value="{78F03954-2FB8-4087-8CE7-59D71710B3BB}" /> 内添加了以下内容:

<Groups>

1 个答案:

答案 0 :(得分:0)

Ed的回答。多尔(https://social.msdn.microsoft.com/Forums/vstudio/en-US/7c5eb211-3985-426c-a3a2-9da4473dbaf4/my-context-menu-item-made-by-menu-command-in-visual-studio-package-is-not-shown-in-cshtml-files?forum=vsx):

为.cshtml文件显示了不同的上下文菜单。

如果您使用EnableVSIPLogging注册表值(HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ VisualStudio \ 14.0 \ General),如旧文章所述:

http://blogs.msdn.com/b/dr._ex/archive/2007/04/17/using-enablevsiplogging-to-identify-menus-and-commands-with-vs-2005-sp1.aspx

您会看到有两种不同的上下文菜单正在使用中。

.CS文件使用:

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

和.CSHTML文件使用:

Guid = {78F03954-2FB8-4087-8CE7-59D71710B3BB}
GuidID = 395
CmdID = 1
Type = 0x00000400
Flags = 0x00000000
NameLoc = HTML Context

因此您需要相应地修改.vsct文件。