390 likes | 549 Views
軟體工程之北冥神功. 彭靖 灝 michaelp@k2.com http :// www.plurk.com/michaelchpeng michaelchpeng.spaces.live.com 斯歌資 訊. 核心精神. 經驗 訓練 習慣 紀 律 工具. 議程. 從找到作業模式開始 Visual Studio 2010 的擴充能力 建立一個 VS 的增益集 善用 VS 的物件架構. 從找到作業模式開始. 情境. 相信某件事,並且實踐 開始發現正以人工方式重複進行同樣的工作 於是思考有沒有可能自動化
E N D
軟體工程之北冥神功 彭靖灝 michaelp@k2.com 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中
VS 2005/2008的擴充能力 • 建立增益集 • 建立VSPackage • 提供作業環境 • 註冊啟動畫面圖標 • 建立作業範本 • 提供巨集環境
Visual Studio 2010的擴充能力 • 管理擴充套件和下載 • 延伸VS 10編輯器 • 自訂啟動頁面 • 透過MEF建立”drop in“元件
Visual Studio增益集 • 內嵌在VS作業環境中 • 多半在簡化作業或進行重複性工作 • 通常是間接影響設計結果(相較於工具箱、屬性視窗…) • 通常和VS IDE互動密切
Visual Studio 巨集 • 用以進行開發環境內的重複性動作 • 透過錄製建立 • 透過程式碼以Object Automation作業
Visual Studio Gallery • http://visualstudiogallery.msdn.microsoft.com/
延伸VS 2010編輯器 Custom margin Glyphs to track methods in the source file Inline WPF control adornment Lightbox adornment for target method(s) Viewport tracking
增益集的成份 • .AddIn:提供相關描述的XML • Connect.VB/CS:處理增益集事件的程式碼 • 實作了IDTExtensiblilty2和IDTCommandTarget介面 • 作業內容
EnvDTE/EnvDTE80 命名空間 • Environment Development Tools Extensibility • 提供從2005開始的開發環境物件模型 • DTE物件為最基礎的開發環境物件 • DTE2為目前通用的開發環境物件 • VS 2010為EnvDTE10
IDTCommandTarget.Exec • 被點選命令執行時引發 • 處理作業命令的進入點 • 作業參數 • commandName:要執行的命令 • executeOption:提供命令執行的選項細節 • varIn:呼叫者傳入的參數 • varOut:命令常式要傳回呼叫者的參數 • Handled:通知呼叫者命令是否完成作業
作業範本(VSTemplate) • 透過既有專案及項目匯出產生 • 自行定義並登錄擴充 • 將作業型式標準化 • 透過.zip包裝成一個檔案
增益集專案/建立範本 DEMO
常見應用 • 管理解決方案、專案、專案項目 • 管理工具列、工具箱、使用者介面(Window) • 管理作業命令 • 處理編輯器 • 管理編輯器、下載內容
操作解決方案/專案… DEMO
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