对于测试开发来说,建立新工程的次数要远远高于专职开发人员。由于每次建立一个测试工程都要例行公事的设置一大堆属性,例行公事的写一些同样的代码,非常耗时。因此打算通过建立项目模板来达到自己完成的目的。比如,在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文件如下:
这样,第一步要实现的项目模板就非常轻松的实现了。接下来是要实现一个设置向导。要实现一个设置向导,需要做的事情是:
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的引用:
梳理了一下,我们需要的功能主要有两个:
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 >
< 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 >
< 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项目模板-阿不
本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2009/08/09/1542120.html,如需转载请自行联系原作者