對於測試開發來說,建立新工程的次數要遠遠高於專職開發人員。由於每次建立一個測試工程都要例行公事的設定一大堆屬性,例行公事的寫一些同樣的代碼,非常耗時。因此打算通過建立項目模板來達到自己完成的目的。比如,在Visual Stuido中建立工程的時候,可以直接選擇我們建立好的“GTest Project”,然後會彈出一個嚮導對話方塊,再設定一些屬性,然後,一個可以直接使用的GTest工程就建立好了。
梳理了一下,我們需要的功能主要有兩個:
1.項目模板(project template)
2.設定嚮導(project wizard)
Vistual Studio中有一個非常方便的功能,就是可以直接將某個工程匯出為模板(菜單“File-Export Template”),匯出的檔案是一個zip壓縮檔,放在My Documents\Visual Studio 2008\Templates\ProjectTemplates\中即可。如果需要設定成安裝程式,只需要將其解壓,然後添加一個.vscontent檔案,然後再壓縮,然後將壓縮後的檔案尾碼改為.vsi。
.vscontent檔案如下:<VSContent xmlns="http://schemas.microsoft.com/developer/vscontent/2005">
<Content>
<FileName>MyProjectTemplate.zip</FileName>
<DisplayName>Sample Project Template</DisplayName>
<Description>A project template created for this example.</Description>
<FileContentType>VSTemplate</FileContentType>
<ContentVersion>1.0</ContentVersion>
<Attributes>
<Attribute name="ProjectType" value="Visual Basic"/>
<Attribute name="ProjectSubType" value=""/>
<Attribute name="TemplateType" value="Project"/>
</Attributes>
</Content>
</VSContent>
這樣,第一步要實現的項目模板就非常輕鬆的實現了。接下來是要實現一個設定嚮導。要實現一個設定嚮導,需要做的事情是:
1.建立一個Class Lirary的嚮導工程。
2.添加.NET引用:“Microsoft.VisualStudio.TemplateWizardInterface”和“EnvDTE”
3.建立一個Windows Form(設定嚮導),添加一些自己想要的控制項。並保證將設定的屬效能夠通過外部擷取。
4.建立一個類,實現IWizard介面。主要實現RunStarted方法。在RunStarted方法中,將前面的Windows Form建立出來,然後擷取設定的屬性,添加到replacementsDictionary中。比如:replacementsDictionary.Add("$MyName$", myName);
5.建立一個工程,作為模板。在該工程裡,可以通過使用"$MyName$"達到替換之前設定的myName屬性。
6.將嚮導工程編譯出來的dll安裝到全域的Assembly緩衝中。一般通過:gacutil -i xxx.dll來做。
7.匯出之前建立的模板工程,解壓zip檔案,開啟.vstemplate檔案,添加對嚮導DLL的引用:<WizardExtension>
<Assembly>MyTemplateWizardLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=345b65148ade810f, processorArchitecture=MSIL</Assembly>
<FullClassName>MyTemplateWizardLib.MyWizardLib</FullClassName>
</WizardExtension>
8.再壓縮,然後將zip檔案放置到My Documents\Visual Studio 2008\Templates\ProjectTemplates\即可。
這樣,一個帶有設定嚮導的項目模板就建立好了。比如,我可以在嚮導中讓使用者選擇需要添加的lib引用,或是dll引用,然後,我自動將其選擇的引用設定到建立的工程中,如果是gtest工程,我將在模板中自動寫好其中的main函數中例行公事的幾句話。總之,幾乎可以定製所有我需要預先定製的內容,從而提高寫代碼的效率。
我們上面記錄的方法比較籠統,如果之前沒有接觸的話可能會比較朦朧。下面的地址中提供了一個視頻教學,可能會更加容易理解:
http://msdn.microsoft.com/en-us/vstudio/bb669054.aspx
更多的相關資料:
How to: Use Wizards with Project Templates
How to: Package Community Components to Use the Visual Studio Content Installer
Visual Studio Templates
Create Reusable Project And Item Templates For Your Development Team
製作Visual Studio項目模板-阿不