本文主要介绍VS2012中自定义项目模板的制作过程,自定义项模板的制作过程类似。
一、准备用于做项目模板的工程。
项目模板是用于自动化生成某一类文件或工程的模板,所以用于用作项目模板的项目必须要求规范并且只包含大部分共用的文件及内容。所以当你要将某一个工程导出为项目模板时,你需要去整理一些项目文件及内容,使其尽量规范。
二、导出项目为项目模板。
在VS2012的菜单栏->文件->导出模板 会弹出如下对话框:
点击下一步后,在出现的页面中填入相应信息,然后点完成即可。
三、修改项目文件并替换参数。
找到项目模板文件,默认是一个Zip文件。解压。
在文件夹中找到文件.vstemplate, 此文件就是项目模板文件。
.vstemplate文件的解释见:http://msdn.microsoft.com/zh-cn/library/xsxc3ete(v=vs.80).aspx
替换参数,vs模板默认的参数见: http://msdn.microsoft.com/zh-cn/library/vstudio/eehb4faa.aspx
注:参数替换时,当替换了文件的名字时,工程文件中相应的文件也要做相应的名字替换。当VS提供的参数不能满足需要时可通过实现IWizard接口,并在方法RunStarted中打开自定义窗口来收集信息赋到自定义参数上。具体参见:http://msdn.microsoft.com/zh-cn/library/vstudio/ms185301.aspx
四、打包项目模板。
模板可以打包成.vsi文件进行双击安装。需要将刚才解压的模板文件压缩成zip文件,然后在zip所在目录新建一个.vscontent的xml文件,文件内容如下:
<?xml version="1.0" encoding="utf-8" ?> <VSContent xmlns="http://schemas.microsoft.com/developer/vscontent/2005"> <Content> <FileName>SampleProjectTemplate.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 C#"/> <Attribute name="ProjectSubType" value="Web"/> <Attribute name="TemplateType" value="Project"/> </Attributes> </Content> </VSContent>
然后将zip文件及.vscontent文件打包成zip文件。最后更改此zip文件的后缀名为.vsi。此时模板就打包好了。
详细参见:http://msdn.microsoft.com/zh-cn/library/ms185314(v=vs.80).aspx
最后列下注意事项:
1. 项目模板所在的位置
1)<VisualStudioInstallDir>\Common7\IDE\ProjectTemplates\Language\Locale\
2)打开工具->选项,在项目和解决方案页可以查看路径,如下图所示:
2. 如果修改了.vstemplate中的文件名,那么也必须修改.csproj中的相应文件的文件名,不然将报错。
3. 用Gacutil在vs的命令行进行DLL在全局程序缓存中注册。
4. 打包,如果有实现Iwizard接口的类,那么无法用VSI,VSIX打包 DLL,只能用MSI。另外可以写一个批处理来简化安装过程,如下例所示。
print "starting install template...." Call "%VS110COMNTOOLS%VsDevCmd.bat" gacutil /i CustomWizard.dll start ModuleTemplate.vsi
此批处理将自动注册DLL到GAC中,并启动.vsi安装程序。