日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

visual studio 插件开发(5) -- 在任意位置添加自己的菜单

發(fā)布時(shí)間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 visual studio 插件开发(5) -- 在任意位置添加自己的菜单 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Vsx開發(fā)中常見的一個(gè)需求就是需要在某個(gè)特定的菜單中添加項(xiàng)目。比如我需要在代碼視圖中右擊時(shí),在Snippetgroup中加入自己的菜單項(xiàng)(如下圖所示)。 在vsx1中?我們已經(jīng)涉及了如何添加一個(gè)菜單。我覺得,在任何一處添加自己的菜單項(xiàng)難點(diǎn)有三:
  • 如何確定Button節(jié)點(diǎn)中的Guid (即下面第二幅圖中的{1496A755-94DE-11D0-8C3F-00C04FC2AAE2}是如何得到的)
  • 如何確保Button節(jié)點(diǎn)中的id屬性沒有被使用過 (即下面第二幅圖中的 value="9999" 這個(gè)9999為什么這么設(shè)置,我怎么知道這個(gè)ID在這個(gè)group中沒有被使用過呢?)
  • 如何找到Button節(jié)點(diǎn)的Parent (即下面第一幅圖中的Parent的guid和id怎么得到的)
  • ? ? ? ? 下面我就按照我添加這個(gè)菜單項(xiàng)時(shí)候的尋找步驟來添加這個(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è)文件來獲得各個(gè)菜單項(xiàng)的具體Guid:Id信息。步驟如下:
  • 將下面這段代碼保存為“任意文件名.reg“ 的注冊(cè)表文件嗎,然后運(yùn)行此注冊(cè)表文件。注意代碼中的"VisualStudio\10.0",如果你說用的是vs2008開發(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(具體的盤符取決于你安裝的VS SDK位置)中搜索所有的文件,我的做法是全選里面的文件后右擊選擇使用Notepad++打開(一個(gè)編輯器)。 在所有打開的文件中所有我們找到的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)被解決。 接下來看看第二個(gè)難點(diǎn),其實(shí)這個(gè)難點(diǎn)我們?cè)诓檎?23這個(gè)值的時(shí)候就可以順便解決了。我的方法是找沒有出現(xiàn)在323那個(gè)匹配文件中的數(shù)字。比如,我們找到的323這個(gè)匹配文件中還有許許多多的Id已經(jīng)被定義好了,選定一個(gè)認(rèn)為沒有定義過的數(shù)字,然后用這個(gè)數(shù)字在此文件中搜索,如果沒有匹配的項(xiàng)那么這個(gè)值你就可以使用了。很簡單,不是么:) 寫到這里,我們已經(jīng)能夠成功的添加開頭指定的菜單項(xiàng)了。過程看起來繁瑣,其實(shí)真正找起來也就很短的時(shí)間而已。這篇僅僅是我自己的經(jīng)驗(yàn),希望給你一些幫助!



    總結(jié)

    以上是生活随笔為你收集整理的visual studio 插件开发(5) -- 在任意位置添加自己的菜单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。