[Visual Studio]善用增益集(Add-ins)來協助開發
由於我的工作比較偏向產品開發,而產品開發有個很重要的過程叫做程式量化與客製化,這兩個階段最重要的就是開發效率、程式標準性與品質,平常光在這幾個點上就夠人焦頭爛額了,不過這部份不是今天的重點,下次再提。
想必對VS開發工具熟悉的人都知道VS有個功能叫做程式碼片段(Code Snippets),這些程式碼片段我們可以從『程式碼片段管理員』中看到:
而這些被加入的程式碼片段我們可以在我們的程式中便利的使用,如下例,我把我自己新建立的程式碼片段:QueryObj加入到我的程式中,如此可以很方便的將一些我們常用但不一定能實作成共用function的功能作成程式碼片段,就可以加快開發的時間了。
這是一個很好的功能,但目前看來只限於在Server端的程式碼(C#、VB...)才能使用,但我希望在Javascript中編輯JS也有相同效果,上網查了一下,好像本身並沒有支援,後來想到VS有所謂的增益集(Add-ins),透過這個增益集能在VS中加入Plug-in的工具,看起來好像很好玩,像下圖的DBRegister,就是我加到工具列的一個自訂工具:
不過因為我沒有寫過增益集,我上MSDN查了一下範例,找到這篇:HOW TO:建立增益集,雖然沒有很清楚,但大致上還可以,因為實際上就是透過VS本身的擴充性Visual Studio增益集專案來進行,一步接一步就可以完成了。
步驟簡化如下(實際上就是這幾個步驟而已):
只有一個步驟比較特別,在選擇增益集選項,選擇在工具列新增我的增益集,並且在主應用程式(本例中為Visual Studio)啟動時同步載入增益集。
按下完成後專案已經建立好了,接下來作個簡單設定,開啟『增益集管理員』,將我們剛剛加入的增益集勾選,並將啟動的部分勾選。
依理論來看,當我建置完這個增益集專案,再重新啟動VS,在工具列應該就會出現我新增的增益集了,但啟動後發現我的增益集還是沒出現,本來以為是自己哪個步驟弄錯了,看了幾個網頁,別人講的都很簡單,沒道理我自己弄就弄不出來吧,弄了半小時,最後決定從程式著手吧,所以我開始trace它的程式。
先在Connect.cs的OnConnection中下個中斷點:
逐步偵錯到44行,看了一下程式中透過資源檔去取得多國語言的內容,組出來的resourceName是zhTools,
但取到的是null,而這個toolMenuName代表的就是VS Toolbar上那些主選單的外顯名稱,今天是null,所以當我要加掛我的增益集時,因為找不到null這個節點,所以掛不上去,很合理,所以我去resx檔中加了一筆資料,
新增的資料如下圖所示:
將resx檔存檔後再建置一次專案,然後再次開啟VS,我心愛的MyAddin1終於出現了:
既然增益集出現了,那我要讓它做什麼事情呢?我把我想做的事情寫在Exec這個function中,如下面的範例所示,我去呼叫一個Form1的Winform畫面,建置後再來看看:
OH,真的只能用正點來形容,這個Form真的被執行了,玩到這邊,開始把一些常用的工具加進來,好像真的還蠻方便的。
後續想法就是要依此概念透過增益集去呼叫一個程式碼片段工具,在工具上做些操作後回寫回VS的file中,這樣應該就可以不限於cs或者js了。
目前尚未得知這樣的概念可不可行,或許到時候不是光用增益集可以解決,還要用到VSPackage的SDK也不一定,有新的進展在跟大家分享吧。
參考資料:
MSDN How to 新增增益集:
http://msdn.microsoft.com/zh-tw/library/80493a3w(VS.80).aspx
Tutorial : Creating Visual Studio Add-Ins:
http://www.c-sharpcorner.com/UploadFile/mgold/AddIns11292005015631AM/AddIns.aspx
A Visual Studio Add-In That Converts C# Code To Visual Basic
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |