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