軟體工程之北冥神功

Report
軟體工程之北冥神功
彭靖灝
[email protected]
http://www.plurk.com/michaelchpeng
michaelchpeng.spaces.live.com
斯歌資訊
核心精神
•經驗
•訓練
•習慣
•紀律
•工具
議程
•
•
•
•
從找到作業模式開始
Visual Studio 2010的擴充能力
建立一個VS的增益集
善用VS的物件架構
從找到作業模式開始
情境
• 相信某件事,並且實踐
• 開始發現正以人工方式重複進行同樣的工
作
• 於是思考有沒有可能自動化
• 要土法鍊鋼不是不行,但如果有現成的資
源,為什麼要從頭來過
事情是這樣的…
• 我遵循三層式架構
• 每一次,我的解決方案中都會有四個專案
– MySolution.UI
– MySolution.Business
– MySolution.Data
– MySolution.Test
於是我有了第一個工具…
然後我考慮用範本…
不過…
• 每一次都要這樣搞?
• 有沒有更簡單的方式好維護?
• 如果這是Visual Studio可以做的,難道沒有
現成的資源可用?
原來…
•
•
•
•
Visual Studio提供Object Model
Visual Studio也提供了Macro
在Visual Studio中可以產生範本
還能夠更進一步整合在Visual Studio中
這一回…
K2 Designer for Visual Studio
Visual Studio的擴充能力
VS 2005/2008的擴充能力
•
•
•
•
•
•
建立增益集
建立VSPackage
提供作業環境
註冊啟動畫面圖標
建立作業範本
提供巨集環境
Visual Studio 2010的擴充能力
•
•
•
•
管理擴充套件和下載
延伸VS 10編輯器
自訂啟動頁面
透過MEF建立”drop in“元件
Visual Studio增益集
• 內嵌在VS作業環境中
• 多半在簡化作業或進行重複性工作
• 通常是間接影響設計結果(相較於工具箱、
屬性視窗…)
• 通常和VS IDE互動密切
Visual Studio 巨集
• 用以進行開發環境內的重複性動作
• 透過錄製建立
• 透過程式碼以Object Automation作業
啟動圖標
Extension Manager
Visual Studio Gallery
• http://visualstudiogallery.msdn.microsoft.com/
延伸VS 2010編輯器
Custom margin
Inline WPF
control
adornment
Glyphs to track
methods in the
source file
Lightbox
adornment for
target method(s)
Viewport tracking
Runtime Intelligence Integration(PreEmptive)
建立VS增益集
增益集的成份
• .AddIn:提供相關描述的XML
• Connect.VB/CS:處理增益集事件的程式
碼
– 實作了IDTExtensiblilty2和
IDTCommandTarget介面
• 作業內容
EnvDTE/EnvDTE80 命名空間
• Environment Development Tools
Extensibility
• 提供從2005開始的開發環境物件模型
• DTE物件為最基礎的開發環境物件
• DTE2為目前通用的開發環境物件
• VS 2010為EnvDTE10
IDTExtensibility2
方法
說明
OnConnection
在增益集載入時叫用
OnStartupComplete
在Visual Studio 載入動作完成時叫用
OnAddInsUpdate
當增益集從Visual Studio中載入或卸
除時叫用
OnBeginShutdown
當Visual Studio關閉時叫用
OnDisconnection
當增益集卸除時叫用
增益集事件引發順序(載入)
增益集事件引發順序(卸除)
IDTCommandTarget.Exec
• 被點選命令執行時引發
• 處理作業命令的進入點
• 作業參數
– commandName:要執行的命令
– executeOption:提供命令執行的選項細節
– varIn:呼叫者傳入的參數
– varOut:命令常式要傳回呼叫者的參數
– Handled:通知呼叫者命令是否完成作業
作業範本(VSTemplate)
•
•
•
•
透過既有專案及項目匯出產生
自行定義並登錄擴充
將作業型式標準化
透過.zip包裝成一個檔案
增益集專案/建立範本
善用VS物件架構
常見應用
•
•
•
•
•
管理解決方案、專案、專案項目
管理工具列、工具箱、使用者介面(Window)
管理作業命令
處理編輯器
管理編輯器、下載內容
操作解決方案/專案…
Visual Studio Shell
• 提供不含任何語言及微軟正式銷售產品開發功
能的VS作業環境
• Integrated Mode
– 用以執行你所建立的增益集、建立你的專案類型
– 適用在使用者並未安裝有VS,卻要使用你的工具
的情況
• Isolated Mode
– 可以和VS共存的環境
– 用在只執行你的工具的情況,獨立執行
總結
• 先從能自動化既有重複作業開始
– 善用VS object automation
• 再考慮讓pattern/guidence能更容易被使用
– 結合VS 作業環境
• 設法讓動作能整合在VS中
– 建立VS Package(Add-in, VSIP)
• 利用MEF建立動態擴充能力
相關資源
• Visual Studio Extensibility
– http://msdn.microsoft.com/VSX
• Visual Studio Extensibility學習中心
– http://msdn.microsoft.com/en-us/vsx/bb980955.aspx
• VSX Code Gallery
– http://code.msdn.microsoft.com/vsx/
• MEF(Managed Extensibility Framework)
– http://www.codeplex.com/MEF
• VSIP(VS Integrated Partner)
– http://msdn.microsoft.com/en-us/vsx/dd637761.aspx
參考書籍
• Working with Microsoft Visual Studio 2005
– Microsoft Press

similar documents