通过添加上下文菜单项来操作所选文本,从而扩展Visual Studio 2010编辑器



我想创建一个Visual Studio的扩展,允许用户在编辑器中选择任何文本,右键单击以获得上下文菜单,然后通过单击我的自定义菜单项对文本执行一些操作。

举个例子,我的自定义菜单项被称为"电子邮件…"。编辑器的新上下文菜单可能看起来像这样:

断点
运行到光标
剪切
复制
粘贴
电子邮件
概述

我还想添加一个带有选项的弹出窗口(装饰?)。在这种情况下,它可以是ToSubjectCC字段。

我认为其中一些可以通过MEF使用编辑器扩展来完成,比如弹出窗口和实际的电子邮件代码。但是看起来我需要一个VSPackage来添加上下文菜单项。根据我所读到的内容,我可以将MEF部分和VSPackage捆绑在一起。

这就是我陷入困境的地方。我需要一个详细的深入参考来实现这两个部分,但我也需要关于如何集成它们的信息。MSDN让我兜圈子。

有什么好的、可靠的示例代码或文档(甚至书籍)可以让我学习吗?

1)您可以在扩展中创建并始终获取对EnvDTE的引用。

m_dte = (EnvDTE.DTE)this.GetService(typeof(EnvDTE.DTE));

2) 要直接添加,请在扩展范例中添加菜单项。您只需要修改".VCT"文件。首先,在菜单组中定义菜单命令。在VSCT文件中,生成的组定义如下所示:

<Group guid="guidCodeBlogCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>

要将"电子邮件"菜单项移动到上下文菜单,我们所需要做的就是使用标识符IDM_VS_CTX_CODEWIN:将代码窗口上下文编辑器指定为菜单组的父项

<Group guid="guidCodeBlogCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>
</Group>

我根据一个关于如何在visualstudio中自动推特或博客代码片段的简洁教程中的例子:http://solutions.developer.com/ms/web-dev/visual-studio/codeblog-writing-a-blogging-extension-for-visual-studio-2010.html

我完全放弃了处理MEF、VSIX文件等的想法。相反,我使用了一个更容易的Visual Studio插件。

我组合了来自各种资源的代码,如将菜单项添加到Visual Studio.NET IDE内的上下文菜单Visual Studio Add-in:Createing context menus,它们有些旧,需要清理,但运行良好。

最新更新