visual studio 插件开发(5) -- 在任意位置添加自己的菜单
生活随笔
收集整理的這篇文章主要介紹了
visual studio 插件开发(5) -- 在任意位置添加自己的菜单
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Vsx開(kāi)發(fā)中常見(jiàn)的一個(gè)需求就是需要在某個(gè)特定的菜單中添加項(xiàng)目。比如我需要在代碼視圖中右擊時(shí),在Snippetgroup中加入自己的菜單項(xiàng)(如下圖所示)。 在vsx1中?我們已經(jīng)涉及了如何添加一個(gè)菜單。我覺(jué)得,在任何一處添加自己的菜單項(xiàng)難點(diǎn)有三: 如何確定Button節(jié)點(diǎn)中的Guid (即下面第二幅圖中的{1496A755-94DE-11D0-8C3F-00C04FC2AAE2}是如何得到的) 如何確保Button節(jié)點(diǎn)中的id屬性沒(méi)有被使用過(guò) (即下面第二幅圖中的 value="9999" 這個(gè)9999為什么這么設(shè)置,我怎么知道這個(gè)ID在這個(gè)group中沒(méi)有被使用過(guò)呢?) 如何找到Button節(jié)點(diǎn)的Parent (即下面第一幅圖中的Parent的guid和id怎么得到的) ? ? ? ? 下面我就按照我添加這個(gè)菜單項(xiàng)時(shí)候的尋找步驟來(lái)添加這個(gè)菜單項(xiàng),僅供參考。 一. 快速找到某個(gè)菜單的Guid:Id 既然我們要在Insert Snippet的上面添加一個(gè)菜單項(xiàng)。那么比較好的方式就是看看Insert Snippet這個(gè)菜單項(xiàng)目在vsct中是怎么設(shè)置的。如果知道了Insert Snippet在vsct是怎么設(shè)置的,那么我們的工作就已經(jīng)完成了一大半了。從這篇文章中我們可以知道如何利用一個(gè)注冊(cè)文件來(lái)獲得各個(gè)菜單項(xiàng)的具體Guid:Id信息。步驟如下: 將下面這段代碼保存為“任意文件名.reg“ 的注冊(cè)表文件嗎,然后運(yùn)行此注冊(cè)表文件。注意代碼中的"VisualStudio\10.0",如果你說(shuō)用的是vs2008開(kāi)發(fā),那么請(qǐng)改為\9.0 Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\General]
"EnableVSIPLogging"=dword:00000001 2.?? 重啟VS后,在想要查看的菜單項(xiàng)上按住shift+ctrl的同時(shí),單擊左鍵。如果配置正確,此時(shí)應(yīng)該會(huì)彈出一個(gè)對(duì)話框(下圖是在Insert Snippet上單擊的結(jié)果) 可以看到我們已經(jīng)能夠獲得Sinnpet菜單項(xiàng)的guid和cmdID了。到這邊為止,我們提出的難點(diǎn)一已經(jīng)解決。 二.根據(jù)Guid:Id得到默認(rèn)配置信息 得到了Guid和CmdID之后,我們需要在C:\Program Files\Microsoft Visual Studio 2010 SDK\VisualStudioIntegration\Common\Inc(具體的盤(pán)符取決于你安裝的VS SDK位置)中搜索所有的文件,我的做法是全選里面的文件后右擊選擇使用Notepad++打開(kāi)(一個(gè)編輯器)。 在所有打開(kāi)的文件中所有我們找到的Guid ”1496A755-94DE-11D0-8C3F-00C04FC2AAE2“ ,此時(shí)文件定位到了一個(gè)叫stdidcmd.h的文件中(只有這一個(gè)文件匹配),在這個(gè)文件中我們?cè)俅嗡阉鱟mdID的值323,發(fā)現(xiàn)了這么一個(gè)匹配項(xiàng)(如下圖所示)。果然就是我們要找的Snippet的菜單項(xiàng)。 有了ECMD_INSERTSNIPPET字符串以后,我們?cè)谒形募兴阉鬟@個(gè)字符串,結(jié)果如下: 注意其中的Line 2378:這個(gè)匹配項(xiàng)。我們進(jìn)入這個(gè)匹配文件去看看具體的內(nèi)容可以發(fā)現(xiàn),我們已經(jīng)找到了Snippet這個(gè)菜單項(xiàng)的parent是怎么設(shè)置的了。所以,第三個(gè)難點(diǎn)被解決。 接下來(lái)看看第二個(gè)難點(diǎn),其實(shí)這個(gè)難點(diǎn)我們?cè)诓檎?23這個(gè)值的時(shí)候就可以順便解決了。我的方法是找沒(méi)有出現(xiàn)在323那個(gè)匹配文件中的數(shù)字。比如,我們找到的323這個(gè)匹配文件中還有許許多多的Id已經(jīng)被定義好了,選定一個(gè)認(rèn)為沒(méi)有定義過(guò)的數(shù)字,然后用這個(gè)數(shù)字在此文件中搜索,如果沒(méi)有匹配的項(xiàng)那么這個(gè)值你就可以使用了。很簡(jiǎn)單,不是么:) 寫(xiě)到這里,我們已經(jīng)能夠成功的添加開(kāi)頭指定的菜單項(xiàng)了。過(guò)程看起來(lái)繁瑣,其實(shí)真正找起來(lái)也就很短的時(shí)間而已。這篇僅僅是我自己的經(jīng)驗(yàn),希望給你一些幫助!
總結(jié)
以上是生活随笔為你收集整理的visual studio 插件开发(5) -- 在任意位置添加自己的菜单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何联系上北京王世龙医生?
- 下一篇: 为AD用户启用或禁用OCS 2007 R