深入IWizard介面(下)

來源:互聯網
上載者:User

從“項目模板參數化(下)“開始到現在,我們應用IWizard介面的都是WebClient這個子項目,實際情況是,我們怎麼對每個項目做定製,或者換個角度,我們這裡有三個模板中繼資料檔案,每個都可以定義和配置WizardExtension這個節點。

一,用LifeCycleTracerIWizard跟蹤多項目模板的多個子項目

重新設定3個模板中繼資料檔案的WizardExtension節點如下(先不配置ChainingLifeCycleTracerIWizard): 

<WizardExtension>
  <Assembly>Ethan.Woo.TemplateWizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e82b5e824e88ddd5</Assembly>
  <FullClassName>Ethan.Woo.TemplateWizard.LifeCycleTracerIWizard</FullClassName>
</WizardExtension>

 

這樣的結果能看出什麼規律嗎?有規律!請看我的分析:

1)藍色部分是Solution層級的跟蹤,即根項目中繼資料檔案所配置的WizardExtension的作用範圍。它的執行過程為RunStarted->ProjectFinishedGenerating->RunFinished三步,ShouldAddProjectItem沒執行,因為它只包括子項目,不直接包括源檔案。

2)綠色和黃色部分分別是WebClient和DataService這兩個項目模板執行個體化過程中建立的IWizard執行個體的跟蹤。跟蹤結果和上一篇完全一樣。

3)根項目中繼資料檔案配置指定的IWizard介面方法的執行,被子項目的IWizard的生命週期在執行序列上隔開了,而且RunStarted這個方法的第三個參數的枚舉值是我們上篇文章裡的WizardRunKind.AsMultiProject,表明當前執行的是多重專案的模板執行個體化。注意,實際上這裡配置的三處都用到了Ethan.Woo.TemplateWizard.LifeCycleTracerIWizard,但是執行個體化出來的是三個單獨的執行個體,它們都是IWizard的執行個體,從某種意義上來說,根項目中繼資料檔案所對應的的IWizard介面實現的生命週期期限,才是最長的。

這裡我給出我自己的一個總結的圖示,很直觀的表述了之前的結果:

二,將ChainingLifeCycleTracerIWizard也串聯過來

我們看看ChainingLifeCycleTracerIWizard串聯到3個模板中繼資料檔案的結果,很簡單了吧,不多做解釋了。

三,IWizard與Visual Studio的自動化。

注意到RunStarted方法的第一個參數是一個Object對象,其實對於Visual Studio 2010這個寄主而言,它實際上的物件類型是DTE2類型,利用這個模型,我們可以操作Visual Studio這個強大的IDE,完成複雜的邏輯操作,這裡不展開討論這個話題,僅提供兩個MSDN的相關連結:

Extending the Visual Studio Environment:http://msdn.microsoft.com/zh-cn/library/esk3eey8.aspx 
Automation and Extensibility Reference:http://msdn.microsoft.com/zh-cn/library/1xt0ezx9.aspx

好了,對IWizard這個介面的深入討論,就到這個地方,在這個基礎上,我們可以根據我們的需要,定製我們自己的實現,甚至可以定製出一整套使用的架構,專門用於建立我們的複雜項目模板。當然了,最複雜的項目模板實際上我們把它叫做Starter Kits(入門套件),它是普通項目模板的增強版,下文會繼續介紹。

 

摘自:http://www.ethan-woo.com/post/2011/05/03/Deep-into-IWizard-Second.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.