Visual Studio 中创建带有向导的项目模板

对于测试开发来说,建立新工程的次数要远远高于专职开发人员。由于每次建立一个测试工程都要例行公事的设置一大堆属性,例行公事的写一些同样的代码,非常耗时。因此打算通过建立项目模板来达到自己完成的目的。比如,在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项目模板-阿不
posted @ 2009-08-09 08:23  CoderZh  阅读(4996)  评论(4编辑  收藏  举报