Transcript 軟體工程之北冥神功
軟體工程之北冥神功 彭靖灝 [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