And*_*est 15 mef contextmenu visual-studio-2010 vspackage
我想创建一个Visual Studio扩展,允许某人在编辑器中选择任何文本,右键单击以获取上下文菜单,然后通过单击我的自定义菜单项对文本执行某些操作.
比方说,我的自定义菜单项称为"电子邮件...".编辑器的新上下文菜单可能如下所示:
断点
运行到光标
切割
复制
粘贴
电子邮件...
概述
我还想添加一个带有选项的弹出窗口(装饰?).在这种情况下,它可能会之类的东西To
,Subject
和CC
领域.
我认为一些这是可以做到的MEF使用编辑器扩展,如弹出,点燃了一封电子邮件的实际代码.但看起来我需要VSPackage
添加上下文菜单项.从我读过的内容来看,我可以将MEF片和VSPackage
它们捆在一起.
这是我被卡住的地方.我需要深入参考细节来实现这两个部分,但我还需要有关如何集成它们的信息.MSDN让我绕圈子走了.
我可以从中学到任何好的,可靠的示例代码或文档(甚至是书籍)吗?
gam*_*eld 19
1)您可以创建始终在扩展中获得对EnvDTE的引用.
m_dte = (EnvDTE.DTE)this.GetService(typeof(EnvDTE.DTE));
Run Code Online (Sandbox Code Playgroud)
2)直接添加扩展范例中的菜单项.您只需修改".VSCT"文件即可.首先,菜单命令在菜单组中定义.在VSCT文件中,组定义如下所示:
<Group guid="guidCodeBlogCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
Run Code Online (Sandbox Code Playgroud)
若要将"电子邮件"菜单项的快捷菜单,我们需要做的是指定的代码窗口上下文编辑器作为母公司的菜单组,使用标识符IDM_VS_CTX_CODEWIN:
<Group guid="guidCodeBlogCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>
</Group>
Run Code Online (Sandbox Code Playgroud)
我基于一个简洁的教程,基于如何从visual studio自动发布或博客代码片段来建立这个例子:http://solutions.developer.com/ms/web-dev/visual-studio/codeblog-writing-a-blogging -extension换视觉工作室2010.html
我完全放弃了处理MEF,VSIX文件等的想法.相反,我选择了Visual Studio加载项,这更容易.
我将各种资源(如添加菜单项)中的代码组合到Visual Studio .NET IDE和Visual Studio外接程序中的上下文菜单中:创建上下文菜单,这些菜单有些陈旧且需要清理,但它们工作正常.
归档时间: |
|
查看次数: |
10093 次 |
最近记录: |