开发者

Extending the Visual Studio 2010 editor by adding a context menu item to manipulate selected text

开发者 https://www.devze.com 2023-03-10 17:16 出处:网络
I\'d like to create an extension to Visual Studio that will allow someone to select any text in an editor, right-click to get a context menu, and then perform some action on the text by clicking on my

I'd like to create an extension to Visual Studio that will allow someone to select any text in an editor, right-click to get a context menu, and then perform some action on the text by clicking on my custom menu item.

Let's say for example that my custom menu item is called "Email...". The new context menu for the editor might look something like this:

Breakpoint

Run to Cursor

Cut

Copy

Paste

Email...

Outlining

I'd also like to add a popup (adornment?) with options. In this case it could be things like To, Subject, and CC fields.

I think that some of this can be done with开发者_开发问答 MEF using editor extensions, like the popup and the actual code for firing off an email. But it looks like I need a VSPackage to add the context menu item. From what I've read, I can bundle the MEF piece and the VSPackage together.

This is where I get stuck. I need an in-depth reference with details to implement both parts, but I also need information on how to integrate them. MSDN has me going around in circles.

Is there any good, solid example code or documentation (even books) that I can learn from?


1) You can create always get a reference to EnvDTE in an extension.

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

2) To directly add, menu item in the extension paradigm. You just need to modify the ".VSCT" file. First, the menu command is defined in a menu group. In the VSCT file, the group definition looks like this as generated:

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

To move the “Email” menu entry to the context menu, all we need to do is specify the code window context editor as the parent for the menu group, using the identifier IDM_VS_CTX_CODEWIN:

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

I based this example from a neat tutorial on how to auto-tweet or blog an code snippet from visual studio: http://solutions.developer.com/ms/web-dev/visual-studio/codeblog-writing-a-blogging-extension-for-visual-studio-2010.html


I totally scrapped my idea of dealing with MEF, VSIX files, etc. Instead I went with a Visual Studio add-in which was much easier.

I combined code from various resources like Adding Menu Items to context menus inside the Visual Studio .NET IDE and Visual Studio Add-in : Creating Context Menus which are somewhat old and needed cleaning up, but they worked fine.

0

精彩评论

暂无评论...
验证码 换一张
取 消